我正在为一个Uni项目设计一个弹球游戏,其中应该有两种模式:运行模式和构建器模式,从而可以设计/重新设计机器的布局.
我最初的想法是状态模式 - 然而,我担心各州之间的共同界面可能会将它们收缩为实施不适合该州的方法.
例如.在构建器模式中,设置保险杠或其他任何位置是完全合适的.但是在运行模式下,它将被实现为什么都不做或抛出异常 - 这看起来很讨厌,特别是如果有很多这样的方法.
有更好的设计吗?
我在一个编程网站上遇到了以下这个问题:彼得希望为他的密码系统生成一些素数.帮助他!你的任务是生成两个给定数字之间的所有素数!
输入
输入以单行中的测试用例数t开始(t <= 10).在接下来的t行中的每一行中,存在由空格分隔的两个数m和n(1 <= m <= n <= 1000000000,nm <= 100000).
我提出了以下解决方案:
import java.util.*;
public class PRIME1 {
static int numCases;
static int left, right;
static boolean[] initSieve = new boolean[32000];
static boolean[] answer;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
numCases = sc.nextInt();
initSieve[0] = true;
initSieve[1] = true;
Sieve();
for (int j = 0; j < numCases; j++) {
String line = sc.next();
String line2 = sc.next();
left = Integer.parseInt(line);
right = …Run Code Online (Sandbox Code Playgroud) group :: Ord a => [(a, [b])] -> [(a, [b])]
Run Code Online (Sandbox Code Playgroud)
我想查找具有相同fst的所有对,并将它们合并,通过将所有bs列表附加在一起,它们具有相同的a并丢弃unnessecary对等等...
我得到了:
group ((s, ls):(s', ls'):ps) =
if s == s'
then group ((s, ls++ls'):ps)
else (s, ls) : group ((s', ls'):ps)
group p = p
Run Code Online (Sandbox Code Playgroud)
但显然这不会削减它,因为它不会对所有内容进行分组.
编辑:示例
[("a", as),("c", cs), ("c", cs3), ("b", bs),("c", cs2), ("b", bs2)]
Run Code Online (Sandbox Code Playgroud)
会输出
[("a", as),("c", cs++cs2++cs3),("b", bs++bs2)]
Run Code Online (Sandbox Code Playgroud) 我正在努力寻找一种更好的方法,因为它可能需要数年才能计算出来!我需要计算一个太大而不适合内存的映射,所以我试图按如下方式使用IO.
我有一个包含Ints列表的文件,大约有100万个.我有另一个文件,其中包含有关我(500,000)文档集的数据.我需要计算一个函数,对于第一个文件中的每个Int,它出现的文档数量(第二个中的行数).让我举个例子:
文件1:
-1
1
2
etc...
Run Code Online (Sandbox Code Playgroud)
文件2:
E01JY3-615, CR93E-177 , [-1 -> 2,1 -> 1,2 -> 2,3 -> 2,4 -> 2,8 -> 2,... // truncated for brevity]
E01JY3-615, CR93E-177 , [1 -> 2,2 -> 2,4 -> 2,5 -> 2,8 -> 2,... // truncated for brevity]
etc...
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所尝试的
def printToFile(f: java.io.File)(op: java.io.PrintWriter => Unit) {
val p = new java.io.PrintWriter(new BufferedWriter((new FileWriter(f))))
try {
op(p)
} finally {
p.close()
}
}
def binarySearch(array: Array[String], word: Int):Boolean = array match { …Run Code Online (Sandbox Code Playgroud) 我正在使用 DOM 将 XML 文档解析为我自己的结构,但在另一个问题中建议我使用 SAX,我将如何转换以下内容:
public static DomTree<String> createTreeInstance(String path)
throws ParserConfigurationException, SAXException, IOException {
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder db = docBuilderFactory.newDocumentBuilder();
File f = new File(path);
Document doc = db.parse(f);
Node node = doc.getDocumentElement();
DomTree<String> tree = new DomTree<String>(node);
return tree;
}
Run Code Online (Sandbox Code Playgroud)
这是我的 DomTree 构造函数:
/**
* Recursively builds a tree structure from a DOM object.
* @param root
*/
public DomTree(Node root){
node = root;
NodeList children = root.getChildNodes();
DomTree<String> child = null;
for(int …Run Code Online (Sandbox Code Playgroud) 我真的希望有人可以帮助我,因为我一直坐着看这个问题几个小时,我认为这只是一个缺失的细节......但不确定.
我已经定义了一个三角形类,它应该采用3(x,y)坐标,并从中计算出边长,角和面积.这个类看起来像这样:
public class Triangle {
private double x1, x2, x3, y1, y2, y3;
double sideA, sideB, sideC;
private double angleA, angleB, angleC;
public Triangle(double x1, double y1, double x2,
double y2, double x3, double y3) {
}
public double getSideA() {
return (Math.sqrt(Math.pow((x3-x2),2)+Math.pow((y3-y2),2)));
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想在我的Interaction类中调用我的getSideA方法.我已经定义了我的坐标变量,并从扫描方法中获取了它们的值.我还定义了一个变量sideA,我想从getSideA方法中获取值.这就是我做到的方式:
Triangle userTriangle = new Triangle(x1, x2, x3, y1, y2, y3);
userTriangle.getSideA = sideA;
Run Code Online (Sandbox Code Playgroud)
当我尝试编译Interaction类时,我得到以下错误代码:
Interaction.java:79: cannot find symbol
symbol : variable getSideA
location: class Triangle
userTriangle.getSideA = sideA;
^
Run Code Online (Sandbox Code Playgroud)
我有什么想法吗?
我编写了一个算法来计算和存储DAG的所有路径,它在小图上运行得很好 - 但现在我希望提高它在大图上运行的效率.该算法的核心逻辑在下面的createSF()和makePathList()中,其他方法是帮助器 - 我可以看到append是一个瓶颈.但是,我想最大的帮助是设计一个可以在字典中存储路径的数据结构,因为许多路径都是由其他路径组成的,这是我的问题的症结所在.
private Multiset<String> paths = new Multiset<String>();
public Multiset<String> createSF(DAGNode n) {
for (DAGNode succ : n.getSuccessors())
createSF(succ);
if (!n.isVisited())
for (String s : makePathList(n))
paths.put(s);
n.setVisited(true);
return paths;
}
private List<String> makePathList(DAGNode n) {
List<String> list = new ArrayList<String>();
list.add(n.getLabel());
for (DAGNode node : n.getSuccessors())
list.addAll(append(n.getLabel(), makePathList(node)));
return list;
}
private List<String> append(String s, List<String> src) {
List<String> ls = new ArrayList<String>();
for (String str : src)
ls.add(s + "/" + str);
return ls;
} …Run Code Online (Sandbox Code Playgroud) 我写了一个小实用工具方法,但它总是产生一个ClassCastException,任何想法为什么?以及如何解决它?
<T> T[] subArray(int begin, int end, T[] array) {
int size = end - begin;
Object[] newArray = new Object[size];
for (int i = 0; i < size; i++) {
newArray[i] = array[begin + i];
}
return (T[]) newArray;
}
Run Code Online (Sandbox Code Playgroud)
这是堆栈跟踪:
java.lang.ClassCastException: [Ljava.lang.Object;
at org.robert.distance.framework.FacadeTest.testSubArray(FacadeTest.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:592)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at …Run Code Online (Sandbox Code Playgroud)