問題タブ [jatha]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
9 に答える
29018 参照

java - AI をプレイするテキサス ホールデムをゼロから構築する

Java で Texas Hold 'Em AI エンジンを構築することに興味があります。これは長期プロジェクトであり、少なくとも 2 年間は投資する予定です。私はまだ大学生で、野心的なものはまだ作っていませんが、長期的に興味を持ち続ける問題に取り組みたいと思っています。私は AI の分野は初めてです。大学でのデータ構造のクラスから、BFS や DFS、バックトラッキング、DP、ツリー、グラフなどの基本的な構成要素を知っています。正規表現を学んでおり、SCJP と SCJD のために勉強しています。 )統計コース。

質問:

-どこから始めればよいですか? どの本を選べばいいですか?ポーカー プレイ プログラムはどのような AI で実行されますか? どのオープンソース プロジェクトからページを取得できますか? Java の優れた AI リソースはありますか? 私も Lisp を学ぶことに興味があります。Jatha は得意ですか?

0 投票する
3 に答える
4666 参照

java - Java から呼び出される Lisp コード

長い話:

私は関数型プログラミング クラスのプロジェクトを行っており、Mario AI コンペティションのために、Lisp で AI コントローラーを作成することを考えました。

フレームワーク/ライブラリ/Java から Lisp コードを呼び出す方法、またはさらに優れた Lisp-Java 相互通信について調べていました。

私はJacolを見てきましたが、それは古く、うまくコンパイルできません。

これまでのところ、私の最良の選択は: Jathaです。いくつかの Lisp コンストラクトはまだ実装されていませんが、独自のコンストラクトを簡単に定義できます。たとえば、mapcarcondは実装されていません。次のように Lisp でmappという名前の独自のmapcarを実装しました。

これを使用する単純な関数があります。たとえば、非線形リストにある原子の数を数えます。

これはすべてclispで正常に動作 します Java から Lisp コードを呼び出すために、私はJathaを使用しました。Jatha ライブラリを Java プロジェクトにインポートし、次のような Lisp ファイルをロードするだけです (例):

そのコードは clisp やその他の実装では問題なく動作しますが、このコードは StackOverflow を生成します。

run: APPLY: fn = +, args = ((1 1)) S: ((+ (QUOTE 1) (QUOTE 1))) Exception in thread "main" java.lang.StackOverflowError at java.lang.Long.toString(Long.java:242) at java.lang.Long.toString(Long.java:100) at java.lang.String.valueOf(String.java:2946) at org.jatha.dynatype.StandardLispInteger.toString(StandardLispInteger.java:113) at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:152) at org.jatha.dynatype.StandardLispCons.toStringAsCdr_internal(StandardLispCons.java:174) at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:153) at org.jatha.dynatype.StandardLispCons.toStringAsCdr_internal(StandardLispCons.java:174) at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:153) at org.jatha.dynatype.StandardLispCons.toStringAsCdr_internal(StandardLispCons.java:174) at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:153) at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:152) at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:152) at org.jatha.dynatype.StandardLispCons.toStringAsCdr_internal(StandardLispCons.java:174) at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:153) at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:152) at org.jatha.dynatype.StandardLispCons.toStringAsCdr_internal(StandardLispCons.java:174) at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:153) at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:152) at org.jatha.dynatype.StandardLispCons.toStringAsCdr_internal(StandardLispCons.java:174) at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:153) at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:152) at org.jatha.dynatype.StandardLispCons.toStringAsCdr_internal(StandardLispCons.java:174) at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:153) at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:152) at org.jatha.dynatype.StandardLispCons.toStringAsCdr_internal(StandardLispCons.java:174) at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:153) at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:152) at org.jatha.dynatype.StandardLispCons.toStringAsCdr_internal(StandardLispCons.java:174) at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:153) at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:152) at org.jatha.dynatype.StandardLispCons.toStringAsCdr_internal(StandardLispCons.java:17

だから私の質問は、なぜこれを行うのですか? 私のコードは間違っていますか?
Jathaのバグですか?セットアップにそれほど時間はかかりません。
似たようなことをしたことがありますか?
これを行うための他のより良い方法を知っていますか?私が望むのは、Java から Lisp コードを呼び出して実行し、Lisp コードによって計算された結果を取得することだけです。
ありがとう。

[編集] コードを修正し、間違ったものを貼り付けました。