aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-03-16 01:29:40 +0900
committernsfisis <nsfisis@gmail.com>2025-03-16 01:29:40 +0900
commit668937e3a195ae14d338352a496ec627bee0bf80 (patch)
treea356267364597b1d57dd9814d4537721b14a5e57
parent8a8dbd024373dcd7d87af7d2c858221a313d8077 (diff)
downloadphperkaigi-2025-albatross-668937e3a195ae14d338352a496ec627bee0bf80.tar.gz
phperkaigi-2025-albatross-668937e3a195ae14d338352a496ec627bee0bf80.tar.zst
phperkaigi-2025-albatross-668937e3a195ae14d338352a496ec627bee0bf80.zip
commit admin queries
-rw-r--r--q1.sql9
-rw-r--r--q2.sql187
-rw-r--r--q3.sql30
-rw-r--r--q4.sql114
4 files changed, 340 insertions, 0 deletions
diff --git a/q1.sql b/q1.sql
new file mode 100644
index 0000000..e2d24b2
--- /dev/null
+++ b/q1.sql
@@ -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 = 'でっかい数字'));
diff --git a/q2.sql b/q2.sql
new file mode 100644
index 0000000..81be736
--- /dev/null
+++ b/q2.sql
@@ -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 = 'でっかい数字';
diff --git a/q3.sql b/q3.sql
new file mode 100644
index 0000000..4bc0f7c
--- /dev/null
+++ b/q3.sql
@@ -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 = 'でっかい数字';
diff --git a/q4.sql b/q4.sql
new file mode 100644
index 0000000..560ba50
--- /dev/null
+++ b/q4.sql
@@ -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
+$$,
+ $$┌┐╷╷┌┐┌┐┌┐╶┐ ┐┌┐┌┐┌┐╷╷┌┐┌┐ ┐╶┐╷╷┌┐┌┐╶┐┌┐ ┐┌┐┌┐┌╴┌┐┌┐╷╷ ┐┌┐┌╴┌┐╷╷┌┐┌┐ ┐┌╴┌┐┌┐╷╷┌┐ ┐┌┐┌╴┌┐┌┐╷╷ ┐┌┐┌┐┌╴┌┐╷╷ ┐┌┐
+ │└┤├┤└┤ ┤┌┘ │ │├┤└┤└┤ │ ┤ │┌┘└┤├┤ │┌┘└┤ │ │├┤└┐└┤ │└┤ │└┤└┐ │└┤ ┤├┤ │└┐ │└┤└┤ ┤ │ │└┐├┤ │└┤ │ ┤└┤└┐ │└┤ │ ┤
+ ╵ ╵└┘└┘└┘└╴ ╵ ╵└┘└┘ ╵ ╵└┘ ╵└╴ ╵└┘ ╵└╴└┘ ╵ ╵└┘╶┘└┘ ╵ ╵ ╵└┘╶┘ ╵ ╵└┘└┘ ╵╶┘ ╵└┘ ╵└┘ ╵ ╵╶┘└┘ ╵ ╵ ╵└┘└┘╶┘ ╵ ╵ ╵└┘
+$$);