aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-11-16 21:52:00 +0000
committerGitHub <noreply@github.com>2022-11-16 21:52:00 +0000
commit8b4586760efa4ae9b92ca6bf7b2ab258b2000906 (patch)
treeaa38013d2ac6674ca3685ff82078a539e9648e4f
parent0488d77bdd7b93cac777b461eb0d6f502dde8b7c (diff)
parent980db5b2483356b44b517443110c9608beb64130 (diff)
downloadperlweeklychallenge-club-8b4586760efa4ae9b92ca6bf7b2ab258b2000906.tar.gz
perlweeklychallenge-club-8b4586760efa4ae9b92ca6bf7b2ab258b2000906.tar.bz2
perlweeklychallenge-club-8b4586760efa4ae9b92ca6bf7b2ab258b2000906.zip
Merge pull request #7095 from adamcrussell/challenge-190
updated Prolog solution for 190.2
-rw-r--r--challenge-190/adam-russell/blog.txt1
-rw-r--r--challenge-190/adam-russell/blog1.txt1
-rw-r--r--challenge-190/adam-russell/prolog/ch-2.p39
3 files changed, 32 insertions, 9 deletions
diff --git a/challenge-190/adam-russell/blog.txt b/challenge-190/adam-russell/blog.txt
index e69de29bb2..c17ccf2493 100644
--- a/challenge-190/adam-russell/blog.txt
+++ b/challenge-190/adam-russell/blog.txt
@@ -0,0 +1 @@
+http://www.rabbitfarm.com/cgi-bin/blosxom/perl/2022/11/13 \ No newline at end of file
diff --git a/challenge-190/adam-russell/blog1.txt b/challenge-190/adam-russell/blog1.txt
index e69de29bb2..5d701ee6ea 100644
--- a/challenge-190/adam-russell/blog1.txt
+++ b/challenge-190/adam-russell/blog1.txt
@@ -0,0 +1 @@
+http://www.rabbitfarm.com/cgi-bin/blosxom/prolog/2022/11/13 \ No newline at end of file
diff --git a/challenge-190/adam-russell/prolog/ch-2.p b/challenge-190/adam-russell/prolog/ch-2.p
index b9c846fb26..fd3e1ec5f4 100644
--- a/challenge-190/adam-russell/prolog/ch-2.p
+++ b/challenge-190/adam-russell/prolog/ch-2.p
@@ -1,3 +1,5 @@
+digits([1, 2]).
+
alphabet(1, 'A').
alphabet(2, 'B').
alphabet(3, 'C').
@@ -25,16 +27,35 @@ alphabet(24, 'X').
alphabet(25, 'Y').
alphabet(26, 'Z').
-digits([1, 2]).
-
-sum(Digits):-
- sum([], Digits, 0).
+list_chunks(_, [], []).
+list_chunks(List, [H|T], [PrefixNumber|RestNumbers]):-
+ length(Prefix, H),
+ prefix(Prefix, List),
+ append(Prefix, Rest, List),
+ number_codes(PrefixNumber, Prefix),
+ list_chunks(Rest, T, RestNumbers).
-sum(Digits, Digits, _LENGTH_).
+sum(Digits, Length):-
+ sum([], Digits, Length, 0).
-sum(Partial, Digits, Sum):-
- Sum < _LENGTH_,
+sum(Digits, Digits, _, _).
+sum(Partial, Digits, Length, Sum):-
+ Sum < Length,
digits(L),
- member(X,L),
+ member(X, L),
S is Sum + X,
- sum([X | Partial], Digits, S). \ No newline at end of file
+ sum([X | Partial], Digits, Length, S).
+
+decode(Encoded, Decoded):-
+ number_codes(Encoded, EncodedCodes),
+ length(EncodedCodes, EncodedLength),
+ findall(Digits,(
+ sum(Digits, EncodedLength),
+ sum_list(Digits, EncodedLength)), DigitList),
+ findall(Chunks, (
+ member(ChunkSizes, DigitList),
+ list_chunks(EncodedCodes, ChunkSizes, Chunks)), ChunkList),
+ findall(DecodedChunk,(
+ member(C, ChunkList),
+ maplist(alphabet, C, DecodedChunkChars),
+ atom_chars(DecodedChunk, DecodedChunkChars)), Decoded). \ No newline at end of file