diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-01-31 23:56:00 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-01-31 23:56:00 +0000 |
| commit | bc9fa766985b89fb77c109bc8ade15c4b4a5319a (patch) | |
| tree | 33aff33447a3174710536d8498220823c09e75ad /challenge-097 | |
| parent | 9bc5b6863b0bbbfce07cb174b37a767651b3d1f4 (diff) | |
| parent | 1a4c1b829cfb002c4df8dc8268898a010b7c4643 (diff) | |
| download | perlweeklychallenge-club-bc9fa766985b89fb77c109bc8ade15c4b4a5319a.tar.gz perlweeklychallenge-club-bc9fa766985b89fb77c109bc8ade15c4b4a5319a.tar.bz2 perlweeklychallenge-club-bc9fa766985b89fb77c109bc8ade15c4b4a5319a.zip | |
Merge pull request #3434 from adamcrussell/challenge-097
Prolog solutions for challenge-097.
Diffstat (limited to 'challenge-097')
| -rw-r--r-- | challenge-097/adam-russell/blog1.txt | 1 | ||||
| -rw-r--r-- | challenge-097/adam-russell/prolog/ch-1.p | 18 | ||||
| -rw-r--r-- | challenge-097/adam-russell/prolog/ch-2.p | 33 |
3 files changed, 52 insertions, 0 deletions
diff --git a/challenge-097/adam-russell/blog1.txt b/challenge-097/adam-russell/blog1.txt new file mode 100644 index 0000000000..042196e137 --- /dev/null +++ b/challenge-097/adam-russell/blog1.txt @@ -0,0 +1 @@ +http://www.rabbitfarm.com/cgi-bin/blosxom/prolog/2021/01/31 diff --git a/challenge-097/adam-russell/prolog/ch-1.p b/challenge-097/adam-russell/prolog/ch-1.p new file mode 100644 index 0000000000..ec0b531db2 --- /dev/null +++ b/challenge-097/adam-russell/prolog/ch-1.p @@ -0,0 +1,18 @@ +:-initialization(main). + +caesar([], [], _). +caesar([H|T], [C|Cypher], N):- + C is H - N, + C >= 65, + caesar(T, Cypher, N). +caesar([H|T], [C|Cypher], N):- + C0 is H - N, + C0 < 65, + C is C0 + 26, + caesar(T, Cypher, N). + +main:- + caesar("ABCDEFGHIJKLMNOPQRSTUVWXYZ", C, 3), + atom_codes(CypherText, C), + write(CypherText), nl, + halt.
\ No newline at end of file diff --git a/challenge-097/adam-russell/prolog/ch-2.p b/challenge-097/adam-russell/prolog/ch-2.p new file mode 100644 index 0000000000..6e0fb1c224 --- /dev/null +++ b/challenge-097/adam-russell/prolog/ch-2.p @@ -0,0 +1,33 @@ +:-initialization(main). + +substrings(BinaryString, N, SubStrings):- + substrings(BinaryString, N, [], SubStrings). +substrings([], _, SubStrings, SubStrings). +substrings(BinaryString, N, SubStringAccum, SubStrings):- + length(L, N), + append(L, X, BinaryString), + substrings(X, N, [L|SubStringAccum], SubStrings). + +count_flips(B, [H|T], Flips):- + count_flips(B, [H|T], 0, Flips). +count_flips(_, [], Flips, Flips). +count_flips(B, [H|T], FlipsSum, Flips):- + number_codes(B0, B), + number_codes(H0, H), + X is xor(B0, H0), + Flips0 is X + FlipsSum, + count_flips(B, T, Flips0, Flips). + +min_flips(SubStrings, MinFlips):- + min_flips(SubStrings, [], Flips), + sort(Flips,[MinFlips|_]). +min_flips([_], Flips, Flips). +min_flips([H|T], FlipsAccum, Flips):- + count_flips(H, T, Flips0), + min_flips(T, [Flips0|FlipsAccum], Flips). + +main:- + substrings("101100101", 3, SubStrings), + min_flips(SubStrings, Flips), + write(Flips),nl, + halt. |
