エンジニアのソフトウェア的愛情

または私は如何にして心配するのを止めてプログラムを・愛する・ようになったか

2016-02-01から1ヶ月間の記事一覧

Fibonacci numbers with Prolog

% fib.pro :- initialization(main). add(X, Y, Z) :- Z is (X + Y). fib(N, [1,1|Fib3]) :- append(Fib1, [_], Fib2), append(Fib2, [_], Fib3), length([1,1|Fib3], N), maplist(add, [1,1|Fib1], [1|Fib2], Fib3), !. puts(N) :- format("~d~n", [N]). ma…

Prolog の append がとてもユーティリティ

リスト操作は append で、だいたいどうにかなるこということがわかりました。 % 先頭の要素を取得する head(List, Head) :- append([Head], _, List). % 末尾の要素を取得する(標準装備でした) % last(List, Last) :- append(_, [Last], List). % 先頭の要…

配列の回転

時計回りに90度 行を反転して転置(あるいは、転置して列を反転) 時計回りに180度 行を反転して列を反転(あるいは、列を反転して行を反転) 時計回りに270度 転置して行を反転(あるいは、列を反転して転置) [1] pry(main)> a = [[1, 2, 3], [4, 5, 6], […