diff options
| -rw-r--r-- | q1.sql | 9 | ||||
| -rw-r--r-- | q2.sql | 187 | ||||
| -rw-r--r-- | q3.sql | 30 | ||||
| -rw-r--r-- | q4.sql | 114 |
4 files changed, 340 insertions, 0 deletions
@@ -0,0 +1,9 @@ +INSERT INTO problems (title, description, sample_code) +VALUES + ('じゃんけん', '', ''), + ('でっかい数字', '', ''); + +INSERT INTO games (game_type, is_public, display_name, duration_seconds, problem_id) +VALUES + ('multiplayer', false, 'オンライン予選1', 86400*5 + 3600*11, (SELECT problem_id FROM problems WHERE title = 'じゃんけん')), + ('multiplayer', false, 'オンライン予選2', 86400*5 + 3600*11, (SELECT problem_id FROM problems WHERE title = 'でっかい数字')); @@ -0,0 +1,187 @@ +UPDATE problems +SET +sample_code = $EOF$list($player1_name, $player2_name) = fgetcsv(STDIN, 1024, ',', '"', ''); +while ($row = fgetcsv(STDIN, 1024, ',', '"', '')) { + if (count($row) === 0) { + break; + } + $player1_hand = $row[0]; + $player2_hand = $row[1]; + switch ($player1_hand) { + case "グー": + printf("%sさん %s", $player1_name, match ($player1_hand) { + "グー" => "\u{270A}", + "チョキ" => "\u{270C}", + "パー" => "\u{270B}", + }); + echo " vs "; + switch ($player2_hand) { + case "グー": + printf("%sさん %s", $player2_name, match ($player2_hand) { + "グー" => "\u{270A}", + "チョキ" => "\u{270C}", + "パー" => "\u{270B}", + }); + echo " => あいこ\n"; + break; + case "チョキ": + printf("%sさん %s", $player2_name, match ($player2_hand) { + "グー" => "\u{270A}", + "チョキ" => "\u{270C}", + "パー" => "\u{270B}", + }); + echo " => {$player1_name}の勝ち\n"; + break; + case "パー": + printf("%sさん %s", $player2_name, match ($player2_hand) { + "グー" => "\u{270A}", + "チョキ" => "\u{270C}", + "パー" => "\u{270B}", + }); + echo " => {$player2_name}の勝ち\n"; + break; + + } + break; + case "チョキ": + printf("%sさん %s", $player1_name, match ($player1_hand) { + "グー" => "\u{270A}", + "チョキ" => "\u{270C}", + "パー" => "\u{270B}", + }); + echo " vs "; + switch ($player2_hand) { + case "グー": + printf("%sさん %s", $player2_name, match ($player2_hand) { + "グー" => "\u{270A}", + "チョキ" => "\u{270C}", + "パー" => "\u{270B}", + }); + echo " => {$player2_name}の勝ち\n"; + break; + case "チョキ": + printf("%sさん %s", $player2_name, match ($player2_hand) { + "グー" => "\u{270A}", + "チョキ" => "\u{270C}", + "パー" => "\u{270B}", + }); + echo " => あいこ\n"; + break; + case "パー": + printf("%sさん %s", $player2_name, match ($player2_hand) { + "グー" => "\u{270A}", + "チョキ" => "\u{270C}", + "パー" => "\u{270B}", + }); + echo " => {$player1_name}の勝ち\n"; + break; + + } + break; + case "パー": + printf("%sさん %s", $player1_name, match ($player1_hand) { + "グー" => "\u{270A}", + "チョキ" => "\u{270C}", + "パー" => "\u{270B}", + }); + echo " vs "; + switch ($player2_hand) { + case "グー": + printf("%sさん %s", $player2_name, match ($player2_hand) { + "グー" => "\u{270A}", + "チョキ" => "\u{270C}", + "パー" => "\u{270B}", + }); + echo " => {$player1_name}の勝ち\n"; + break; + case "チョキ": + printf("%sさん %s", $player2_name, match ($player2_hand) { + "グー" => "\u{270A}", + "チョキ" => "\u{270C}", + "パー" => "\u{270B}", + }); + echo " => {$player2_name}の勝ち\n"; + break; + case "パー": + printf("%sさん %s", $player2_name, match ($player2_hand) { + "グー" => "\u{270A}", + "チョキ" => "\u{270C}", + "パー" => "\u{270B}", + }); + echo " => あいこ\n"; + break; + } + break; + } +} +$EOF$ +WHERE title = 'じゃんけん'; + +UPDATE problems +SET +sample_code = $EOF$$aa = array_map(fn($s) => explode("\n", $s), [ + <<<'AA' +┌┐ +││ +└┘ +AA, + <<<'AA' + ┐ + │ + ╵ +AA, + <<<'AA' +╶┐ +┌┘ +└╴ +AA, + <<<'AA' +┌┐ + ┤ +└┘ +AA, + <<<'AA' +╷╷ +└┤ + ╵ +AA, + <<<'AA' +┌╴ +└┐ +╶┘ +AA, + <<<'AA' +┌┐ +├┐ +└┘ +AA, + <<<'AA' +┌┐ + │ + ╵ +AA, + <<<'AA' +┌┐ +├┤ +└┘ +AA, + <<<'AA' +┌┐ +└┤ +└┘ +AA, +]); + +while ($line = fgets(STDIN)) { + $digits = str_split(rtrim($line, "\n")); + $output = ''; + foreach (range(0, 2) as $i) { + foreach ($digits as $digit) { + $output = $output . $aa[$digit][$i]; + } + $output = $output . "\n"; + } + echo $output; +} +$EOF$ +WHERE title = 'でっかい数字'; @@ -0,0 +1,30 @@ +UPDATE problems +SET +description = $EOF$標準入力から改行区切りのデータが入力されます。 +最初の行は「プレイヤー1の名前,プレイヤー2の名前」の形式です。 +次以降の行は「グー,チョキ」「チョキ,パー」のように「プレイヤー1の手,プレイヤー2の手」が入力されます。プレイヤー1の名前が「X」プレイヤー2の名前が「Y」のとき、手の入力に合わせて「Xさん ✊ vs Yさん ✋ => Yの勝ち」「Xさん ✌️ vs Yさん ✋ => Xの勝ち」のように行ごとに出力してください。 +手の種類は「グー」(✊ = "\u{270A}")「チョキ」(✌️ = "\u{270C}")「パー」(✋ = "\u{270B}")の3つです。 +また、最初の行を含めて区切り文字以外に , が入力されることはありません。 +$EOF$ +WHERE title = 'じゃんけん'; + +UPDATE problems +SET +description = $EOF$標準入力から数字が改行区切りで入力されます。 +出力例のような横2文字縦3行のサイズの罫線文字から構成される文字として、各桁の文字を横に連結して、入力行ごとに出力してください。 +アスキーアートに含まれる余白部分は、通常の「半角スペース("\x20")」です。 +また、入力される数字は 0 または正の整数です。 + +入力: +0123456789 +88888 + +出力: +┌┐ ┐╶┐┌┐╷╷┌╴┌┐┌┐┌┐┌┐ +││ │┌┘ ┤└┤└┐├┐ │├┤└┤ +└┘ ╵└╴└┘ ╵╶┘└┘ ╵└┘└┘ +┌┐┌┐┌┐┌┐┌┐ +├┤├┤├┤├┤├┤ +└┘└┘└┘└┘└┘ +$EOF$ +WHERE title = 'でっかい数字'; @@ -0,0 +1,114 @@ +INSERT INTO testcases (problem_id, stdin, stdout) +VALUES + ((SELECT problem_id FROM problems WHERE title = 'じゃんけん'), + $$X,Y +グー,パー +チョキ,グー +パー,パー +グー,グー +チョキ,グー +グー,チョキ +パー,グー +チョキ,パー +パー,チョキ +グー,チョキ +チョキ,パー +$$, + $$Xさん ✊ vs Yさん ✋ => Yの勝ち +Xさん ✌ vs Yさん ✊ => Yの勝ち +Xさん ✋ vs Yさん ✋ => あいこ +Xさん ✊ vs Yさん ✊ => あいこ +Xさん ✌ vs Yさん ✊ => Yの勝ち +Xさん ✊ vs Yさん ✌ => Xの勝ち +Xさん ✋ vs Yさん ✊ => Xの勝ち +Xさん ✌ vs Yさん ✋ => Xの勝ち +Xさん ✋ vs Yさん ✌ => Yの勝ち +Xさん ✊ vs Yさん ✌ => Xの勝ち +Xさん ✌ vs Yさん ✋ => Xの勝ち +$$), + ((SELECT problem_id FROM problems WHERE title = 'じゃんけん'), + $$グー,チョキ +グー,グー +グー,グー +グー,グー +チョキ,チョキ +チョキ,チョキ +パー,パー +パー,パー +パー,パー +パー,パー +$$, + $$グーさん ✊ vs チョキさん ✊ => あいこ +グーさん ✊ vs チョキさん ✊ => あいこ +グーさん ✊ vs チョキさん ✊ => あいこ +グーさん ✌ vs チョキさん ✌ => あいこ +グーさん ✌ vs チョキさん ✌ => あいこ +グーさん ✋ vs チョキさん ✋ => あいこ +グーさん ✋ vs チョキさん ✋ => あいこ +グーさん ✋ vs チョキさん ✋ => あいこ +グーさん ✋ vs チョキさん ✋ => あいこ +$$); + +INSERT INTO testcases (problem_id, stdin, stdout) +VALUES + ((SELECT problem_id FROM problems WHERE title = 'でっかい数字'), + $$0123456789 +88888 +$$, + $$┌┐ ┐╶┐┌┐╷╷┌╴┌┐┌┐┌┐┌┐ +││ │┌┘ ┤└┤└┐├┐ │├┤└┤ +└┘ ╵└╴└┘ ╵╶┘└┘ ╵└┘└┘ +┌┐┌┐┌┐┌┐┌┐ +├┤├┤├┤├┤├┤ +└┘└┘└┘└┘└┘ +$$), + ((SELECT problem_id FROM problems WHERE title = 'でっかい数字'), + $$0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +$$, + $$┌┐ +││ +└┘ + ┐ + │ + ╵ +╶┐ +┌┘ +└╴ +┌┐ + ┤ +└┘ +╷╷ +└┤ + ╵ +┌╴ +└┐ +╶┘ +┌┐ +├┐ +└┘ +┌┐ + │ + ╵ +┌┐ +├┤ +└┘ +┌┐ +└┤ +└┘ +$$), + ((SELECT problem_id FROM problems WHERE title = 'でっかい数字'), + $$748932178947312487291785974195743815794317587413957413 +$$, + $$┌┐╷╷┌┐┌┐┌┐╶┐ ┐┌┐┌┐┌┐╷╷┌┐┌┐ ┐╶┐╷╷┌┐┌┐╶┐┌┐ ┐┌┐┌┐┌╴┌┐┌┐╷╷ ┐┌┐┌╴┌┐╷╷┌┐┌┐ ┐┌╴┌┐┌┐╷╷┌┐ ┐┌┐┌╴┌┐┌┐╷╷ ┐┌┐┌┐┌╴┌┐╷╷ ┐┌┐ + │└┤├┤└┤ ┤┌┘ │ │├┤└┤└┤ │ ┤ │┌┘└┤├┤ │┌┘└┤ │ │├┤└┐└┤ │└┤ │└┤└┐ │└┤ ┤├┤ │└┐ │└┤└┤ ┤ │ │└┐├┤ │└┤ │ ┤└┤└┐ │└┤ │ ┤ + ╵ ╵└┘└┘└┘└╴ ╵ ╵└┘└┘ ╵ ╵└┘ ╵└╴ ╵└┘ ╵└╴└┘ ╵ ╵└┘╶┘└┘ ╵ ╵ ╵└┘╶┘ ╵ ╵└┘└┘ ╵╶┘ ╵└┘ ╵└┘ ╵ ╵╶┘└┘ ╵ ╵ ╵└┘└┘╶┘ ╵ ╵ ╵└┘ +$$); |
