aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-05-26 05:36:34 +0100
committerGitHub <noreply@github.com>2025-05-26 05:36:34 +0100
commit9fd122adaccd2435cbd28dc82fe7e574913f433b (patch)
tree64831d18227e564abdcd490e64a3a4f640d13c1d
parent298c4673665b36af4bdd991e3952212ab8959313 (diff)
parent31777333c679cbf95de80e890d9675858249fccc (diff)
downloadperlweeklychallenge-club-9fd122adaccd2435cbd28dc82fe7e574913f433b.tar.gz
perlweeklychallenge-club-9fd122adaccd2435cbd28dc82fe7e574913f433b.tar.bz2
perlweeklychallenge-club-9fd122adaccd2435cbd28dc82fe7e574913f433b.zip
Merge pull request #12081 from adamcrussell/challenge-322
added Prolog solutions and blog link
-rw-r--r--challenge-322/adam-russell/blog1.txt1
-rw-r--r--challenge-322/adam-russell/prolog/ch-1.p33
-rw-r--r--challenge-322/adam-russell/prolog/ch-2.p10
3 files changed, 44 insertions, 0 deletions
diff --git a/challenge-322/adam-russell/blog1.txt b/challenge-322/adam-russell/blog1.txt
new file mode 100644
index 0000000000..d08d510660
--- /dev/null
+++ b/challenge-322/adam-russell/blog1.txt
@@ -0,0 +1 @@
+http://rabbitfarm.com/cgi-bin/blosxom/prolog/2025/05/26
diff --git a/challenge-322/adam-russell/prolog/ch-1.p b/challenge-322/adam-russell/prolog/ch-1.p
new file mode 100644
index 0000000000..6fb87491fd
--- /dev/null
+++ b/challenge-322/adam-russell/prolog/ch-1.p
@@ -0,0 +1,33 @@
+
+
+ format_(Format), [Format] --> [Format].
+ format_(F, Format), [Format] --> [F].
+
+
+ process(String, I, J) --> {String = [Code | Codes],
+ Code == 45},
+ process(Codes, I, J).
+ process(String, I, J) --> format_(F, Format),
+ {String = [Code | Codes],
+ \+ Code == 45,
+ succ(J, I),
+ char_code(C, Code),
+ length(Codes, L),
+ ((L > 0, Format = ['-', C|F]);
+ (Format = [C|F]))},
+ process(Codes, I, 0).
+ process(String, I, J) --> format_(F, Format),
+ {String = [Code | Codes],
+ \+ Code == 45,
+ succ(J, J1),
+ char_code(C, Code),
+ Format = [C|F]},
+ process(Codes, I, J1).
+ process([], _, _) --> [].
+
+
+ string_format(String, I, FormattedString):-
+ reverse(String, R),
+ phrase(process(R, I, 0), [[]], [F]), !,
+ atom_chars(FormattedString, F).
+
diff --git a/challenge-322/adam-russell/prolog/ch-2.p b/challenge-322/adam-russell/prolog/ch-2.p
new file mode 100644
index 0000000000..a9c8377265
--- /dev/null
+++ b/challenge-322/adam-russell/prolog/ch-2.p
@@ -0,0 +1,10 @@
+
+
+ rank(SortedList, X, Rank):-
+ nth(Rank, SortedList, X).
+
+
+ rank_list(L, Ranks):-
+ sort(L, Sorted),
+ maplist(rank(Sorted), L, Ranks).
+