Я решил логическую головоломку, реализовав различные логические ограничения. Я смоделировал эту загадку: https://github.com/.../.../java/org/jacop/examples/fd/Zebra.java
Все работает. Результат отображается для меня в консоли, как и остальные параметры (узлы, решения, WrongDecisions и т. Д.).
Результат представляет собой массив, а параметры - простое отображение функции (например, System.out.print (search.getNodes () + "\ t");).
Проблема в том, что я не знаю, как отобразить все это в текстовом поле моего JFrame с помощью созданной мной кнопки.
Все, что я знаю, это то, что для этого мне нужно установить функцию в кнопке, чтобы отображать результаты в цикле (отсортированном по типу) из этой таблицы с результатами, а также отображать параметры и простой текст коробка с ответом на вопрос загадки.
//this is part of the code from ClpCombinatorics.java that is in core catalog.
...
IntVar color[] = new IntVar[5];
IntVar nationality[] = new IntVar[5];
IntVar port[] = new IntVar[5];
IntVar carries[] = new IntVar[5];
IntVar leaves[] = new IntVar[5];
for (int i = 0; i < 5; i++) {
color[i] = new IntVar(store, colorChimney[i], 1, 5);
port[i] = new IntVar(store, portNames[i], 1, 5);
carries[i] = new IntVar(store, carriesNames[i], 1, 5);
nationality[i] = new IntVar(store, nationalityNames[i], 1, 5);
leaves[i] = new IntVar(store, leavesHours[i], 1, 5);
vars.add(color[i]);
vars.add(nationality[i]);
vars.add(port[i]);
vars.add(carries[i]);
vars.add(leaves[i]);
}
store.impose(new Alldifferent(color));
store.impose(new Alldifferent(port));
store.impose(new Alldifferent(carries));
store.impose(new Alldifferent(nationality));
store.impose(new Alldifferent(leaves));
//S1
store.impose(new XeqY(nationality[igreek], leaves[isix]));
store.impose(new XeqY(nationality[igreek], carries[icoffe]));
...
public boolean searchMostConstrainedStatic() {
Search<IntVar> search = new DepthFirstSearch<IntVar>();
SelectChoicePoint<IntVar> select =
new SimpleSelect<>(vars.toArray(new IntVar[1]), new MostConstrainedStatic<>(), new IndomainMin<>());
boolean result2 = search.labeling(store, select);
System.out.println();
System.out.print(search.getNodes() + "\t");
System.out.print(search.getDecisions() + "\t");
System.out.print(search.getWrongDecisions() + "\t");
System.out.print(search.getBacktracks() + "\t");
System.out.print(search.getMaximumDepth() + "\t");
if (!result2)
System.out.println("**** No Solution ****");
return result2;
}
private SelectChoicePoint<IntVar> solution;
//@Override
public SelectChoicePoint<IntVar> getSolution(){
return solution;
}
Это работает - разгадывает загадку, но я не знаю, как ее отобразить, нажав кнопку «Решить» рядом с моей J-рамкой, как я уже упоминал ранее.