LLM 24問テストスイート
意地悪・引っかけ / 論理・推論 / コーディング・技術 / 日本語力の4カテゴリ、各6問×10点=240点満点。 各問題の正解・解説・LLMの典型ミスを掲載。
加えて Round E(難問コード) を別枠 50点として用意しています。上位モデルがコード部門で満点に張り付いて区別できなくなったため、 「一見正しいコードを厳密にシミュレートさせる」設問で天井を上げたものです。 合計240点には加算していません(過去モデルとの比較可能性を保つため)。 飽和したら差し替える可変枠として運用します。
📊 スコア履歴
| モデル | テストHW | 日付 | A | B | C | D | E | 推論速度 | 合計 | ランク |
|---|---|---|---|---|---|---|---|---|---|---|
| Haiku 4.5 + Opus Advisor | Anthropic API | 2026-04-11 | 60 | 57 | 60 | 57 | — | — | 234/240 | S+ |
| claude-fable-5 | Anthropic API | 2026-06-10 | 47 | 60 | 60 | 57 | — | — | 224/240 | S |
| ox-alpha | — | 2026-08-24 | 50 | 60 | 57 | 57 | 43/50 | 25 tok/s | 224/240 | S |
| GPT-5.4 mini | OpenAI API | 2026-03-18 | 50 | 58 | 60 | 55 | — | 168 tok/s | 223/240 | S |
| Claude Haiku 4.5 単体 | Anthropic API | 2026-04-11 | 52 | 55 | 57 | 57 | — | — | 221/240 | S |
| gemma4:e4b | Radeon 780M (iGPU) | 2026-03 | — | — | — | — | — | 10 tok/s | 204/240 | A+ |
| gemma4:e4b | RTX 4070 Ti | 2026-04-13 | 35 | 57 | 53 | 55 | — | 102 tok/s | 200/240 | A |
| Ornith-1.5-9B Q4_K_M | — | 2026-08-30 | — | — | — | — | — | — | 199/240 | A |
| Nemotron-9B-JP | RTX 4070 Ti | 2026-02-28 | 50 | 51 | 57 | 40 | — | 64 tok/s | 198/240 | A |
| gemma4:e2b | Radeon 780M (iGPU) | 2026-03 | — | — | — | — | — | 10 tok/s | 196/240 | A |
| gemma4:e2b | RTX 4070 Ti | 2026-04-13 | 35 | 57 | 57 | 45 | — | 164 tok/s | 194/240 | A |
| qwen3.5:4b | RTX 4070 Ti | 2026-03-10 | 42 | 57 | 57 | 38 | — | 102 tok/s | 194/240 | A |
| GPT-5.4 nano | OpenAI API | 2026-03-18 | 43 | 47 | 57 | 43 | — | — | 190/240 | A |
| gemma4:12b | — | 2026-06-05 | 45 | 49 | 47 | 45 | — | 48 tok/s | 186/240 | A |
| qwen3:4b | RTX 4070 Ti | 2026-03-08 | 57 | 57 | 37 | 31 | — | 105 tok/s | 182/240 | A |
| qwen3:4b | RTX 4070 Ti | 2026-02-28 | 55 | 57 | 55 | 13 | — | 128 tok/s | 180/240 | A |
| qwen3.5:9b | RTX 4070 Ti | 2026-03-14 | 43 | 50 | 52 | 35 | — | 5 tok/s | 180/240 | A |
| phi4:14b | RTX 4070 Ti | 2026-03-17 | 43 | 37 | 50 | 45 | — | 4 tok/s | 175/240 | B |
| qwen3:8b | RTX 4070 Ti | 2026-02-28 | 53 | 30 | 50 | 42 | — | 12 tok/s | 175/240 | B |
| gemma4:12b (llama.cpp 初期ビルド・参考値) | RTX 4070 Ti | 2026-06-04 | 40 | 52 | 52 | 29 | — | 52 tok/s | 173/240 | B |
| gemma4-coder-q4 | RTX 4070 Ti | 37 | 36 | 55 | 32 | — | — | 160/240 | B | |
| Swallow-8B | RTX 4070 Ti | 2026-03-14 | 27 | 20 | 46 | 28 | — | 7 tok/s | 121/240 | C |
| Bonsai-8B (1-bit / 1.15GB) | RTX 4070 Ti | 2026-04-07 | 10 | 32 | 47 | 9 | — | 189 tok/s | 98/240 | C |
| deepseek-r1:7b | RTX 4070 Ti | 2026-03-15 | 30 | 31 | 20 | 13 | — | 7 tok/s | 94/240 | D |
| qwen3:1.7b | Radeon 780M iGPU | 2026-07-26 | 10 | 0 | 25 | 28 | 15/50 | 12 tok/s | 63/240 | D |
バットとボール問題
問題
バットとボールを合わせると110円。バットはボールより100円高い。ボールはいくら?
✓ 正解
ボール = 5円(バット = 105円)
💡 解説
ボール=x、バット=x+100 とおくと x+(x+100)=110 → 2x=10 → x=5。直感で「10円」と答えてしまうのが典型的な罠。
⚠ 典型ミス
「110÷2=55、55-100=10円」と誤って計算する。バットとボールの差が100円であることを無視している。
太郎の家族問題
問題
太郎には3人の姉がいます。それぞれの姉には1人の弟がいます。兄弟姉妹は全部で何人ですか?
✓ 正解
4人(姉3人 + 太郎1人)
💡 解説
「それぞれの姉の弟」は全員共通で太郎1人のこと。姉が3人いても弟は1人。合計4人。
⚠ 典型ミス
「姉3人×1人の弟=弟3人、合計6人や7人」と誤計算する。
生きている人の墓
問題
法的に生きている人が、自分のお墓に自分で入ることは許可されていますか?
✓ 正解
許可されている(物理的に立ち入ることは合法)
💡 解説
「お墓に入る」=物理的に墓地の区画を訪問すること。生前墓(寿陵)を購入・参拝する行為は日本でも一般的で完全に合法。「入る=埋葬される」という思い込みが罠。
⚠ 典型ミス
「埋葬は死後のみ合法なので不可」と即答。問いの「入る」を「埋葬される」と無意識に変換している。
りんごを「取った」
問題
花子はりんごを「取りました」。りんごの行方として最も適切なものはどれですか? 1. 花子が持っている 2. 誰かにあげた 3. テーブルに置いた 4. わからない
✓ 正解
4. わからない
💡 解説
「取る」は「手に取る・盗む・採取する・摂取する」など多義語。文脈がない限り花子がりんごをどうしたか確定できない。この問題は言語の曖昧性を問うひっかけ。
⚠ 典型ミス
「取る」の最も一般的な意味(持ち上げる・持つ)に引っ張られ「1. 花子が持っている」を即答。
月曜日は何回?
問題
2026年3月1日(日曜日)から3月31日まで、月曜日は何回ありますか? ※2026年3月1日は日曜日です。
✓ 正解
5回(3月2, 9, 16, 23, 30日)
💡 解説
3月1日が日曜日なので、最初の月曜日は3月2日。以降7日ごとに9, 16, 23, 30日。31日は火曜日なので月曜は5回。
⚠ 典型ミス
4回と誤答(31日を確認せず30日で止めてしまう)。
医者と息子
問題
父親と息子が交通事故に遭いました。父親は即死し、息子は重傷で病院に搬送されました。担当医は息子の顔を見て「この子は私の息子だ!」と言いました。どういうことですか?
✓ 正解
担当医は息子の母親(女性医師)
💡 解説
「医師=男性」という無意識のジェンダーバイアスが混乱を生む。担当医が女性(母親)であれば何の矛盾もない。
⚠ 典型ミス
「継父・養父・前夫」など複雑な家族関係を想定する。医師が女性という発想に至らない。
モンティ・ホール問題
問題
3つのドアがあります。1つの後ろには車、残り2つにはヤギがいます。あなたはドア1を選びました。司会者はヤギのいるドア3を開けました。ドア2に変えるべきですか?確率とその理由を説明してください。
✓ 正解
変えるべき。変更→2/3、維持→1/3
💡 解説
初期選択が当たる確率1/3は変わらない。司会者がヤギを開けた後、残ったドア2には「外れを選んでいた確率2/3」が集中する。直感に反するが数学的に正しい。
⚠ 典型ミス
「残り2つで50/50だから変えても同じ」。確率の条件付き更新を考慮できていない。
嘘つきと正直者
問題
AとBの2人がいます。一方は常に正直に答え、もう一方は常に嘘をつきます。AとBどちらかに「あなたは正直者ですか?」と聞きました。その人はなんと答えますか?正直者でも嘘つきでも同じ答えになる理由を説明してください。
✓ 正解
「はい」と答える(正直者も嘘つきも同じ)
💡 解説
正直者→「はい(真実)」、嘘つき→真実は「いいえ」だが嘘をつくので「はい」。自己参照的な問いは両者が同じ答えになる。
⚠ 典型ミス
嘘つきは「いいえ」と答えると誤解する。嘘つきも自分のことを「正直者だ」と嘘をつく点を見落とす。
水差し問題(5L+3L→4L)
問題
5リットルと3リットルの容量の水差しがあります(目盛りなし)。この2つを使って正確に4リットルの水を計り取る手順を説明してください。
✓ 正解
①5L満 → ②5L→3Lへ注(残2L) → ③3L空 → ④2Lを3Lへ → ⑤5L満 → ⑥3Lへ1L注ぎ満杯 → ⑦5Lに4L残
💡 解説
「5と3の差分=2」を3L容器に残すことで、5L容器に4Lを作る。拡張ユークリッド互除法の応用。
⚠ 典型ミス
「5L満→3Lへ→残2L…」まで正しいが、その後の手順で行き詰まる。
100人の囚人と帽子
問題
100人の囚人が一列に並び赤か青の帽子をかぶせられます。後ろから順に答え、自分より後ろしか見えません。最初の1人は50%で外れますが、残り99人を必ず助けられる戦略を説明してください。
✓ 正解
パリティ戦略:最後尾が前99人の赤帽子の枚数の奇偶を宣言し、以降全員が推論で確定
💡 解説
最後尾は「赤が奇数なら赤、偶数なら青」と宣言。99番目以降は前の宣言と見えている帽子からXOR計算で自分の色を100%確定できる。
⚠ 典型ミス
「全員で相談」「2人ずつで合図」など不正確な戦略。パリティビットという情報圧縮の概念に気づかない。
川渡り問題(農夫・狼・ヤギ・キャベツ)
問題
農夫が狼・ヤギ・キャベツを川の対岸に運びたいです。ボートには農夫と荷物1つしか乗れません。農夫がいない間、狼はヤギを食べ、ヤギはキャベツを食べます。全て安全に対岸に運ぶ手順を説明してください。
✓ 正解
①ヤギ渡す→②農夫戻る→③狼渡す→④ヤギを連れ戻す→⑤キャベツ渡す→⑥農夫戻る→⑦ヤギ渡す
💡 解説
ヤギを最初に渡し、狼+キャベツを同岸に残す(互いに食べない)。ヤギを一度連れ戻す逆手順がポイント。
⚠ 典型ミス
ヤギを連れ戻す手順を思いつかず行き詰まる。
天秤と偽コイン(12枚・3回)
問題
外見が同じ12枚のコインのうち1枚だけが偽物で、本物より重いか軽いかわかりません。天秤を3回だけ使って偽コインを特定し、重いか軽いかを判定する方法を説明してください。
✓ 正解
各コインに「重い疑惑/軽い疑惑/シロ確定」のラベルを付け3回で絞り込む決定木手法
💡 解説
3回で3^3=27通りの結果。24通り(12枚×重軽2通り)を判別できる。各計量で疑惑ラベルが異なるコインを混ぜて入れ替え、シロコインで補充することが核心。
⚠ 典型ミス
4-4-4分割の原理はわかるが2回目以降の具体的な分岐手順で自己矛盾が起きる。状態ラベルを追跡しないと決定木が完成しない。
FizzBuzz拡張(3・5・7の倍数)
問題
1から30までの整数に対して、3の倍数→"Fizz"、5の倍数→"Buzz"、7の倍数→"Jazz"、複数該当→全連結(例:15→"FizzBuzz")、それ以外→数字のまま出力するPythonコードを書いてください。
✓ 正解
3つの独立したif文(elifではなく)でFizz/Buzz/Jazzを連結処理
💡 解説
elif を使うと15(3と5の倍数)が"Fizz"だけになってしまう。3つの独立したifで output += を使い連結するのが正解。
⚠ 典型ミス
elif を使って複合条件を処理できなくする。または if-elif の組み合わせで一部ケースを漏らす。
JSクロージャの罠(var + setTimeout)
問題
以下のJavaScriptコードの出力は何ですか?理由も含めて説明してください。
for (var i = 0; i < 3; i++) {
setTimeout(function() {
console.log(i);
}, 1000);
}✓ 正解
1秒後に「3」「3」「3」が出力される
💡 解説
varは関数スコープで全イテレーションで同じ変数i を共有。コールバックはiへの参照を保持しており、ループ完了時にi===3。1秒後、3つのコールバックすべてがi=3を参照する。
⚠ 典型ミス
「0, 1, 2が出力される」と答える。非同期実行のタイミングとvarスコープの関係を混同している。
SQLインジェクション検出
問題
以下のPythonコードの問題点を指摘し、安全なコードに修正してください。
username = input("ユーザー名を入力: ")
query = "SELECT * FROM users WHERE name = '" + username + "'"
cursor.execute(query)✓ 正解
SQLインジェクション脆弱性 → パラメータ化クエリで修正 cursor.execute("SELECT * FROM users WHERE name = %s", (username,))
💡 解説
文字列連結でSQL文を構築するとユーザー入力がSQL構文として解釈される。'; DROP TABLE users; --などの攻撃が可能。パラメータ化クエリはユーザー入力をデータとして扱い安全。
⚠ 典型ミス
「入力値のサニタイズ(エスケープ)」だけを提案。エスケープは不完全な対策でパラメータ化クエリが正解。
再帰フィボナッチの改善
問題
以下の再帰的なフィボナッチ関数の問題点を2つ挙げ、それぞれを解決した改善版のコードを書いてください。
def fib(n):
if n <= 1:
return n
return fib(n-1) + fib(n-2)✓ 正解
①O(2^n)の指数時間 → メモ化またはDP、②スタックオーバーフロー → ボトムアップDP(O(1)空間)
💡 解説
メモ化でO(n)時間・O(n)空間、ボトムアップDPでO(n)時間・O(1)空間が達成できる。スタック深度の問題はDPで完全解消。
⚠ 典型ミス
問題点を1つしか挙げない。または改善版コードを書かず説明だけで終わる。
Pythonリスト参照の罠
問題
以下のPythonコードの出力は何ですか?理由も含めて説明してください。
def add_item(item, lst=[]):
lst.append(item)
return lst
print(add_item(1))
print(add_item(2))
print(add_item(3))✓ 正解
[1] → [1, 2] → [1, 2, 3]
💡 解説
デフォルト引数lst=[]は関数定義時に一度だけ生成され、全呼び出しで同じリストオブジェクトを共有する。毎回同じリストにappendされるため累積する。
⚠ 典型ミス
「[1]、[2]、[3]が出力される」と誤答。デフォルト引数がミュータブルの場合の共有動作を知らない。
正規表現チャレンジ(メールアドレス)
問題
以下のメールアドレス候補のうち、正規表現 ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ にマッチしないものを全て挙げてください。
1. [email protected]
2. [email protected]
3. [email protected]
4. [email protected]
5. @example.com
6. user@exam_ple.com✓ 正解
5, 6 がマッチしない
💡 解説
5: ローカル部なし→+(1文字以上)必須。6: ドメイン部の_→[a-zA-Z0-9.-]に_なし。4はマッチする: [a-zA-Z0-9.-]+ に . が含まれるため「.example」が吸収され、続く \.[a-zA-Z]{2,} が「.com」に一致する。メールアドレスとしては不正だが、この正規表現は弾けない。
⚠ 典型ミス
4番([email protected])を「ドメイン先頭のドットは不正」という常識で混ぜてしまう。正規表現が実際に何を許すかではなく、正しいメールアドレスの条件を答えている。この正解集自体が2ヶ月間この誤りを載せていた。
敬語の間違い探し
問題
以下の文章の敬語の誤りを指摘し、正しい表現に直してください。 「弊社の田中部長がご説明させていただきましたように、この度の新製品は市場のニーズに応えるものでございます。ご不明な点がございましたら、ご確認いただければと存じます。」
✓ 正解
①「田中部長がご説明させていただきました」→「田中が説明いたしましたように」(社外には役職名を外し二重謙譲を避ける)
💡 解説
社外の人に対して自社の人間の行動を話す際は謙譲語を使うが、ご〜させていただくは二重謙譲になる。また社外向けでは役職名(部長)を省略するのがビジネス慣習。
⚠ 典型ミス
「ご説明させていただく」の二重謙譲を見落とす。役職名の省略ルールを知らない。
俳句の評価(古池や)
問題
以下の俳句について、作者・季語・なぜ優れているか説明してください。 古池や 蛙飛び込む 水の音
✓ 正解
作者:松尾芭蕉、季語:蛙(春)、優れている理由:静(古池)と動(飛び込み)の対比、禅的な悟りの表現、音響的な臨場感
💡 解説
日本の俳句史上最も有名な作品の一つ。切れ字「や」で間を置き、瞬間の音で永遠の静寂を表現する逆説が卓越。
⚠ 典型ミス
作者を別の俳人と間違える。季語を「水」や「池」と答える(蛙が正解)。
慣用句の誤用検出(5文)
問題
以下の5文の中で、慣用句を誤って使っているものを全て指摘してください。正しい使い方も示してください。 1.的を得た説明 2.汚名返上のため正確な仕事 3.確信犯的に意図して外した 4.情けは人のためならずから助けた 5.舌の根も乾かないうちに約束を破った
✓ 正解
誤用は1番と3番 1: 「的を得た」→「的を射た」 3: 「確信犯」は意図的行為ではなく「正しいと信じて犯す行為」
💡 解説
「的を射る」が正しい(的を正確に射抜く)。「確信犯」は「自分の行為が正しいと信じて行う犯罪」であり、単なる意図的行動ではない。「汚名返上」は現代語では正用として認められている。
⚠ 典型ミス
「汚名返上」を誤用と判断する(現代語では正用)。「情けは人のためならず」の意味を誤解している場合、文4を誤りと判断する。
同音異義語テスト
問題
以下の文の( )に入る正しい漢字を選び、その理由を説明してください。 1. 彼の研究の(軌跡・奇跡)は多くの人に影響を与えた。 2. 長年の(感謝・鑑賞)を込めて、花束を贈った。 3. 新しい法律が(施行・思考・嗜好)されることになった。
✓ 正解
1. 軌跡(歩んできた道筋)、2. 感謝(ありがとうの気持ち)、3. 施行(法律の実施)
💡 解説
軌跡=過去の道のり、奇跡=不思議な出来事。感謝=ありがたさ、鑑賞=作品を味わう。施行=実行に移す、思考=考える、嗜好=好み。
⚠ 典型ミス
2番を「鑑賞」と誤答する(「長年の鑑賞」は不自然)。
翻訳チャレンジ(日本語特有表現)
問題
以下の日本語の概念を英語で説明してください。直訳ではなく、その概念の本質を英語圏の人に伝わるように説明してください。 1. 木漏れ日(こもれび) 2. 積ん読(つんどく) 3. 物の哀れ(もののあわれ)
✓ 正解
①木漏れ日: The interplay of light and shadow as sunlight filters through tree leaves — not mere dappled light, but the aesthetic appreciation of its ephemeral quality ②積ん読: Buying books with good intentions but leaving them unread — an aspirational relationship with knowledge that never quite materializes ③物の哀れ: The pathos of things — a bittersweet awareness that all beauty is transient, finding profound meaning in impermanence
💡 解説
いずれも英語に直訳できない文化的概念。概念の「なぜ美しいか・どんな感情か」を文章で伝えることが評価される。
⚠ 典型ミス
直訳(Komorebi = sunlight through trees)だけで概念の本質が伝わらない。
「やばい」の文脈解釈
問題
以下の5つの文における「やばい」が、肯定的な意味か否定的な意味かを判断し、その文脈での意味を説明してください。 1. このラーメン、やばいくらい美味しい。 2. 締め切りまで1時間しかない、やばい。 3. あいつの目つき、やばくない? 4. 映画のラストシーン、やばすぎた。 5. 財布忘れた、やばい。
✓ 正解
肯定: 1(美味しさの強調)、4(感動・賞賛) 否定: 2(危機感)、3(警戒・不審)、5(困った状況)
💡 解説
「やばい」は現代日本語で肯定・否定両方に使われる多価形容詞。「やばい+良い事象」は肯定、「やばい+困った状況」は否定と文脈で判断する。
⚠ 典型ミス
3番を肯定と判断(目つきが「やばい」=危険・不審という否定的評価)。
イベントループの厳密な順序
問題
次の Node.js コードの出力を、上から順にすべて書け。
async function inner() { console.log('A'); return 'r'; }
async function outer() {
console.log('B');
const v = await inner();
console.log('C');
await null;
console.log('D');
}
setTimeout(() => console.log('E'), 0);
Promise.resolve().then(() => console.log('F')).then(() => console.log('G'));
outer();
queueMicrotask(() => console.log('H'));
console.log('I');
【必須解答】9個のアルファベットを出力順に並べたもの✓ 正解
B A I F C H G D E
💡 解説
同期部で B → A(async 関数の本体は await まで同期実行)→ I。マイクロタスクは登録順に F、await inner() の再開、H、F から連鎖した G、最後に await null 後の D。setTimeout の E はマクロタスクなので最後。inner() が即 fulfilled な promise を返すため、outer の再開ジョブが queueMicrotask(H) より先に積まれる点が核心。
⚠ 典型ミス
await の再開を「同期的に続く」と誤解して C を A の直後に置く(Haiku 4.5 は B A I C F H D G E と回答)。F と outer 再開の登録順を逆にするのも頻出。
浮動小数点の境界で壊れるループ
問題
function seq(start, end, step) {
const out = [];
for (let x = start; x <= end; x += step) out.push(x);
return out;
}
次の4つの呼び出しについて、返る配列の要素数をそれぞれ答えよ。
1. seq(0, 0.3, 0.1)
2. seq(0, 1, 0.1)
3. seq(0, 0.7, 0.1)
4. seq(1, 2, 0.1)
【必須解答】4つの整数(順番どおり)✓ 正解
3, 11, 8, 10
💡 解説
0.1 の累積は 0.2+0.1 = 0.30000000000000004 になるため end=0.3 は 3個で打ち切り。end=1 は最終値 0.9999999999999999 が条件を満たして 11個(「1 が入らないのに個数は素直な 11」という二段の罠)。end=0.7 は累積列にちょうど 0.7 が再現されるので 8個。start=1 は誤差が正側に積み 1.9000000000000008 の次で脱落し 10個。
⚠ 典型ミス
「浮動小数点だから1個少なくなる」と一律に判断して 3, 10, 7, 11 のように答える(qwen3.5:9b の実際の誤答)。ケースごとに誤差の符号が違うため、10回ぶんを個別に追う必要がある。
/g 正規表現の lastIndex 状態
問題
const re = /a(b)?/g;
const s = 'ab a ab';
for (let i = 0; i < 4; i++) console.log(re.test(s), re.lastIndex);
const re2 = /^\d+$/g;
console.log(re2.test('123'), re2.test('123'), re2.test('123'));
const re3 = /(\d)/g;
console.log('1a2b3'.replace(re3, (m) => `[${m}]`));
console.log(re3.lastIndex);
【必須解答】1つ目のループが出す4行(真偽値と lastIndex)、2つ目の3つの真偽値、replace の結果文字列、最後の lastIndex✓ 正解
true 2 / true 4 / true 7 / false 0 true false true [1]a[2]b[3] 0
💡 解説
/g 付き正規表現の test() は lastIndex から再開し、成功するとマッチ末尾へ更新する。'ab a ab' では 'ab'(0-1)→2、'a'(3) の1文字マッチ→4、'ab'(5-6)→7、4回目は不一致で lastIndex が 0 にリセットされ false。/^\d+$/g は2回目が lastIndex=3 から始まり ^ に失敗するため false になり、そこでリセットされるので3回目は再び true(偶数回だけ落ちる典型バグ)。replace は全マッチ置換後に lastIndex を 0 に戻す。
⚠ 典型ミス
2回目のマッチを 'ab'(3-4) と読んで lastIndex=5 と答える(Haiku 4.5 の実際の誤答)。index 3 の 'a' の後は空白なので (b)? はマッチせず1文字で終わる。
async generator のマイクロタスク消費量
問題
async function* src() {
yield 1;
yield 2;
}
(async () => {
for await (const v of src()) console.log('got', v);
console.log('loop done');
})();
Promise.resolve()
.then(() => console.log('m1'))
.then(() => console.log('m2'))
.then(() => console.log('m3'))
.then(() => console.log('m4'))
.then(() => console.log('m5'))
.then(() => console.log('m6'))
.then(() => console.log('m7'))
.then(() => console.log('m8'));
console.log('sync');
【必須解答】12行の出力を順番どおり✓ 正解
sync / m1 / got 1 / m2 / m3 / got 2 / m4 / loop done / m5 / m6 / m7 / m8
💡 解説
async generator の yield は仕様(AsyncGeneratorYield)が値を Await するため、1反復あたり「生成側の await 1tick + for await 側が next() の promise を await する 1tick」で計2tick を消費する。よって 1反復が m チェーン2段に対応する。最後の next() は本体が正常終了するだけで追加の await がなく即 resolve されるため、loop done は m4 の直後(m5 の前)に出る。
⚠ 典型ミス
最終 next() も2tick 消費すると見積もり、loop done を m5 の後に置く(Sonnet 5・Haiku 4.5 がともにこの誤り)。ループ本体の tick 数は正しく数えられても、終了検出のコストを1つ多く見積もるのが最頻の失敗。
ビット演算の 32bit 変換
問題
次の各式の値を答えよ。 1. -1 >>> 0 2. (2147483647 + 1) | 0 3. 1 << 32, 1 << 31, 1 << 33 4. 0xffffffff | 0, 0xffffffff >>> 0 5. -5 / 2 | 0, ~~-3.7 6. 2 ** 32 | 0, (2 ** 32 + 5) | 0 7. -1 >> 1, -1 >>> 1 【必須解答】13個の数値
✓ 正解
1) 4294967295 2) -2147483648 3) 1, -2147483648, 2 4) -1, 4294967295 5) -2, -3 6) 0, 5 7) -1, 2147483647
💡 解説
| << >> ~ は ToInt32(符号付き32bit)、>>> は ToUint32(符号なし)へ変換する。シフト量は 32 で剰余を取るため 1<<32 は無シフトで 1、1<<33 は 1bit シフトで 2。1<<31 は最上位ビットが立つので符号付きでは -2147483648。|0 と ~~ は Math.floor ではなくゼロ方向への切り捨てなので -2.5 は -2。2**32 は下位32bitが全0で 0、2**32+5 は 5 に折り返す。
⚠ 典型ミス
1 << 31 を 2147483648 と答える(Haiku 4.5 の実際の誤答)。シフト量の mod 32 も >>> の符号なし変換も正しく説明できているのに、<< の結果が ToInt32 で符号付きに落ちる一点だけを取り落とすパターン。
採点基準: 完璧=10点 / 正解だが説明薄=7点 / 部分正解=5点 / 誤り→自己修正=3点 / 不正解=0点。 結果ファイル: data/benchmark-results/