不戦勝対応のシングルエリミネーション表を作成
5チームなら8枠の表になり、上位シード3チームが不戦勝、1回戦は1試合、決勝まで3ラウンドです。同じリストからは毎回同じ組み合わせが作られます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 参加者
- North Stars, River Hawks, City Lions, Valley Foxes, Coastal Bears
- 参加者数
- 5
- トーナメント表の規模
- 8
- 不戦勝の数
- 3
- ラウンド数
- 3
順序付けた参加者名の一覧を、完全なシングルエリミネーション表へ変換できます。参加人数を収容できる最小の2の累乗を計算し、必要な不戦勝だけを追加して、決勝までの全試合に番号を付けます。無作為な抽選は行いませんので、同じ一覧からは常にまったく同じ対戦表が生成されます。
シード順に参加者一覧をご用意ください
2名以上の参加者名を、対戦表で採用するシード順に並べてください。先頭が第1シード、次が第2シードとなり、以後も同様に番号が割り当てられます。個人、チーム、クラブ、学校、企画など、さまざまな競技者名を使用できますが、各項目には空でない文字列が必要です。
登録情報からコピーした表示を整えるため、名前の前後にある空白は取り除かれます。別の参加者が同じ表示名を持つ場合もあるため、重複名は削除されません。識別が必要な場合は、都市名、部門名、チームコードなどを名前に加えてください。
本機能は一覧の並べ替え、ランキングの参照、無作為化を行いません。そのため、同じ入力からは常に同じ試合計画が得られます。順位で配置を決める場合は、呼び出し前に名前を順位順へ整えてください。
選考規則と対戦表の構築を分けることで、各大会が公開済みの独自規則を隠れた仮定なしで適用できます。
対戦表の規模、試合、不戦勝をご確認ください
シングルエリミネーション表は、2、4、8、16のような2の累乗の枠数で構成されます。参加人数がその中間にある場合、全員を収容できる最小の2の累乗まで枠を広げ、その差を不戦勝数とします。たとえば参加者が5名なら8枠が必要となり、上位3名は初戦を行わずに進み、残る2名が最初の実試合を行います。
不戦勝は入力された上位シードから決定的に割り当てられ、それ以外の参加者は入力順で組み合わされます。初戦の各試合には名前とシード番号が入り、不戦勝の場合は自動的に進出する参加者も示されます。後続ラウンドには「試合1の勝者」のような参照が入るため、結果を推測せずに接続できます。
応答には参加者数、枠数、不戦勝数、ラウンド数も含まれ、検証や画面上の要約表示に利用できます。
イベント運営の流れに組み込めます
返されるラウンド情報は、対戦表画面、印刷用日程、試合データベース、運営チェックリストなどにご利用いただけます。ラウンドと試合は返却順に処理してください。初戦では参加者名を直接表示し、不戦勝がある場合は得点を求めず、指定された参加者を次へ進めます。
後続ラウンドでは、各参照を該当試合の勝者に置き換えてください。本機能が作成するのは構造のみです。得点の収集、勝者の決定、会場の割り当て、棄権処理、再シードは行いません。
大会規則を明確に保つため、これらは利用側のアプリケーションで管理してください。生成された表を変更しない初期計画として保存し、試合番号ごとに結果を別途記録すると、棄権や訂正があっても監査履歴を維持できます。順序を変えると表も変わるため、公開前に最終一覧をご確認ください。
活用例
地域大会を運営する
確定した申込者一覧を、運営担当者が公開して使用できる番号付き対戦表へ変換します。
イベント管理ソフトに対戦表を追加する
登録締切時に、予測可能な試合情報と勝者の進行先参照を生成します。
社内競技を計画する
チーム、ゲーム、提案、実演、授業内コンテスト向けに明確な勝ち抜き構造を作成します。
よくある質問
不戦勝はどのように計算されますか?
全員を収容できる最小の2の累乗まで枠を広げ、空いた枠を不戦勝として扱います。
不戦勝は誰に割り当てられますか?
決定的な規則により、送信されたシード順の上位参加者から割り当てられます。
参加者名は無作為に並べ替えられますか?
いいえ、無作為化は行いません。抽選が必要な場合は、送信前に一覧を並べ替えてください。
同じ名前の参加者を登録できますか?
はい、重複する表示名も保持されます。各項目はシード番号で区別できます。
得点や勝者も管理できますか?
いいえ、初期対戦表と進行先参照のみを作成します。結果は利用側アプリケーションで管理してください。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/game/tournament-bracket-build \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"participants":["North Stars","River Hawks","City Lions","Valley Foxes","Coastal Bears"]}'const res = await fetch("https://api.kit.forhosting.com/game/tournament-bracket-build", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"participants": [
"North Stars",
"River Hawks",
"City Lions",
"Valley Foxes",
"Coastal Bears"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/game/tournament-bracket-build",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"participants": [
"North Stars",
"River Hawks",
"City Lions",
"Valley Foxes",
"Coastal Bears"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/game/tournament-bracket-build", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"participants":["North Stars","River Hawks","City Lions","Valley Foxes","Coastal Bears"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"participants":["North Stars","River Hawks","City Lions","Valley Foxes","Coastal Bears"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/game/tournament-bracket-build", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"participants": [
"North Stars",
"River Hawks",
"City Lions",
"Valley Foxes",
"Coastal Bears"
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "game.tournament_bracket_build",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
入力順はシード順として扱われるため、結果は安定しており、イベントページ、登録システム、競技用APIなどで容易に再利用できます。
イベント運営の流れに組み込めます
自動化されたAPIリクエストの料金は$0.002です。
技術的な質問
参加者は何名必要ですか?
2名以上の参加者名が必要です。これより少ない一覧ではinvalid_inputエラーが返されます。
APIリクエストの料金はいくらですか?
APIリクエスト1件の料金は$0.002です。ブラウザーでは同じ決定的ロジックをローカル実行できます。