From 8fe383178379214d5856caa1eb7517bea9f0cdfd Mon Sep 17 00:00:00 2001 From: Adam Russell Date: Sun, 2 May 2021 17:08:08 -0400 Subject: Solution for Part 2 in Prolog --- challenge-110/adam-russell/prolog/ch-2.p | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) 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 -- cgit