辞書と照合して作れる単語をすべて探すアナグラム解析
このアナグラム解析は、ご指定の辞書と使用可能な文字を照合し、同じ文字を与えられた回数より多く使わずに作れる単語をすべて返します。大文字と小文字は区別せず、文字欄の空白は無視します。また、文字の一部だけで作れる短い単語も対象です。重複候補を除き、結果を常に同じ順序で並べるため、単語ゲーム、語彙学習、パズル制作、再現可能な自動処理に安心してご利用いただけます。
無料で実行
パズルの文字と辞書をご用意ください
まず、ラックや手札、文字プールにある文字をすべて入力してください。同じ文字の個数には意味があります。2 個あれば2 回使えますが、3 回目は使えません。文字欄に含まれる空白、タブ、改行は無視されるため、見やすいように分けて貼り付けても計算は変わりません。次に、候補となる単語を辞書の一覧として指定してください。この解析は外部の単語集を参照せず、ゲームで認められる語を推測することもありません。お客様が渡した辞書だけを基準にします。そのため、独自ルール、授業用の語彙、専門用語、大会の公式語彙などに合わせられます。空でない各項目を個別に検査します。候補は全ての文字を使っても、一部だけを使っても構いませんので、5 文字の集合から5 文字のアナグラムだけでなく、短い単語も見つかります。空の項目は結果に含めません。句読記号は候補と使用可能文字の両方に実際に含まれる場合だけ残してください。自動削除されず、使用する1 文字として扱われます。
照合方法、重複、並び順をご確認ください
照合前に文字列を正規化し、大文字と小文字の違いを無視するため、表記の大小が異なっても一致します。処理では、使用可能な各文字の出現回数表を作り、候補ごとにその個数を新しく複製して検査します。存在しない文字や、すでに使い切った文字が必要になった時点で、その候補を除外します。この方式により、必要な種類の文字はそろっていても、同じ文字を多く要求する単語が誤って採用されることを防ぎます。大文字小文字または前後の空白だけが異なる同等項目は1 件にまとめ、最初に採用した辞書表記を維持します。結果は長い単語から並ぶため、長い語ほど高得点になるゲームで確認しやすく、同じ長さならアルファベット順にして安定させます。並べた単語一覧と件数の両方を返すので、アプリは再集計せず表示と要約を行えます。同一入力なら回答も常に同一であり、乱数、通信、変更される外部辞書には左右されません。
ゲームや自動処理で安定して活用できます
対話型のパズルでは、現在の文字を貼り付け、適切な辞書を指定して、長い候補からご確認ください。システム連携では同じ2 項目を送り、返された単語一覧と件数をご利用いただけます。指定辞書だけを評価するため、言語、年齢層、大会版、製品用語ごとに別の一覧を保持しても、処理自体を変更する必要はありません。パズル制作者にも便利です。文字プールと想定回答一覧を与えることで、意図した正解に加えて予期しない別解も公開前に確認できます。決定的な計算なので、テストに組み込み、長期間にわたって結果を比較できます。安定した実行のため、文字欄は空白以外で最大 256 文字、辞書は最大 10,000 項目、各候補は空白以外で最大 128 文字です。文字が未指定、空、または空白だけの場合は、誤解を招く空結果ではなくエラーになります。辞書の形式が違う場合や文字列以外の項目がある場合も明確な入力エラーとなり、無効なデータと、候補が0 件の正しいパズルを呼び出し側で区別できます。
活用例
有効なゲーム手を探す
大会または独自ルールの正確な辞書と手札を照合し、長い候補から確認できます。
語彙練習を作成する
授業専用の単語一覧を使い、与えた文字から作れる正解をすべて生成できます。
アナグラム問題を検証する
想定した正解を確かめ、公開前に意図しない短い別解を発見できます。
よくある質問
すべての文字を使う必要がありますか?
いいえ。空でない任意の部分集合を使えますが、各文字を与えられた個数より多く使うことはできません。
大文字と小文字で結果は変わりますか?
変わりません。照合では区別しませんが、辞書で最初に採用された表記を出力に残します。
内蔵辞書を使用しますか?
使用しません。ご指定の辞書だけが基準となるため、お客様が選んだ語彙に沿った結果になります。
重複した辞書項目はどうなりますか?
同等の項目は1 件だけ返し、最初に採用した項目の表記を保持します。
結果はどの順番ですか?
長い単語を先にし、同じ長さの単語はアルファベット順に並べます。
料金はいくらですか?
API の1 回のリクエストは $0.002 です。同じ決定的な解析をブラウザでも実行できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/game/anagram-solver-dictionary \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"letters":"Trace","dictionary":["trace","crate","react","cat","tree","ace","race"]}'const res = await fetch("https://api.kit.forhosting.com/game/anagram-solver-dictionary", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"letters": "Trace",
"dictionary": [
"trace",
"crate",
"react",
"cat",
"tree",
"ace",
"race"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/game/anagram-solver-dictionary",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"letters": "Trace",
"dictionary": [
"trace",
"crate",
"react",
"cat",
"tree",
"ace",
"race"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/game/anagram-solver-dictionary", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"letters":"Trace","dictionary":["trace","crate","react","cat","tree","ace","race"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"letters":"Trace","dictionary":["trace","crate","react","cat","tree","ace","race"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/game/anagram-solver-dictionary", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"letters": "Trace",
"dictionary": [
"trace",
"crate",
"react",
"cat",
"tree",
"ace",
"race"
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "game.anagram_solver_dictionary",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_letters | 256 |
max_items | 10000 |
max_word_length | 128 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |