Formatting Prolog-格式化纵横字谜

Formatting Prolog-格式化纵横字谜,formatting,prolog,crossword,Formatting,Prolog,Crossword,我编写了一个名为solve_crossword的谓词,如下所示: solve_crossword(X,C):- C= [A1,A2,A3,A4,A5, B1,' ',B3, ' ', B5, C1, C2,C3,C4,C5, D1,' ',D3,' ', D5, E1,E2,E3,E4,E5], member([A1, A2, A3, A4, A5], X), member([C1, C2, C3, C4, C5], X), member([E1, E2, E3,

我编写了一个名为solve_crossword的谓词,如下所示:

solve_crossword(X,C):-
C= [A1,A2,A3,A4,A5,
    B1,' ',B3, ' ', B5,
    C1, C2,C3,C4,C5,
    D1,' ',D3,' ', D5,
    E1,E2,E3,E4,E5],
member([A1, A2, A3, A4, A5], X),
member([C1, C2, C3, C4, C5], X),
member([E1, E2, E3, E4, E5], X),
member([A1, B1, C1, D1, E1], X),
member([A3, B3, C3, D3, E3], X),
member([A5, B5, C5, D5, E5], X).
| ?- words(X), solve_crossword(X, C), write_crossword(C).

DITCH
O U O
DITTO
G O E
EARLY

C = [[68,73,84,67,72],[79,32,85,32,79],...
X = [[68,73,83,84,82],[68,73,84,67,72],...
现在,我想编写一个名为write_crossword的谓词来格式化这个crossword。如果我有一个单词列表,我希望它看起来像这样:

solve_crossword(X,C):-
C= [A1,A2,A3,A4,A5,
    B1,' ',B3, ' ', B5,
    C1, C2,C3,C4,C5,
    D1,' ',D3,' ', D5,
    E1,E2,E3,E4,E5],
member([A1, A2, A3, A4, A5], X),
member([C1, C2, C3, C4, C5], X),
member([E1, E2, E3, E4, E5], X),
member([A1, B1, C1, D1, E1], X),
member([A3, B3, C3, D3, E3], X),
member([A5, B5, C5, D5, E5], X).
| ?- words(X), solve_crossword(X, C), write_crossword(C).

DITCH
O U O
DITTO
G O E
EARLY

C = [[68,73,84,67,72],[79,32,85,32,79],...
X = [[68,73,83,84,82],[68,73,84,67,72],...


第1、3、5行和第1、3、5列应该是单词

您可以尝试类似的方法(注意,我更正了您的代码,用于解决纵横字谜):


atom_代码/2在atom和字符代码列表之间进行转换。

现在,我可以合并您的帐户了