Comment detail

指定された日の存在する週 (Nested Flatten)
酷く面倒です。データの型変換とか自動のLLはいいなぁ。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
week(Y,M,D,R):-
        format_time(atom(WeekP), "%a", date(Y,M,D,0,0,0,0,-,-),posix),
        weekdays(WD),
        find_index(WeekP,WD,WeekN),
        between(0,4,I),
        D1 is D - WeekN + I,
        date_time_stamp(date(Y,M,D1,0,0,0,0,-,-), Stamp),
        stamp_date_time(Stamp,D2,0),
        date_time_value(date,D2,R).

weekdays(['Mon','Tue','Wed','Thu','Fri','Sat','Sun']).

find_index(A,L,R):-find_index(A,L,0,R).
find_index(_,[],_,_):-fail.
find_index(A,[L|_],I,I):- A==L,!.
find_index(A,[_|Ls],I,R):-writeln([A,Ls]),succ(I,I1),find_index(A,Ls,I1,R).

:-findall(X,week(2007,07,31,X),Xs),writeln(Xs).

Index

Feed

Other

Link

Pathtraq

loading...