Comment detail

漢数字で九九の表 (Nested Flatten)
不細工なことになりました。 not(_)のあたり何とかならんかな.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
漢数字(〇,[]).
漢数字(一,[_]).
漢数字(二,[_,_]).
漢数字(三,[_,_,_]).
漢数字(四,[_,_,_,_]).
漢数字(五,[_,_,_,_,_]).
漢数字(六,[_,_,_,_,_,_]).
漢数字(七,[_,_,_,_,_,_,_]).
漢数字(八,[_,_,_,_,_,_,_,_]).
漢数字(九,[_,_,_,_,_,_,_,_,_]).
九九 :-
   漢数字(A,L1),
   漢数字(B,L2),
   not(A=〇),
   not(B=〇),
   九九(L1,L2,[],[],X,Y),
   九九解表示(L2,X,Y),
   fail.
九九.

九九([],_,[],Y1,' ',Y) :- 漢数字(Y,Y1),!.
九九([],_,X1,Y1,X,Y) :- 漢数字(X,X1),漢数字(Y,Y1),!.
九九(L1,L2,L3,[_,_,_,_,_,_,_,_,_,_|R],X,Y) :-
    九九(L1,L2,[_|L3],R,X,Y),!.
九九([_|R1],L2,L3,L4,X,Y) :-
    append(L2,L4,L5),
    九九(R1,L2,L3,L5,X,Y).

九九解表示([_,_,_,_,_,_,_,_,_],X,Y) :-
   format('%t%t\n',[X,Y]),!.
九九解表示(_,X,Y) :-
   format('%t%t ',[X,Y]).
リストよりf(f(0))の表現の方が スッキリ書けるかな。

言語指定を誤り、PrologでなくOtherに アラビア数字を削った訂正版を載せました。 仕様を読み違えてました。

Index

Feed

Other

Link

Pathtraq

loading...