我正在开发一个Java应用程序,它需要做一些复杂的逻辑规则推导作为其功能的一部分.我想在Prolog或其他逻辑/约束编程语言而不是Java中编写我的逻辑演绎编码,因为我相信生成的代码将更加简单和易于维护.
我在Prolog上搜索了嵌入式Java实现,并发现了它们的数量,每个都只有很少的文档.我的(适度)选择标准是:
我有什么选择,它们的优点和缺点是什么?
java prolog logic-programming embedded-language constraint-programming
分形对我来说一直是个谜.
在各种编程问题领域中,分形有哪些实际用途(除了渲染到漂亮的图像之外)?请不要只列出使用它们的区域.我对特定的算法感兴趣,以及如何将分形与这些算法一起用来在实践中解决某些问题.请至少给出算法的简短描述.
是否有直接的方法来获得nCr的所有组合的有序集合的第N个组合?
示例:我有四个元素:[6,4,2,1].通过一次取三个所有可能的组合将是:[[6,4,2],[6,4,1],[6,2,1],[4,2,1]].
有没有一个算法可以在有序的结果集中给出我的第三个答案,[6,2,1],而不需要列举所有以前的答案?
我正在尝试从我的应用程序控制外部OSX应用程序的窗口.我想1.移动屏幕上的窗口2.调整屏幕上的窗口大小3.更改应用程序的当前活动窗口4.获取当前活动的窗口.
(我想通过ObjC/C/C++ apis这样做).
考虑到我有想要控制的窗口的CGWindowID,我应该寻找什么样的API调用?也就是说,我希望找到的功能与类似的东西签名:MoveWindow(CGWindowID winId, int x, int y),ResizeWindow(CGWindowID winId, int width, int height),Activatewindow(CGWindowID winId),CGWindowID GetCurrentlyActivatedWindow().
对于3,我已经习惯SetFrontProcess将一个进程拉到前面,但是这不允许我选择一个进程的特定窗口,如果它有多个.
是否有任何(免费)Java正则表达式引擎,可以将正则表达式编译为DFA,并在匹配DFA时进行组捕获?
我找到了dk.brics.automaton和jrexx,它们都编译成DFA,但似乎都无法进行群组捕获.虽然我发现的其他引擎似乎编译为NFA.
我正在尝试为外国应用程序创建HUD样式显示.
为此,我需要创建一个透明的覆盖窗口,它将放置在外部应用程序的窗口之上.叠加窗口应该允许我放置小部件并在其上绘制文本.事件应该转发到底层窗口,如果它们发生在透明区域上(否则允许窗口小部件按预期工作).
我在OSX上用Java做这个.我希望用纯Java实现这一点,并且可以移植到其他平台,但是如果不可能的话,我可以使用只允许我通过Cocoa(Rococoa)或Carbon在OSX上执行此操作的解决方案.
我有一个JSCrollPane,其中JTextArea设置为其视图端口.
我连续更新JTextArea上显示的(多行)文本大约每秒一次.每次文本更新时,JScrollPane都会一直到文本的底部.
相反,我想弄清楚当前显示为原始文本中第一行的行号,并将该行作为文本更新后显示的第一行(或者如果新文本没有那么多行,然后一直滚动到底部).
我这样做的第一次尝试是获取当前插入位置,根据该位置计算线条,然后设置文本区域以显示该行:
int currentPos = textArea.getCaretPosition();
int currentLine = 0;
try {
for(int i = 0; i < textArea.getLineCount(); i++) {
if((currentPos >= textArea.getLineStartOffset(i)) && (currentPos < gameStateTextArea.getLineEndOffset(i))) {
currentLine = i;
break;
}
}
} catch(Exception e) { }
textArea.setText(text);
int newLine = Math.min(currentLine, textArea.getLineCount());
int newOffset = 0;
try {
newOffset = textArea.getLineStartOffset(newLine);
} catch(Exception e) { }
textArea.setCaretPosition(newOffset);
Run Code Online (Sandbox Code Playgroud)
这几乎可以满足我的需求,但要求用户在文本区域内单击以更改插入位置,以便滚动将保持状态(这不是很好).
我如何使用(垂直)滚动位置来代替?
假设一组数据点,例如此处绘制的数据点(此图不是特定于我的问题,而只是用作一个合适的例子):

可视化地检查散点图,很明显数据点形成两个"组",其中一些随机点显然不属于任何一个.
我正在寻找一种算法,这将允许我:
我正在尝试使用辅助功能API自动化外部OSX应用程序.应用程序的某些状态不能通过API获得,因此我通过屏幕抓取获取它.为此,我需要为具有"窗口角色"的辅助功能对象获取CGWindowID.
有没有直接的方法来获取"窗口角色"可访问性对象的CGWindowID?通过匹配窗口的各种属性,例如大小,标题和位置,我可以启发式地获得它,但这真的很糟糕,如果我的应用程序也支持极端情况我会感觉更好,即使它们不太可能.
我正在尝试通过 libdtrace 使用 dtrace(在 Snow Leopard 上;10.6.4)。我想在我自己的程序中捕获我的 dtrace 脚本的打印输出。一种方法是将输出转到临时文件并从那里读取。但是,libdtrace 支持回调函数来直接捕获我更喜欢的输出。
我认为回调只会传递我可以使用的格式化字符串,但情况似乎并非如此。例如,在下面的测试程序中,我希望打印输出为“process pid = 86138”。但是,它总是打印出“process pid = 1”(当使用 'dtrace -n' 运行时,dtrace 脚本工作正常)。
我究竟做错了什么 ?我应该如何使用传递给缓冲区处理程序的数据?(具体来说,来自 printf 和 tracemem 操作的数据是我感兴趣的)。
#include <dtrace.h>
#include <stdio.h>
#include <stdlib.h>
#include <mach/mach.h>
#include <mach-o/loader.h>
#include <mach-o/dyld.h>
#include <mach-o/fat.h>
#include <sys/sysctl.h>
#include <signal.h>
static const char *g_prog =
"pid86138::write:entry"
"{"
" printf(\"process pid = %d\\n\", pid);"
"}";
static int dcmdbuffered(const dtrace_bufdata_t *bufdata, void *arg) {
if((bufdata->dtbda_recdesc != NULL) && (bufdata->dtbda_recdesc->dtrd_action == DTRACEACT_PRINTF))
printf("BUF: %s\n", bufdata->dtbda_buffered);
return DTRACE_HANDLE_OK;
} …Run Code Online (Sandbox Code Playgroud) java ×4
macos ×4
cocoa ×3
algorithm ×2
macos-carbon ×2
math ×2
probability ×2
statistics ×2
swing ×2
automation ×1
c ×1
debugging ×1
dfa ×1
dtrace ×1
fractals ×1
objective-c ×1
overlay ×1
prolog ×1
random ×1
regex ×1