スクラブル単語得点計算(文字・単語倍率対応)
英語版スクラブルの標準タイル表に基づいて単語の基本点を計算し、ボーナスマスによる変化を詳しく確認できます。A から Z の文字で単語を入力し、2倍・3倍の文字位置と、必要に応じて2倍・3倍の単語倍率を指定してください。各タイルの元の点数、適用倍率、小計、最終得点を表示します。無効な文字や矛盾する倍率指定には、明確なエラーを返します。
無料で実行
処理はブラウザ内で完結します。ファイルは送信されません。無料でご利用いただけます。
単語を入力して基本点をご確認ください
A から Z の文字で構成された空でない単語をご入力ください。点数表を参照する前に大文字へ正規化するため、大文字と小文字の得点は同じです。英語版の一般的な配点を使用し、A、E、I、L、N、O、R、S、T、U などの頻出文字は1点、希少な文字は8点または10点になります。基本点は、ボーナスマスを考慮する前のタイル印字点の合計です。詳細な文字一覧には、正規化された文字、0から始まる位置、元の点数、倍率、獲得点が表示されます。この機能はタイルを採点するもので、辞書への収録は確認しません。そのため、文字列として有効であれば、特定の辞書で認められない語にも点数が付きます。空白、ハイフン、アポストロフィ、数字、アクセント付き文字、絵文字などは標準の A–Z タイルではないため拒否されます。注記や前後の空白を付けず、置いた文字だけをご入力ください。
文字倍率と単語倍率を正しい順序で適用してください
文字倍率は、0から始まる位置と 2 または 3 の倍率で指定します。位置 0 は最初の文字、位置 1 は2番目の文字を示します。文字2倍・3倍マスは、その位置のタイルだけを変更します。調整済みの文字点をすべて足して単語倍率前の小計を求め、その小計全体に 1、2、3 のいずれかの単語倍率を適用します。この順序は重要です。たとえば文字を先に3倍し、その後に単語2倍で新しい小計全体を2倍します。同じ位置は1回だけ指定できます。同じ文字を指す指定が複数ある場合、1つのマスに複数のボーナスは存在できないため、リクエストを拒否します。単語の範囲外の位置も無効です。単語ボーナスがない場合は 1 を指定するか省略してください。ボーナスと小計が別々に返るため、最終値から逆算せずに計算をご確認いただけます。
盤面情報が必要なルールをご理解ください
結果は配置の基本得点であり、盤面全体を判定するものではありません。指定した文字とボーナスは計算しますが、隣接タイル、交差語、盤面形状、ラックの内容、以前の手番で使用済みのマスは調べません。通常、ボーナスマスは初めてタイルを置いたときだけ有効ですので、今回新たに覆った倍率だけをご指定ください。また、ラックの7枚すべてを使った場合に一般的に与えられる50点は自動加算しません。該当する場合は、採用ルールを確認したうえで別途加算してください。通常の文字だけでは0点のブランク由来か判断できないため、ブランクタイルも表現しません。A–Z の各文字を印字済みタイルとして扱います。この範囲に限定することで、結果は常に同一で検証しやすくなります。単語の確認、配点学習、練習画面の作成、採点ソフトのテストなどにご利用いただけます。
活用例
盤面の計算を確認
手番を記録する前に、単語の小計とボーナスマス適用後の得点をご確認いただけます。
タイル配点を学習
各文字の寄与と、希少文字が得点を高める理由を分かりやすく示せます。
採点機能をテスト
アプリのテストや採点画面向けに、再現可能な明細付き結果を生成できます。
よくある質問
API リクエスト1回の料金はいくらですか?
API は1回 $0.002 です。同じ確定的な計算をブラウザーでは無料でご利用いただけます。
小文字も入力できますか?
はい。大文字と小文字の点数は同じで、結果の単語は大文字に正規化されます。
有効な単語かどうかも確認しますか?
いいえ。A–Z のタイル列を採点しますが、辞書や大会用単語リストは参照しません。
文字倍率と単語倍率はどのように組み合わせますか?
最初に各文字の倍率を適用し、その後で調整済み小計全体に単語倍率を掛けます。
7枚ボーナスやブランクタイルも含まれますか?
いいえ。ラックボーナスは別途加算し、通常の文字だけでは0点のブランクを表現しないでください。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/game/scrabble-word-score \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"word":"QUIZ"}'const res = await fetch("https://api.kit.forhosting.com/game/scrabble-word-score", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"word": "QUIZ"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/game/scrabble-word-score",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"word": "QUIZ"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/game/scrabble-word-score", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"word":"QUIZ"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"word":"QUIZ"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/game/scrabble-word-score", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"word": "QUIZ"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "game.scrabble_word_score",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_word_length | 100 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |