问题列表 - 第19897页

构建NetHack机器人:贝叶斯分析是一个好策略吗?

我的一个朋友开始构建一个NetHack bot(一个玩Roguelike游戏的机器人:NetHack).类似的游戏Angband有一个非常好的工作机器人,但它部分工作,因为回到城镇很容易,并总是能够低水平获得物品.

在NetHack中,问题要困难得多,因为游戏奖励了鼓舞人心的实验,并且基本上构建为1000个边缘案例.

最近我建议使用某种天真的贝叶斯分析,就像创建垃圾邮件一样.

基本上,机器人首先会建立一个语料库,通过尝试每个可能的行动来查找它所发现的每个物品或生物,并将这些信息存储起来,例如,死亡的接近程度,负面影响的伤害.随着时间的推移,您似乎可以生成一个合理的可玩模型.

任何人都能指出我们正确的方向是一个良好的开端吗?我是在吠叫错误的树还是误解了贝叶斯分析的想法?

编辑:我的朋友提出了他的NetHack补丁github回购,允许python绑定.它仍处于一个非常原始的状态,但如果有人感兴趣...

artificial-intelligence bots bayesian nethack

27
推荐指数
1
解决办法
3325
查看次数

系统杀死活动时具有全局变量的Android持久状态

为了在我的Android应用程序中保持状态,以便用户将返回到他们中断的活动,我在我的清单中设置了非常有用的标志alwaysRetainTaskState:

<activity android:name=".Main"
              android:label="@string/app_name"
              android:alwaysRetainTaskState="true"> 
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
Run Code Online (Sandbox Code Playgroud)

这可以完成工作,或者我认为; 我发现系统仍然可以破坏我的应用程序的活动以保留内存,同时仍保持状态.为了验证这一点,我写了一个小测试应用程序,它在循环中创建了一大堆活动,以查看我的应用程序的活动是否会被销毁.果然,系统会破坏我的活动.

通过一些阅读,我发现我需要使用onSaveInstanceState()和onRestoreInstanceState()来帮助维护活动状态.

为了解决我的问题,假设我有一个包含许多全局变量的Activity,其中一些是静态的,有些则不是.它们由布尔,arraylists,字符串等组成.我的问题是,当一个活动被销毁时,我很困惑这些变量中的哪一个是持久的.我应该在onSaveInstanceState()中打包哪些包?当活动被销毁时,系统是否对这些变量做了什么?

java android android-intent

2
推荐指数
1
解决办法
3328
查看次数

使用默认程序打开Excel文件

我的程序成功创建并填充了Excel(.xls)文件.一旦创建,我希望在系统的默认程序(在我的情况下为Excel)中打开新文件.我怎样才能做到这一点?

对于我想在记事本中打开txt文件的旧程序,我使用了以下内容:

if (!Desktop.isDesktopSupported()) {
        System.err.println("Desktop not supported");
        // use alternative (Runtime.exec)
        return;
    }

    Desktop desktop = Desktop.getDesktop();
    if (!desktop.isSupported(Desktop.Action.EDIT)) {
        System.err.println("EDIT not supported");
        // use alternative (Runtime.exec)
        return;
    }

    try {
        desktop.edit(new File(this.outputFilePath));
    } catch (IOException ex) {
        ex.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

当我尝试将此代码用于Excel文件时,它会给我以下错误:

java.io.IOException: Failed to edit file:C:/foo.xls
Run Code Online (Sandbox Code Playgroud)

建议?

java excel jexcelapi

11
推荐指数
1
解决办法
2万
查看次数

救命!当喂食strtok结果时,strcmp对我说谎

strcmp,当喂到strtok的结果时,在下面的代码中似乎是公然对我撒谎.

int fSize;
char * buffer=NULL;
char * jobToken = "job";
char * nextToken=NULL;
job * curJob=NULL;
struct node * head=NULL;
struct node * parseList(FILE* file){
    fseek(file,0,SEEK_END);
    fSize=ftell(file);
    buffer = (char*)malloc(fSize+1);
    printf("%d chars: reading buffer now:\n",fSize);
    fseek(file,0,SEEK_SET);
    fread (buffer,1,fSize,file);
    nextToken = strtok(buffer, " \n");
    while (nextToken!=NULL){
            printf("**Running  Token: %s**\n",nextToken);
            if (strcmp(nextToken,jobToken)){
                    printf("Accepted %s  as %s\n",nextToken,jobToken);                
            }else{
                    printf("not %s, %s\n",jobToken,nextToken);
            }

            printf("End of state - %s\n",nextToken);

            nextToken = strtok(NULL, " \n");
    }
    free (buffer);
    return NULL;
}
Run Code Online (Sandbox Code Playgroud)

将此输入放在parseList参数的文件中:

job 23
job …
Run Code Online (Sandbox Code Playgroud)

c string strtok strcmp

1
推荐指数
1
解决办法
1567
查看次数

xterm中的光栅图形?

不,不是ASCII图形,请看这里的截图:

http://en.wikipedia.org/wiki/W3m

图片

这怎么可能呢?

我检查了源,它只打印字符序列.但是,我无法在xterm文档或其他地方找到任何对图形绘制或图像嵌入转义序列的引用.

w3m似乎也是唯一这样做的软件.

这里矢量图形泰克仿真,但是这是在VT模式下进行.

也许我在寻找错误的东西?

任何的想法?

x11 terminal graphics xterm

20
推荐指数
2
解决办法
8654
查看次数

在 Wicket 中向 ListView 动态添加组件

我想用“添加”按钮制作一个表格。按“添加”按钮后,新面板将添加到检票口 ListView 元素。我怎么做?我希望能够添加无限数量的行。

编辑:

InteractivePanelPage.html

<table>
    <tr>
        <td><a href="#" wicket:id="addPanelLink">Add Panel</a></td>
    </tr>
    <tr wicket:id="interactiveListView">
        <td>
        <span wicket:id="interactiveItemPanel"></span>
        </td>
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

交互式面板页面

// ... imports
public class InteractivePanelPage extends WebPage {
    public LinkedList<InteractivePanel> interactivePanels = new LinkedList<InteractivePanel>();

    private ListView<InteractivePanel> interactiveList;

    public InteractivePanelPage() {
        add(new AjaxLink<String>("addPanelLink") {
            private static final long serialVersionUID = 1L;

            @Override
            public void onClick(AjaxRequestTarget target) {
                try {
                    System.out.println("link clicked");

                    InteractivePanel newInteractivePanel = new InteractivePanel(
                            "interactiveItemPanel");
                    newInteractivePanel.setOutputMarkupId(true);

                    interactiveList.getModelObject().add(newInteractivePanel);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });

        interactivePanels.add(new …
Run Code Online (Sandbox Code Playgroud)

java wicket

5
推荐指数
1
解决办法
2万
查看次数

尽管SO_LINGER,关闭等数以万计的TIME_WAIT

我正在开发一个可以同时连接到多个URL的站点(我们希望每分钟达到600个),无论我尝试什么,总有数千个TIME_WAIT仍然打开.我知道这些对于TCP连接至关重要,但它们正在使用所有可用的端口.PHP没有SO_REUSEPORT,SO_REUSEADDR不适用于远程连接.这是代码的开头:

$s = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($s, SOL_SOCKET, SO_LINGER,array('l_linger'=>0, 'l_onoff'=>0)); //I have tried l_onoff=1 
socket_set_option($s, SOL_SOCKET, SO_RCVTIMEO,array('sec'=>0,'usec'=>500000));
socket_set_option($s, SOL_SOCKET, SO_SNDTIMEO,array('sec'=>0,'usec'=>500000));
socket_set_option($s, SOL_SOCKET, SO_KEEPALIVE,0);
socket_set_option($s, SOL_SOCKET, SO_REUSEADDR,1);
socket_set_nonblock($s);
socket_bind($s,$ip,0);
socket_connect($s,$host,$port);
Run Code Online (Sandbox Code Playgroud)

$ s进入一个包含所有挂起写入的数组,在写入后我们调用socket_shutdown($ s,1); 关闭套接字上的写入.然后读完后我们:

socket_shutdown($s,2); socket_close($s);
Run Code Online (Sandbox Code Playgroud)

所有读取和写入都是在while循环中完成的,循环最多有12个并发连接,如果没有命中,则继续进行并继续向数组添加另一个URL.每个循环调用socket_select,超时为0.

有没有人有什么建议?我想提高速度并减少netstat中出现的TIME_WAIT.

谢谢James Hartig

php sockets

5
推荐指数
1
解决办法
3384
查看次数

C语言中的字符串,如何获取subString

我有一个字符串:

char * someString;
Run Code Online (Sandbox Code Playgroud)

如果我想要这个字符串的前五个字母并想要设置它otherString,我该怎么做?

c

48
推荐指数
4
解决办法
15万
查看次数

试图了解GCC错误

我有以下一点代码:

#include <iostream>
#include <list>
#include <algorithm>
#include <iterator>

template<typename Iterator>
void foo(Iterator begin, Iterator end)
{
   typedef typename std::iterator_traits<Iterator>::value_type type;
   type smallest = (*std::min_element(begin,end));
   std::cout << smallest << std::endl;
}

int main()
{
   std::list<int> l;
   l.push_back(1);   
   l.push_back(2);
   foo(l.begin(),l.end());
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我编译它如下:

g++ -pedantic -ansi -Wall -Werror -O2 -o  test test.cpp
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

cc1plus: warnings being treated as errors
In function ‘int main()’:
cc1plus: error: dereferencing pointer ‘pretmp.163’ does break strict-aliasing rules
cc1plus: note: initialized from here
Run Code Online (Sandbox Code Playgroud)

O3可以看到此错误,但O1不会出现此错误.我使用了在线编译器,MS VC9.0和icc v11编译了代码,并且在所有情况下代码编译都没有问题. …

c++ gcc strict-aliasing

5
推荐指数
1
解决办法
1221
查看次数

在Android ListView中,我如何迭代/操纵所有子视图,而不仅仅是可见视图?

下面的代码不会更改所有ListView's行的文本,因为getChildCount()它不会获取所有ListView's行,而只会获取可见的行.

for (int i = 0; i < listView.getChildCount(); i++)
{
    View v = listView.getChildAt(i);
    TextView tx = (TextView) v.findViewById(R.id.mytext);
    tx.setTextSize(newTextSize);
}
Run Code Online (Sandbox Code Playgroud)

所以我该怎么做?

ListView's行变得可见时是否有用于获取通知的代码,因此我可以设置其文本大小?

android android-widget

10
推荐指数
2
解决办法
2万
查看次数