09/05/22 06:04:24
>>3
さすがProlog、元スレの解答が豚を食ったPythonに見えてくるw
しかしこの解答、宣言的ではあるがやってはいけないことをしている。
短いコードにしようとした結果、素人だと誰も理解できない。
Prologのもっとも豊かな特徴は、この言語を知らない人が読んでも、
書いてあることが何となく分かるということ。そういう意味でこのコードは
致命的だ。modulus38/3のところは、modulus38/2とmodulus38_1/2として、
modulus38([X],X).
modulus38(L,X) :- modulus38_1(L,L2),modulus38(L2,X).
modulus38_1([_],[]).
modulus38_1([A,B|R1],[C|R2]) :- C is (A+B) mod 10,modulus38_1([B|R1],R2).
もちろん、トップレベルの中のmodulus38/3は
modulus38 :- ... , modulus38(L,X), ....
となる。