ことのはたんごスポイラー

# TL;DR;

これは[Wordle](https://www.nytimes.com/games/wordle/index.html)ライクな[ことのはたんご](https://plum-chloride.jp/kotonoha-tango/index.html)のソースコードを分析して作った攻略案の記事だ。
純粋に自力で楽しみたい人は読まない方が良いかも。
以上。良いことのはたんごライフを！

※このスポイラーを直接的または間接的に読んでしまうことによりこうむった損害は一切補償しません。

# 経緯

私はことのはたんごが面白くてほぼ毎日やってるただの1ユーザだ。
自分なりに攻略法を考えて日々の通勤電車で遊んでいる。
頭の中に5個ストックしてあるマイたんごを、1文字ヒットするまで順番に入れていくのが最初のルーティンだ。

つい最近スマホの画面が割れたのを機に、買い替えで連勝記録がリセットされた。
ムシャクシャしてはいない。むしろスマホが新品になってピカピカでツルツルしている、ところでふと思った。

「ぼくがかんがえたさいきょうのマイたんごは正しいのか」と。

以下はことのはたんごから単語リストっぽいcsvを取得して、ピカピカでツルツルな脳[^1]を駆使してpythonで出現率を求めて**つよいもじ**を組み合わせた結果の備忘録である。

[^1]:頭髪の話はしていない

# 結論

## まずは公式より始めよ

開発者様のnoteに分かりやすく丁寧な攻略法が載ってるから、まずはこれを見るべし。
[日本語版Wordle「ことのはたんご」指南書・感想](https://note.com/plumchloride/n/n1fcddc29b00c)

リンク先の「**抽出戦法**」大事、めっちゃ大事。
これは勝率を上げる基礎テクニックというか、ことのはたんごの醍醐味ではないだろうか。

いかに重複なく「抽出戦法」を取れるかで語彙力と発想力を試されて脳汁プッシャーするのがWordle系ゲームの面白さだと思う。(個人の感想です)

私がローラー戦法を取るのは10トライ目と、2トライ、3トライで早期決着がつけられそうな時のみと決めている。(個人の信条です)

10トライ目で残り候補数が10の時に正解しちゃった日にはもうプッシャーが止まらない。そうだろう？(それってわたしの感想ですよね)

## お勧めのたんごルーティン

さて本題に移る前に、2023年3月21日時点の[ソースコード](https://github.com/plumchloride/tango)から正解たんごを分解し、頻出文字順に並べると下記になるようだ。
```
ウンショイクキュリカジチコツタトセアッラガオーミマャスケサナテドモハエダロヒニレフブバワギルゴソノメヤヨビホボゲグムズネザデユゼヘベゾヅパプピィポヌペェァォヂ
```
「ウ」が最も高い頻度で、正解のたんごに含まれ、「ヂ」が最も低い。
つまり「ウ」「ン」は早く入力した方が運試しになりにくい、**つよいもじ**である。

この結果をふまえて、可能な限りつよいもじ順に使うたんごのルーティンを考えてみた。
これ以降、`5: 5, 4: 150, 3: 675, 2: 1877, 1: 2998, 0: 2210`のような表記が出てくる。
これは提示されたたんごをすべて入力した時に「**緑または黄**になる文字数を集計したもの」である。

上記の例では、正解の全たんご7915パターン[^2]のうち、5文字すべてが緑または黄になるたんごが5パターンで、4文字が緑か黄かになるたんごが150パターン、3文字が675パターン、...、0文字(一文字もヒットしない)のたんごが2,210パターンを意味する。

[^2]: 正解たんごリストから重複を除き、さらにアナグラム(「カイシュウ」と「シュウカイ」など)をまとめて1パターンでカウントしている。そのため実際のたんご数よりも少ない。

### たんご6選

つよいもじ順に並べたお勧めのたんご6選をセットリストにしてみたので紹介していく。

下記の順にたんごを入れることで、99%くらいの確率で1文字以上が緑または黄になるし、88%くらいの確率で3文字以上が緑または黄になる。[^3]

[^3]: アナグラムを考慮していないので、実際の割合とは異なる。あくまでざっくりしたイメージを提示している

1. 「シンキョク」
`5: 5, 4: 150, 3: 675, 2: 1877, 1: 2998, 0: 2210`
2. 「イチリュウ」
`5: 151, 4: 1444, 3: 1847, 2: 2088, 1: 1699, 0: 686`
3. 「アタッカー」
`5: 345, 4: 1877, 3: 2318, 2: 2090, 1: 1059, 0: 226`
4. 「ジセツガラ」
`5: 836, 4: 2524, 3: 2171, 2: 1590, 1: 664, 0: 130`
5. 「モテオトコ」
`5: 1259, 4: 2877, 3: 2248, 2: 1173, 1: 319, 0: 39`
6. 「サスケハナ」
`5: 1811, 4: 3104, 3: 2030, 2: 815, 1: 145, 0: 10`

たんごを上から順に入れていき、適度に黄色が埋まってきたところで通常の解き方にシフトすると序盤から有利に進められる確率が高くなるはずだ。
もし6たんご入れて0ヒットの場合があっても、低い確率に当たったラッキーをかみしめて強く生きてほしい。

「**新局面で一流のアタッカーになり、時節柄モテ男の名は"サスケハナ"**」とでも覚えよう。
新局面が覚えにくかったら神曲や極真流に置き換えてもOK。
ちなみにここ、テストに出ません。

### 最頻出1～7たんご

とりあえずn個のたんごを最初に何も考えず入力した後に自力で頑張りたい人向け。

下記の組み合わせは、頻出順を考慮せずに最高効率でつよいもじを使い切る戦略を選びたい人と相性が良い。
例えば3たんごの「コンチュウ,タクジショ,ツカイキリ」は、つよいもじトップ15の「ウンショイクキュリカジチコツタ」のアナグラムである。
何文字まで自動で入れるかは能力や好みに合わせて判断してほしい。

1. 「インショウ」
**ショウイン**(勝因)も可。
`5: 7, 4: 212, 3: 1253, 2: 2285, 1: 2467, 0: 1691`
2. 「キンリョク,シュウカイ」
**筋力集会**とは？
`5: 159, 4: 1293, 3: 2161, 2: 2087, 1: 1618, 0: 597`
3. 「コンチュウ,タクジショ,ツカイキリ」
**昆虫が託児所を使い切り**。B級映画か絵本か、想像力が問われる
`5: 563, 4: 2158, 3: 2027, 2: 1757, 1: 1096, 0: 314`
4. 「チュウタイ,セツジョク,カシキンコ,ラリアット」
**中退した雪辱を貸金庫にラリアット**して晴らすシーンを想像してほしい。そう、心を痛めた彼は鉄塊にラリアットして身体も痛くなるのだ。
`5: 906, 4: 2545, 3: 2146, 2: 1538, 1: 642, 0: 138`
5. 「マジュツシ,オキアガリ,トラクター,ミカンセイ,チョッコウ」
**魔術師は起き上がり、トラクターでミカン星に直行**した。トラクターは魔術で空を飛び、成層圏を突破したのだ。
`5: 1222, 4: 3014, 3: 2315, 2: 1086, 1: 254, 0: 24`
6. 「ガンリョウ,サカオトシ,タスケアイ,セッチャク,マツナミキ,コラージュ」
たんご数が多くて上手い文例が思いつかなかった。丸暗記で頑張ってほしい。
`5: 1867, 4: 3297, 3: 1908, 2: 710, 1: 128, 0: 5`
7. 「ショウイン,テキジュク,トガリハナ,スチャラカ,アミコマセ,ツケオサエ,モータッド」
7たんご入力して0ヒットの正解たんごは「デフォルメ」のみ。
`5: 2552, 4: 3283, 3: 1580, 2: 456, 1: 43, 0: 1`

## たんごルーティン解説

お勧めのたんごルーティンを抽出した方法の概説と補足。
読み飛ばしてもまったく問題ない。

### たんご6選の解説

つよいもじトップ5は「ウンショイ」なので、一番最初にアナグラムの「インショウ」を入れると最もヒット率が高いのだが、次に入れるたんごを「クキュリカ」のアナグラムにしようとしても、入力可能なたんごが作れない。
そしてトップ11～20の「ジチコツタトセアッラ」をアナグラムしても入力可能な2たんごを組み合わせることができない。
そのため少し工夫をしてつよいもじ順に配置した結果がたんご6選だ。

まずトップ11から2語のたんごを生成し、余った1文字を含めた11文字「カジチコツタトセアッラ」で2語の生成を試みた。
しかしヒットしなかったため、トップ1～9とトップ12の「チ」を使って最初の2語を生成し、次の2語を「チ」を除いたトップ10～24で組み、さらに次の2語を残りのトップ34で組んだ。
このように手探りでつよいもじをガチャガチャ並べ替えながら、できるだけ頻出順に並べたものがたんご6選だ。

例えば「タンリョク(胆力)」というたんごが正解の場合、1たんごで3緑、2たんごで4緑、3たんごで4緑1黄で確定する。

### 最頻出1～7たんご

「クキュリカ」のアナグラムでヒットするたんごはないが、「ウンショイクキュリカ」のアナグラムは7パターン[^2]の正解が存在する。
このように頻出順を考慮しなければ大量のパターンを生成できる。
最頻出で紹介したパターンは、個人的に面白かったり覚えやすそうなパターンをピックアップして紹介した。

6たんごならば、トップ30の文字を使い切って0ヒットのたんごは5種類のみとなる。
ただし挑戦回数の半分以上を使い切った状態で1黄などの場合はかなりの苦戦を強いられるだろう。
そして毎回機械的な入力をすることになるので、楽しさをスポイルしない参考程度に利用をとどめることをお勧めする。

## 雑感

実際にたんご6選を使ってみると、全ユーザーの正答率が高い問題にはすこぶる強いと感じた。

しかしその一方で、例えば「ミャクハク」のようにたんご内で文字が重複し、よわいもじを複数含む場合は苦戦を強いられやすい。
また、「チュウ○ウ」のように残り1字となった場合は機械的な入力で貴重な抽出戦法の回数を削られて敗北したりする(した)。

やはりこの記事のセットリストは、スタート時の入力候補を選ぶ指針程度に使い、黄が出たら**早目に位置を確定**し、緑や黄から正解を想像して**候補を絞る**戦略が良いと考えられる。

# おまけ

今回の記事は、ことのはたんごサイトにある`Q_fil_ippan.csv`を正解のたんごと仮定し、`A_data_new.csv`を入力可能なたんごと仮定して計算した。
どちらも2023年3月21日時点のものを利用している。

計算用スクリプトはpythonを使って作成し、バグの有無は考慮していない。
計算結果に誤りがあっても自己責任での利用をお願いする。

## 弁明

特に今回の記事では緑ヒット率を一切考慮していない。
その上、正解たんごの重複やアナグラム(「カイシュウ」と「シュウカイ」など)をまとめて1パターンでカウントしている。
さらにたんご6選も抽出に手作業が入っているため、より効率的なたんごリストはきっと存在する。
理系の人がもっと強力なアルゴリズムを編み出すためにの～みそコネコネすると、実践的で楽しい論理パズルとなるだろう。

## 最頻出2～5たんごの全リスト

既出の組み合わせとは異なるたんごリストを使いたい人は下記が参考になるはず。
なお、1つの単語の中のアナグラムは考慮していない。(例えば「ショウイン」と「インショウ」など)
6,7たんごは計算量が多いため全リスト抽出を断念した。

### 2たんご

```
リュウイン,キカクショ
リュウカン,ショクイキ
カイシュウ,キンリョク
カイリョウ,キンシュク
リュウイキ,カンショク
キュウカイ,シンリョク
リュウカイ,シンキョク
```

### 3たんご

```
チョウイン,キジュツシ,カタクリコ
チュウコン,タクジショ,ツカイキリ
カンコウチ,キジュツシ,タイリョク
シキョウイ,チンジュツ,カタクリコ
ツイショウ,キジュンチ,カタクリコ
ショキュウ,イチコジン,ツクリカタ
コウイシツ,ジュンキョ,カタリクチ
コウタイシ,カキジュン,チョクリツ
コウタイシ,キジュンチ,カツリョク
タコウシキ,ジュンカイ,チョクリツ
リュウシツ,キンカクジ,イタチョコ
ツイチョウ,ジュシンキ,カタクリコ
コウチョク,ジュンカツ,シキリイタ
リョコウキ,シンカイチ,ジュクタツ
リョコウカ,イチジキン,タクシュツ
ツイキュウ,カンタクチ,ジコショリ
ジュウタイ,カシキンコ,チョクリツ
チュウタイ,カシキンコ,ジツリョク
カコキュウ,タンショク,ツチイジリ
カコキュウ,シンジタイ,チョクリツ
コウジュツ,キリシタン,カイチョク
```

### 4たんご

ラリアットは組み合わせやすいらしい。

```
チョウイン,カジツシュ,タコクセキ,ラリアット
ランチョウ,トシコッカ,ジュクセイ,ツキアタリ
チュウコン,ショクセキ,カツジタイ,ラリアット
カイショウ,チンジュツ,タコクセキ,ラリアット
コウチショ,カイキセン,ジュクタツ,ラリアット
シツチョウ,ジュンカイ,タコクセキ,ラリアット
コウカイシ,センタクキ,チョジュツ,ラリアット
コウタイシ,カキジュン,チョクセツ,ラリアット
タコウシキ,ジュンカイ,チョクセツ,ラリアット
タコウシキ,センジュツ,カイチョク,ラリアット
シチジュウ,コカンセツ,タイキョク,ラリアット
カイチョウ,シュンジツ,タコクセキ,ラリアット
セイチョウ,カシキンコ,ジュクタツ,ラリアット
コウチョク,ジカンタイ,セキシュツ,ラリアット
コウチョク,カセンジキ,タイシュツ,ラリアット
チョウラク,ジュンセイ,トシコッカ,ツキアタリ
チョウタツ,カシキンコ,ジュクセイ,ラリアット
キカイコウ,センタクシ,チョジュツ,ラリアット
キコウタイ,チョクセン,カジツシュ,ラリアット
セイリュウ,コンタクト,ジキアラシ,チョッカツ
ジュウタイ,カシキンコ,チョクセツ,ラリアット
ジュウライ,チョクセン,トシコッカ,ツキアタリ
チュウタイ,カシキンコ,セツジョク,ラリアット
ジュウタク,コンキョチ,シセイカツ,ラリアット
コウラクチ,シュッカン,ジョセイト,ツキアタリ
コウラクチ,シュッタン,ジョセイト,ツキアカリ
カコキュウ,シンジタイ,チョクセツ,ラリアット
チュウジキ,コカンセツ,タイショク,ラリアット
セキチュウ,コンショク,カツジタイ,ラリアット
コジュウト,シンチョク,ラッカセイ,ツキアタリ
セカッコウ,トライジン,キョシュツ,チリアクタ
```

### 5たんご

自分は[トラコーマ](https://www.google.com/search?q=%E3%83%88%E3%83%A9%E3%82%B3%E3%83%BC%E3%83%9E)が出題されたら正解できない気がする…。

```
タンショウ,オットセイ,クツミガキ,コラージュ,マチアカリ
チュウシン,キョクジツ,オセッカイ,アリガタミ,トラコーマ
シュンコウ,チョッカツ,ミセジマイ,トラクター,オキアガリ
ミンシュウ,キョクジツ,オセッカイ,タチアガリ,トラコーマ
キンチョウ,シュクジツ,オセッカイ,アリガタミ,トラコーマ
ミンチョウ,トシコッカ,アイキュー,タマオクリ,ジセツガラ
キュウコン,マイショク,トオリミチ,アタッカー,ジセツガラ
ジュウタン,セッショク,ツカイミチ,オキアガリ,トラコーマ
センジュウ,オトシガミ,イタチョコ,クラッカー,アキマツリ
センチュウ,アトシマツ,ジョッキー,タカラガイ,オクリコミ
ショクツウ,キジュンチ,オセッカイ,アリガタミ,トラコーマ
ショウガク,ミチジュン,オセッカイ,ツキアタリ,トラコーマ
キョウシツ,ジュクミン,オセッカイ,タチアガリ,トラコーマ
シッチョウ,ミカンセイ,ジュクタツ,オキアガリ,トラコーマ
シッチョウ,センジュツ,ミカイタク,オキアガリ,トラコーマ
ショウトツ,セキジュン,ミマチガイ,コクラオリ,アタッカー
ショウセツ,チクオンキ,ジュッカイ,アリガタミ,トラコーマ
セッショウ,チンジュツ,ミカイタク,オキアガリ,トラコーマ
ガッショウ,アタマキン,セイカツク,コラージュ,トオリミチ
クチウツシ,ジュンキョ,オセッカイ,アリガタミ,トラコーマ
ジッシュウ,キカイオン,チョクセツ,アリガタミ,トラコーマ
ミッシュウ,チョクセン,カツジタイ,オキアガリ,トラコーマ
ミッシュウ,キカイオン,セツジョク,タチアガリ,トラコーマ
ミッシュウ,ジカンタイ,チョクセツ,オキアガリ,トラコーマ
ミッシュウ,カセンジキ,チョクリツ,アオタガイ,トラコーマ
イキョウト,センジュツ,マチオコシ,クラッカー,アリガタミ
キョクウチ,シュンジツ,オセッカイ,アリガタミ,トラコーマ
チクジョウ,ミカンセイ,シュッタツ,オキアガリ,トラコーマ
チョクツウ,ジュシンキ,オセッカイ,アリガタミ,トラコーマ
ガクチョウ,キリシタン,オットセイ,コラージュ,アマツカミ
キョウジツ,ミンシュク,オセッカイ,タチアガリ,トラコーマ
セッキョウ,カントリー,マチオコシ,アライガミ,ジュクタツ
ミツリョウ,カセンジキ,ガッシュク,タチアオイ,トラコーマ
カツジョウ,チクオンキ,シュッセイ,アリガタミ,トラコーマ
チョッコウ,ミカンセイ,マジュツシ,トラクター,オキアガリ
セイリツウ,アタマキン,オトシガミ,チョッカク,コラージュ
セイオウカ,チョッキン,シュクジツ,アリガタミ,トラコーマ
オウジュク,チョッキン,シセイカツ,アリガタミ,トラコーマ
キュウジツ,シンチョク,オセッカイ,アリガタミ,トラコーマ
キュウジツ,ショクミン,オセッカイ,タチアガリ,トラコーマ
キュウセツ,ジョイント,マチオコシ,クラッカー,アリガタミ
タッキュウ,カントリー,マチオコシ,セツジョク,アライガミ
カッチュウ,シンジツミ,セキリョク,アオタガイ,トラコーマ
ジュッコウ,マーガリン,タキオトシ,チョクセツ,カラミアイ
チュウミツ,ジカンタイ,セッショク,オキアガリ,トラコーマ
チュウミツ,カセンジキ,リッショク,アオタガイ,トラコーマ
チュウガタ,ミカンセイ,アトシマツ,ジョッキー,コクラオリ
セッチュウ,ショクミン,カツジタイ,オキアガリ,トラコーマ
アオタウリ,ミチジュン,シセイカツ,ガッキョク,トラコーマ
オウセツマ,ミチジュン,アトショリ,コイガタキ,クラッカー
```

### 6たんご(一部抜粋)

```
シュウセン,チョッケツ,アライガミ,サクオトコ,キャスター,カナマジリ
マンシュウ,イタチョコ,リャクセツ,サーキット,カオナジミ,アケガラス
センリョウ,シュッサツ,アイチャク,タスキガケ,カオナジミ,トラコーマ
リョウアン,サイシュツ,セッチャク,タスキガケ,カオナジミ,トラコーマ
リョウガン,シュッサツ,タスケアイ,チャクセキ,カオナジミ,トラコーマ
リョウガン,サカオトシ,タスケアイ,セッチャク,マツナミキ,コラージュ
センチョウ,シュッケツ,アライガミ,サクオトコ,キャスター,カナマジリ
センチョウ,シラタマコ,ツカミアイ,ジュッサク,スキャナー,トオリガケ
センチョウ,アナサガシ,ミカイケツ,タマオクリ,スキャット,コラージュ
センチョウ,アナサガシ,タカッケイ,リャクジュ,オスミツキ,トラコーマ
マンチョウ,オトシガミ,タスケアイ,セッキャク,コラージュ,サカナツリ
チョウケン,マジュツシ,ラッカセイ,サクオトコ,スキャナー,アリガタミ
…
```

## 計算用スクリプト

解説のない雑なスクリプトなので参考になる人のみどうぞ。
実行するには[jaconv](https://pypi.org/project/jaconv/)パッケージが必要。

```
import itertools

# 正解のたんごから、文字ごとに出現数をカウントしてリスト化する
def get_words_count():
    import jaconv  # 要 pip install jaconv

    chars = {}
    with open("Q_fil_ippan.csv", encoding="utf8") as f:
        for l in f.readlines():
            s = l.split(",")[1].replace("\n", "")
            s = jaconv.hira2kata(s) # 正解のたんごにひらがなが混入しているためカナ変換を行う
            for c in s:
                if c in chars.keys():
                    chars[c] = chars[c] + 1
                else:
                    chars[c] = 1

    chars = sorted(chars.items(), key=lambda x:x[1], reverse=True)
    #print(chars)
    return chars

# 入力可能なたんご一覧をリストで取得する
def get_tango_list():
    dict = {}
    with open("A_data_new.csv", encoding="utf8") as f:
        for line in f.readlines():
            w = line.replace("\n", "")
            s = "".join(sorted(w))
            hasSameChars = False
            for i in range(len(s) - 1):
                #同一の文字を含む
                if s[i] == s[i+1]:
                    hasSameChars = True
                    break
            if not hasSameChars:
                dict[s] = w
    return dict

# 正解のたんご一覧にヒットする文字の割合を表示する
def show_rate(words):
    import jaconv
    dict = {}
    with open("Q_fil_ippan.csv", encoding="utf8") as f:
        for line in f.readlines():
            w = line.replace("\n", "")
            w = w.split(",")[1]
            w = jaconv.hira2kata(w)
            hit = 0
            for c in w:
                if c in words:
                    hit = hit + 1
            dict[w] = hit
            # 0ヒットのたんごを表示
            #if hit == 0:
            #    print(w)
    #集計
    res = {}
    for h in dict.values():
        if h in res:
            res[h] = res[h] + 1
        else:
            res[h] = 1
    # 表示
    for i in reversed(range(0, 6)):
        print(f"{i}: {res[i]}", end=", ")
    print("")

# 正解のたんご一覧をリストで取得する
def get_fil_tango_list():
    dict = {}
    with open("Q_fil_ippan.csv", encoding="utf8") as f:
        for line in f.readlines():
            w = line.replace("\n", "")
            w = w.split(",")[1]
            s = "".join(sorted(w))
            hasSameChars = False
            for i in range(len(s) - 1):
                #同一の文字を含む
                if s[i] == s[i+1]:
                    hasSameChars = True
                    break
            if not hasSameChars:
                dict[s] = w
    return dict

# sをアナグラムしてヒットするたんごを返す(例えば「キョクシン」「キンショク」「ョンクキシ」などを入力した場合は「シンキョク」を返す)
def find_tango(s, tangoes):
    s = "".join(sorted(s))
    if s in tangoes.keys():
        return tangoes[s]
    else:
        return None

# source全体をアナグラムして、tangoesにヒットするたんご群を再帰的に取得する
def get_matched_words(source, tangoes, words, min_words_count):
    if len(words) >= min_words_count * 5:
        #s = "".join(sorted(words)) #文字列区切り
        s = sorted([words[i:i+5] for i in range(0, len(words), 5)])
        if not s in exist_keys:
            exist_keys.append(s)
            print(",".join([words[i:i+5] for i in range(0, len(words), 5)]))
        return
    if len(source) < 5:
       return
 
    combs = list(itertools.combinations(source, 5))
    for comb in combs:
        word = "".join(comb)
        res = find_tango(word, tangoes)
        if res == None:
            continue
        else:
            next_words = words + res
            next_source = source.translate(str.maketrans('', '', word))
            get_matched_words(next_source, tangoes, next_words, min_words_count)

#tangoes = get_tango_list()    # 入力可能なたんご一覧を作りたい場合
tangoes = get_fil_tango_list() # 正解のたんご一覧を作りたい場合
taples = get_words_count()     # 正解から出現数の多い単語を抽出
ll = "".join([t[0] for t in taples]) # 出現数の多い順に並べ替え
print(ll)  #ウンショイクキュリカジチコツタトセアッラガオーミマャスケサナテドモハエダロヒニレフブバワギルゴソノメヤヨビホボゲグムズネザデユゼヘベゾヅパプピィポヌペェァォヂ
s = ll[0:15]               # この例では最頻出15文字で3たんご生成する
#s = ll[9:23]              # アタッカー,ジセツガラ
#s = "ウンショイクキュリカ"  # シンキョク,イチリュウ
#s = "コトオミマャスケサナテドモハ" # モテオトコ,サスケハナ
#s = "シンキョクイチリュウアタッカージセツガラサスケハナモテオトコ" # 0ヒットの場合は マワレミギ,ドロマミレ,フルエゴエ,フィヨルド,ヌレネズミ,デフォルメ,ミミズバレ,ドロマミレ,ドブネズミ,ミズエノグ,ミズグルマ のいずれか
show_rate(s)
exist_keys = []
get_matched_words(s, tangoes, "", len(s) // 5)
```
## マイたんごの評価

個人的なマイたんごのルーティンは「シュクジョ」「ヨーロッパ」「オベントウ」「ハナヤマタ」「スチャラカ」で、成績としては
`5: 487, 4: 1823, 3: 2547, 2: 1946, 1: 931, 0: 181`
だった。

長らくお気に入りで使っているが、最頻出の5たんご(`5: 1222, 4: 3014, 3: 2315, 2: 1086, 1: 254, 0: 24`)と比べるとまだまだである。
下記のコードでマイたんごを連結して入力すると、どのくらい文字を同定できるか計測できる。

```
s = "シュクジョヨーロッパオベントウハナヤマタスチャラカ"
show_rate(s)
```

# さいごに

暇なpythonユーザは独自のマイたんごで試してみると面白いかもしれない。
繰り返しになるが、スポイラーやチートに頼りすぎると創意工夫する楽しさがなくなっちゃう可能性に注意し、自己責任で利用してもらいたい。

最後に、とてもエキサイティングで楽しく日本語のアプリを作って無料で遊ばせてくれる、ことのはたんごの作者に心より感謝を。

それではこのスポイラーをうのみにせず、独自にアレンジや試行錯誤して良いことのはたんごを！