diff options
| author | Adam Russell <russella3@wit.edu> | 2021-05-02 17:08:08 -0400 |
|---|---|---|
| committer | Adam Russell <russella3@wit.edu> | 2021-05-02 17:08:08 -0400 |
| commit | 8fe383178379214d5856caa1eb7517bea9f0cdfd (patch) | |
| tree | 4b546bce8e4c1e3b5639804f76ce7c93e6d3696b | |
| parent | aac29da03bf5b9a5aef2d7a384fd5daa209bb92b (diff) | |
| download | perlweeklychallenge-club-8fe383178379214d5856caa1eb7517bea9f0cdfd.tar.gz perlweeklychallenge-club-8fe383178379214d5856caa1eb7517bea9f0cdfd.tar.bz2 perlweeklychallenge-club-8fe383178379214d5856caa1eb7517bea9f0cdfd.zip | |
Solution for Part 2 in Prolog
| -rw-r--r-- | challenge-110/adam-russell/prolog/ch-2.p | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/challenge-110/adam-russell/prolog/ch-2.p b/challenge-110/adam-russell/prolog/ch-2.p index e69de29bb2..7b8e9ada0a 100644 --- a/challenge-110/adam-russell/prolog/ch-2.p +++ b/challenge-110/adam-russell/prolog/ch-2.p @@ -0,0 +1,24 @@ +/* + Write a script to transpose the contents of a given file. +*/ +:-initialization(main). + +transpose(Columns, Transposed):- + transpose(Columns, _, Transposed). +transpose([], Transposed, Transposed). +transpose([H|T], TransposedAccum, Transposed):- + transpose_row(H, TransposedAccum, TransposedAccumNew), + reverse(TransposedAccumNew, TransposedAccumNewReversed), + transpose(T, TransposedAccumNewReversed, Transposed). + +transpose_row(Row, TransposedAccum, RowTranspose):- + transpose_row(Row, TransposedAccum, [], RowTranspose). +transpose_row([], [], RowTranspose, RowTranspose). +transpose_row([H|T], [HAccum|TAccum], RowTransposeAccum, RowTranspose):- + append(HAccum, H, HAccum0), + flatten(HAccum0, HAccum1), + transpose_row(T, TAccum, [HAccum1 | RowTransposeAccum], RowTranspose). + +main:- + transpose([[1,2,3],[4,5,6]], Transposed), + write(Transposed), nl.
\ No newline at end of file |
