编辑:当我低于中心时,我需要的是一面旗帜。
我正在尝试获取此shape,但我未能正确填写最后一级!
我的最新代码:
:- use_module(library(clpfd)).
solve(L, Dim) :-
length(L, 5), % define 5 diagonals
Fill is Dim - 2,
Below_center is 0,
init_sublists(L, Dim, Fill, Below_center).
init_sublists([], _, _, _).
init_sublists([H|T], Dim, Fill, Below_center) :-
Below_center == 0,
length(H, Dim),
writeln("hereeeeeeeeeeeeeeeeeeeeeee"+Fill),
init_zeroes(H, Fill),
NewFill is Fill + 1,
NewFill =< Dim,
init_sublists(T, Dim, NewFill, Below_center).
init_sublists([H|T], Dim, Fill, _) :-
length(H, Dim),
writeln("ekeiiiiiiiiiiii"+Fill),
init_zeroes(H, Fill),
NewFill is Fill - 1,
NewFill > Dim - 3,
Below_center is 1,
init_sublists(T, Dim, NewFill, Below_center).
init_zeroes([], _).
init_zeroes([H|T], Fill) :-
writeln("edw"+Fill),
Fill == 0,
H is 0,
init_zeroes(T, Fill).
init_zeroes([H|T], Fill) :-
writeln("edw1"+Fill),
NewFill is Fill - 1,
init_zeroes(T, NewFill).
并且输出太大,甚至不适合SWI-Prolog ..我得到 false 。
答案 0 :(得分:0)
当我在中心的下方时,我不得不使用一个标志来表示,所以我不会回到第二个条款中。