アナグラムを同じ文字ごとにオンラインでグループ化
アナグラム分類ツールは単語の一覧を受け取り、大文字と小文字の違いを無視して、同じ文字からできている項目をまとめます。各単語の元の表記と最初に現れた順序はそのまま保たれるため、結果を入力一覧と簡単に比較できます。言葉遊びの候補整理、語彙集の確認、教材の作成に使えるほか、独自の照合処理を保守することなく、文章処理の流れへ予測可能な分類工程を加えられます。
無料で実行
アナグラムのグループを判定する仕組み
文字を並べ替えたときに、大文字と小文字を区別しない同一の文字列になる2つの単語は、同じアナグラムグループに属します。本ツールは、受け取った各単語を小文字に変換し、文字単位に分けて並べ替え、再び連結することで、安定した署名を作成します。署名が一致する単語は同じ集合に入ります。たとえば「Listen」「silent」「enlist」は、文字の順序や大文字表記が異なっても同じ署名を共有します。返却値では入力時の表記を維持し、正規化は比較にだけ利用します。重複する文字も数えるため、「tap」と「tape」、「pool」と「pol」は一致しません。句読点、空白、アクセント付き文字も文字として扱い、自動では削除しません。この明示的な規則により結果は決定的になり、見えない整形処理で入力の意味が変わることを防げます。空白の除去、アクセントの統一、句読点の削除が必要な場合は、単語を送信する前に一覧を正規化してください。
入力の準備と結果の読み方
words フィールドには、空ではない文字列を1つ以上含む配列を指定してください。異なる文字署名ごとに、返却される groups 配列内へ1つの配列が作られます。各グループは最初のメンバーが入力に現れた順に並び、グループ内の単語も元の入力順を保ちます。そのため実行を繰り返しても結果が安定し、テスト、書き出し、確認画面に利用できます。対応するアナグラムがない単語も1要素のグループとして残ります。省略すると元の一覧の情報が失われるためです。比較では大文字と小文字を無視しますが、出力の表記は書き換えません。「Tea」と「eat」は一緒に分類され、その表記のまま返ります。words がない場合、配列でない値、空の一覧、空文字列、文字列以外の要素、公開上限を超える要求は拒否されます。不正な値だけを黙って捨てた部分結果ではなく、入力エラーとして通知されます。
決定的な分類を処理フローで使う方法
アナグラム分類は、文字構成に応じて項目を分割したい場面で役立ちます。言葉遊びのサービスでは、候補手を表示する前に辞書の一部をまとめられます。教育現場では、文字の並べ替えを見つける練習問題を作成できます。データ品質の工程では、文字順だけが異なる項目を見つけながら、一致しない項目も確認用に残せます。アルゴリズムはネットワーク、モデル推論、乱数、現在時刻を一切使わないため、同じ入力からは常に同じ JSON 結果が得られます。結果を比較、キャッシュ、監査する自動処理にも適しています。無料ページではブラウザー内でローカルに処理され、API では同じ純粋な解決処理を1回 $0.002 で利用できます。非常に大きな辞書は上限内のバッチに分け、バッチをまたぐグループをアプリケーション側で統合する必要があるか判断してください。通常の一覧なら、1回の要求で表示や後続処理に使える完全なグループを取得できます。
活用例
言葉遊びの候補を整理
同等の手やパズルの答えを表示する前に、候補一覧を文字構成ごとに分類します。
語学練習問題を作成
語彙一覧を、並べ替え、綴り、パターン認識の学習に使える安定したグループへ変換します。
文章データを検査
一致しない単語を失わずに、同じ文字が別の順序で並ぶ項目を見つけます。
よくある質問
大文字と小文字は区別されますか?
いいえ。グループ作成時には区別しませんが、出力では各単語の元の表記が保たれます。
対応する単語がない項目も含まれますか?
はい。入力全体を表すため、対応するアナグラムがない単語も1要素のグループとして返されます。
空白や句読点は無視されますか?
いいえ。文字として扱われます。単語の定義上不要であれば、要求前に正規化または削除してください。
一覧が空の場合はどうなりますか?
少なくとも1語が必要なため、要求は無効な入力としてエラーになります。
単語の順序は変更されますか?
いいえ。グループは各署名の初出順に並び、メンバーも入力時の順序を保ちます。
API の利用料金はいくらですか?
API は1回 $0.002 です。同じ決定的な分類処理を、このページのブラウザー上でも利用できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/text/anagram-groups \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"words":["listen","silent","enlist","stone","tones","Apple"]}'const res = await fetch("https://api.kit.forhosting.com/text/anagram-groups", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"words": [
"listen",
"silent",
"enlist",
"stone",
"tones",
"Apple"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/anagram-groups",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"words": [
"listen",
"silent",
"enlist",
"stone",
"tones",
"Apple"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/anagram-groups", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"words":["listen","silent","enlist","stone","tones","Apple"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"words":["listen","silent","enlist","stone","tones","Apple"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/anagram-groups", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"words": [
"listen",
"silent",
"enlist",
"stone",
"tones",
"Apple"
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.anagram_groups",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_items | 10000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |