这是我的SWI-Prolog计划的概述:
:- use_module(library(clpfd)).
consec1(L) :-
L=[L1,L2,L3,L4,L5,L6,L7,L8,L9],
L ins 1..9,
...,
abs(L5-L4)#=1,
all_different(L),
labeling([],L)
Run Code Online (Sandbox Code Playgroud)
abs(L5-L4)#=1让L5和L4彼此相邻.如果我想让三个数字彼此相邻,例如L3,L4并且L5,我怎么能使用具体约束来做到这一点?
例如L3=4,L5=5,L4=6或L4=7,L5=8,L3=9
Scanner in = new Scanner(System.in,"UTF-8");
System.out.println(in.next());
Run Code Online (Sandbox Code Playgroud)
如果我粘贴?,我收到?控制台的输出.有人可以解释我能做些什么来正确读取这样的逻辑符号?我正在使用NetBeans 8.0.1.
谢谢.
这感觉就像这样一个基本问题,但这对我来说都是新的:
我有一个Person和Room类,它们都有Item对象列表.
public class Person{
private ArrayList<Item> items;
public Person() {
items = new ArrayList<>();
}
public void addItem(){
...
}
public void removeItem(){
...
}
}
public class Room {
private ArrayList<Item> items;
public Room () {
items = new ArrayList<>();
}
public void addItem(){
...
}
public void removeItem(){
...
}
}
Run Code Online (Sandbox Code Playgroud)
项目方法,例如addItem()在Room类和Person类中都是重复的,这不是很好.我想要制作一个单独的库存类,其中包含项目和项目方法的列表,然后每个房间和人员都有一个库存.
但是如果我使用私人库存字段,那么我将无法从人员或房间调用Item方法.
什么是停止复制的最佳方法?提前致谢!
我对OO设计很陌生,我在设计游戏时遇到了一些问题:
游戏中有一系列房间.每个房间都有一系列玩家和库存.每个库存都有一个项目集合.
所以目前,会议室控制着玩家.但是通过这种设计,我不确定是否可以在房间之间移动播放器,这就是我想做的事情.
然后我想Room currentRoom在Player课程中有一个,但我觉得我也有这个问题.此外,玩家没有房间,所以这似乎不是很好.
关于如何设计我的游戏的任何提示?谢谢!
我写了一个序言程序来解决和显示数独之类的难题的解决方案。首先,如果网格为例如4x4,我会使用类似的方法:
main:-
Matrix = [[_,_,_,_],[_,_,_,_],[_,_,_,_],[_,_,_,_]],
solve_puzzle(Matrix),
display_matrix(Matrix).
Run Code Online (Sandbox Code Playgroud)
但是我希望能够设置矩阵的大小,所以我写了这样的代码:
generate_list(N, [ ]) :-
N =< 0, !.
generate_list(N, [_ | T]) :-
N > 0,
N2 is N - 1,
generate_list(N2, T).
generate_matrix(_, N, []) :-
N =< 0, !.
generate_matrix(M, N, [R|T]) :-
generate_list(M,R),
N2 is N - 1,
generate_matrix(M, N2, T).
Run Code Online (Sandbox Code Playgroud)
然后我可以做:
main:-
Rows = 4, Columns = 4,
generate_matrix(Columns,Rows,Matrix),
solve_puzzle(Matrix),
display_matrix(Matrix).
Run Code Online (Sandbox Code Playgroud)
但这似乎减慢了我的程序。有没有更好的方法来生成N x M矩阵?
我想要下面的方法来替换a中的文本选择,JTextField并用一些输入替换它String.我的问题是,如果我选择了多个单个字符JTextField,则插入位置会向前跳过.
如何确保插入位置保持在正确的位置?
private void addStringAtCaretPos(String c) {
final int caretPosition = inputTextField.getCaretPosition();
inputTextField.replaceSelection(c);
inputTextField.requestFocus();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
inputTextField.setCaretPosition(caretPosition + 1);
}
});
}
Run Code Online (Sandbox Code Playgroud) 我被告知a + = b之间存在差异; 和a = a + b; 这可能导致其中只有一个是合法的,具体取决于类型的变化.
有没有人有这样的例子?
我有一个内部表,其中有200万行是从文件中上传的。我想删除所有重复的行,并提取重复的行号并将其添加到另一个表中。用ABAP 7.40做到这一点的最佳/最有效方法是什么?经典ABAP也可以。
所以这是我原始表的一个例子,我想通过比较列A和列B查找重复项
A | B | C
-----------
a1 | b1 | c1
a1 | b2 | c1
a2 | b1 | C2
a1 | b1 | c2
a2 | b2 | c2
Run Code Online (Sandbox Code Playgroud)
第1和第4行是重复的,因此我想将两者都删除以
A | B | C
-----------
a1 | b2 | c1
a2 | b1 | C2
a2 | b2 | c2
Run Code Online (Sandbox Code Playgroud)
并且还有另一个存储重复项的表:
Row number | Error
-------------------
1 | Duplicate
4 | Duplicate
Run Code Online (Sandbox Code Playgroud)
我在该网站上看到过类似的请求,但是它们的工作方式与我需要的有所不同。谢谢。