Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
40
Task/Sierpinski-triangle/Prolog/sierpinski-triangle.pro
Normal file
40
Task/Sierpinski-triangle/Prolog/sierpinski-triangle.pro
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
sierpinski_triangle(N) :-
|
||||
Len is 2 ** (N+1) - 1,
|
||||
length(L, Len),
|
||||
numlist(1, Len, LN),
|
||||
maplist(init(N), L, LN),
|
||||
atomic_list_concat(L, Line),
|
||||
writeln(Line),
|
||||
NbTours is 2**N - 1,
|
||||
loop(NbTours, LN, Len, L).
|
||||
|
||||
init(N, Cell, Num) :-
|
||||
( Num is 2 ** N + 1 -> Cell = *; Cell = ' ').
|
||||
|
||||
loop(0, _, _, _) :- !.
|
||||
|
||||
loop(N, LN, Len, L) :-
|
||||
maplist(compute_next_line(Len, L), LN, L1),
|
||||
atomic_list_concat(L1, Line),
|
||||
writeln(Line),
|
||||
N1 is N - 1,
|
||||
loop(N1, LN, Len, L1).
|
||||
|
||||
|
||||
|
||||
compute_next_line(Len, L, I, V) :-
|
||||
I1 is I - 1,
|
||||
I2 is I+1,
|
||||
( I = 1 -> V0 = ' '; nth1(I1, L, V0)),
|
||||
nth1(I, L, V1),
|
||||
( I = Len -> V2 = ' '; nth1(I2, L, V2)),
|
||||
rule_90(V0, V1, V2, V).
|
||||
|
||||
rule_90('*','*','*', ' ').
|
||||
rule_90('*','*',' ', '*').
|
||||
rule_90('*',' ','*', ' ').
|
||||
rule_90('*',' ',' ', '*').
|
||||
rule_90(' ','*','*', '*').
|
||||
rule_90(' ','*',' ', ' ').
|
||||
rule_90(' ',' ','*', '*').
|
||||
rule_90(' ',' ',' ', ' ').
|
||||
Loading…
Add table
Add a link
Reference in a new issue