質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

8730閲覧

java でしりとり

msia

総合スコア33

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2015/10/01 05:29

java でひとりで遊べるしりとりを作りたいと思っているのですが
コンピューターが自動的に返事してくれるようなものを作りたいと考えているのですが
なにか参考になるようなサイトがあれば教えていただきたいのですが
ありますか?
答えのソースがあるならばそれをアレンジしたりとかもしてみたいです
よろしくお願いします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ヘビーに作るのでなければ,しりとりAPIのようなものを利用することになるでしょう.
http://workpiles.com/2015/01/android-docomo_api-chatbot/

しりとり自体は下のような形で,作れるとは思いますが,辞書をどこからか用意する必要があるでしょう.

Java

1public class Shiritori { 2 3 private static final BufferedReader READER = new BufferedReader( 4 new InputStreamReader(System.in)); 5 6 private static final List<String> DICTIONARY = Collections 7 .unmodifiableList(Arrays.asList("りんご", "ごりら", "らっぱ","ぱんつ","つくし", "しりとり","しめじ")); 8 9 private static final List<String> USED = new ArrayList<>(); 10 11 private static final Random RANDOM; 12 static { 13 try { 14 RANDOM = SecureRandom.getInstanceStrong(); 15 } catch (NoSuchAlgorithmException e) { 16 throw new RuntimeException(e); 17 } 18 } 19 20 public static void main(String[] args) throws IOException { 21 String yours = DICTIONARY.get(RANDOM.nextInt(DICTIONARY.size())); 22 System.out.println(new StringBuilder().append("じゃあねー最初は[").append(yours) 23 .append(']').append("だよ")); 24 25 for (;;) { 26 final String mine = READER.readLine(); 27 28 if (mine.isEmpty()) { 29 continue; 30 } 31 32 if(mine.equals("!")){ 33 System.out.println("へへん.勝ったー!"); 34 return; 35 } 36 37 if (yours.charAt(yours.length() - 1) != mine.charAt(0)) { 38 System.out.println(new StringBuilder().append("その単語[") 39 .append(yours.charAt(yours.length() - 1)) 40 .append("]で始まってないじゃん!")); 41 continue; 42 } 43 44 if (!DICTIONARY.contains(mine)) { 45 System.out.println("その単語知らない!知ってそうな単語を入力して!"); 46 continue; 47 } 48 49 if(USED.contains(mine)){ 50 System.out.println("その単語使ったよ!忘れたとはいわせないよ!"); 51 continue; 52 } 53 54 USED.add(mine); 55 56 List<String> result = search(mine.charAt(mine.length() - 1)); 57 58 if (result.isEmpty()) { 59 System.out.println("もうわかんない.負けたー"); 60 return; 61 } 62 63 yours = result.get(RANDOM.nextInt(result.size())); 64 65 if(USED.contains(yours)){ 66 System.out.println(new StringBuilder().append('[').append(yours).append(']') 67 .append("は言ったっけー.わかんない.まけたー")); 68 return; 69 } 70 71 System.out.println(new StringBuilder().append("じゃあ[") 72 .append(yours).append(']').append('!')); 73 74 } 75 76 } 77 78 public static final List<String> search(char firstChar) { 79 List<String> result = new ArrayList<>(); 80 for (String word : DICTIONARY) { 81 if (word.charAt(0) == firstChar) { 82 result.add(word); 83 } 84 } 85 return result; 86 } 87}

投稿2015/10/13 18:58

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

msia

2015/10/14 01:13

丁寧に答えてくださりありがとうございます 辞書をどこから引っ張ってきたらいいのか困ってます
退会済みユーザー

退会済みユーザー

2015/10/14 05:36

形態素解析(言語の構造分析など)で使われるコーパスを使う. http://pj.ninjal.ac.jp/corpus_center/ (少納言のみフリー)http://www.kotonoha.gr.jp/shonagon/ ネット辞書をまたいで検索して,存在するかどうか確かめる. http://dictionary.goo.ne.jp/ ローカル辞書を作成または利用する. http://compling.hss.ntu.edu.sg/wnja/ Google検索でN件以上あれば,認識する. などであれば可能でしょう. 個人レベルなら自分が2回連続で同じ単語を言ったら,辞書を追加するとかでもいいでしょうが.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問