diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-11-16 21:52:00 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-16 21:52:00 +0000 |
| commit | 8b4586760efa4ae9b92ca6bf7b2ab258b2000906 (patch) | |
| tree | aa38013d2ac6674ca3685ff82078a539e9648e4f | |
| parent | 0488d77bdd7b93cac777b461eb0d6f502dde8b7c (diff) | |
| parent | 980db5b2483356b44b517443110c9608beb64130 (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rw-r--r-- | challenge-190/adam-russell/blog1.txt | 1 | ||||
| -rw-r--r-- | challenge-190/adam-russell/prolog/ch-2.p | 39 |
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 |
