Моя проблема: во время изучения Пролога я хотел сделать решатель судоку NxN. Этот решатель получит ввод вроде
[[1,2,3,4],[3,4,1,2],[2,3,4,1],[4,1,2,3]]
Где некоторые из них могут быть переменными. Решатель должен решить эту судоку. Проблема намного меньше:
firstElementsOf([],_).
firstElementsOf([[X|_]|Rest2],Y) :-
firstElementsOf(Rest2,Y2),
append([X],[Y2],NotFlat),
flatten(NotFlat,Y).
Это должно быть началом проверки, если в каждом столбце есть разные числа. Y
из firstElementsOf
должен содержать только первые элементы заданных строк. В примере:
[1,3,2,4]
К сожалению, благодаря append он всегда добавляет еще одно пустое место в список Y
. Это дает:
[1,3,2,4,_1320]
Вопрос1: Есть ли способ избавиться от этого _1320
?
Вопрос2: Это вообще правильно? Будет ли способ получить с его помощью 2-й и 3-й элементы ввода?