diff options
| -rw-r--r-- | q-remove-labels.sql | 3 | ||||
| -rw-r--r-- | q1.sql | 15 | ||||
| -rw-r--r-- | q2.sql | 152 | ||||
| -rw-r--r-- | q3.sql | 96 | ||||
| -rw-r--r-- | q4.sql | 163 |
5 files changed, 0 insertions, 429 deletions
diff --git a/q-remove-labels.sql b/q-remove-labels.sql deleted file mode 100644 index 71be7a1..0000000 --- a/q-remove-labels.sql +++ /dev/null @@ -1,3 +0,0 @@ -UPDATE users -SET label = NULL -WHERE user_id IN (4, 6, 10, 11); @@ -1,15 +0,0 @@ -INSERT INTO problems (title, description, sample_code) -VALUES - ('序数', '', ''), - ('Σ', '', ''), - ('漢数字', '', ''), - ('カレンダー', '', ''), - ('ダイナミックFizzBuzz', '', ''); - -INSERT INTO games (game_type, is_public, display_name, duration_seconds, problem_id) -VALUES - ('1v1', false, '準々決勝マッチ1', 15*60, (SELECT problem_id FROM problems WHERE title = '序数')), - ('1v1', false, '準々決勝マッチ2', 15*60, (SELECT problem_id FROM problems WHERE title = 'Σ')), - ('1v1', false, '準決勝マッチ1', 15*60, (SELECT problem_id FROM problems WHERE title = '漢数字')), - ('1v1', false, '準決勝マッチ2', 15*60, (SELECT problem_id FROM problems WHERE title = 'カレンダー')), - ('1v1', false, '決勝', 15*60, (SELECT problem_id FROM problems WHERE title = 'ダイナミックFizzBuzz')); @@ -1,152 +0,0 @@ -UPDATE problems -SET -sample_code = $EOF$while($line = fgets(STDIN)) { - echo preg_replace_callback('/(?P<num>\b[1-9][0-9]*)\b/', function ($m) { - $num = $m['num']; - return toOrd($num); - }, $line); -} - -function toOrd(int $num): string { - $_2 = $num % 100; - if ($_2 === 11 || $_2 === 12 || $_2 === 13) { - return $num . 'th'; - } - - $_1 = $num % 10; - if ($_1 === 1) { - return $num . 'st'; - } elseif ($_1 === 2) { - return $num . 'nd'; - } elseif ($_1 === 3) { - return $num . 'rd'; - } else { - return $num . 'th'; - } -} -$EOF$ -WHERE title = '序数'; - -UPDATE problems -SET -sample_code = $EOF$fscanf(STDIN, "%d", $width); - -foreach (range(1, $width) as $i) { - echo '*'; -} -echo PHP_EOL; - -foreach (range(1, intdiv($width, 2)) as $i) { - foreach (range(0, $i) as $j) { - if ($i === $j) { - echo '*'; - } else { - echo ' '; - } - } - echo PHP_EOL; -} -foreach (range(intdiv($width, 2)-1, 1) as $i) { - foreach (range(0, $i) as $j) { - if ($i === $j) { - echo '*'; - } else { - echo ' '; - } - } - echo PHP_EOL; -} -foreach (range(1, $width) as $i) { - echo '*'; -} -$EOF$ -WHERE title = 'Σ'; - -UPDATE problems -SET -sample_code = $EOF$while($line = fgets(STDIN)) { - echo preg_replace_callback('/(?P<num>\b[1-9]?[0-9]+)\b/', function ($m) { - $num = $m['num']; - return to漢数字($num); - }, $line); -} - -function to漢数字(int $n): string -{ - $kansuji = [ - 0 => '〇', - 1 => '一', - 2 => '二', - 3 => '三', - 4 => '四', - 5 => '五', - 6 => '六', - 7 => '七', - 8 => '八', - 9 => '九', - ]; - - do { - $_ = (int)$n % 10; - $digits[] = $kansuji[$_]; - $n = $n / 10; - } while($n >= 1); - - return implode(array_reverse($digits)); -} -$EOF$ -WHERE title = '漢数字'; - -UPDATE problems -SET -sample_code = $EOF$[$year, $month] = explode("-", trim(fgets(STDIN))); -$first_day = strtotime("first day of {$year}-{$month}"); -$last_day = strtotime("last day of {$year}-{$month}"); - -$calendar = []; -$this_week = array_fill(0, idate('w', $first_day), ''); -$days = range(1, idate('d', $last_day)); -while (count($days) > 0) { - $this_week[] = array_shift($days); - if (count($this_week) === 7) { - $calendar[] = $this_week; - $this_week = []; - } -} -$calendar[] = $this_week; - -echo "[", idate('Y', $first_day), "年", idate("n", $first_day), "月]\n"; - -foreach($calendar as $week){ - foreach ($week as $day){ - printf("%3s", $day); - } - echo "\n"; -} -$EOF$ -WHERE title = 'カレンダー'; - -UPDATE problems -SET -sample_code = $EOF$$max = intval(fgets(STDIN)); -$nums = []; -while ($row = fgetcsv(STDIN, escape: ',')) { - [$n, $name] = $row; - $nums[$n] = $name; -} - -foreach (range(1, $max) as $i) { - $s = ''; - foreach ($nums as $n => $name) { - if ($i % $n === 0) { - $s = $s . $name; - } - } - if ($s === '') { - echo $i, "\n"; - } else { - echo $s, "\n"; - } -} -$EOF$ -WHERE title = 'ダイナミックFizzBuzz'; @@ -1,96 +0,0 @@ -UPDATE problems -SET -description = $EOF$標準入力から行区切りでテキストが入力されます。テキストに含まれる整数(n>0)を序数表現(1→1st, 2→2nd)のように置換して出力してください。 - -入力: -1 penguin -2 chance -3 time's the charm - -出力: -1st penguin -2nd chance -3rd time's the charm -$EOF$ -WHERE title = '序数'; - -UPDATE problems -SET -description = $EOF$標準入力から整数widthが入力されます。入力した数字から例のような図形を出力してください。ただし、入力は4以上の整数のみです。 - -入力: -6 - -出力: -****** - * - * - * - * - * -****** -$EOF$ -WHERE title = 'Σ'; - -UPDATE problems -SET -description = $EOF$標準入力から行区切りでテキストが入力されます。テキストに含まれる数字を漢数字に置換して出力してください。置換は一桁ずつおこない、数字が連続している場合でも「十」や「百」にはしないでください。 - -入力: -1234567890 -第8回 -ペチパー会議2025 -気温は摂氏7度 -総勢123人 -税込98700円 - -出力: -一二三四五六七八九〇 -第八回 -ペチパー会議二〇二五 -気温は摂氏七度 -総勢一二三人 -税込九八七〇〇円 -$EOF$ -WHERE title = '漢数字'; - -UPDATE problems -SET -description = $EOF$標準入力から「西暦年-月」の形式で 2025-02 のような行が1行入力されます。入力された月に合わせて「[Y年M月]」と出力してから、入力された月のカレンダーを日曜始まり形式で整列して出力してください。日付はすべて「3桁空白右寄せ」で表示します。 - -入力: -2025-02 - -出力 -[2025年2月] - 1 - 2 3 4 5 6 7 8 - 9 10 11 12 13 14 15 - 16 17 18 19 20 21 22 - 23 24 25 26 27 28 -$EOF$ -WHERE title = 'カレンダー'; - -UPDATE problems -SET -description = $EOF$標準入力の最初の行に出力の最大行数 $max が、次以降の行に置換リストが 数,名前 の形式で改行区切りで入力されます。置換リストに含まれる数は2以上の素数で、昇順に入力されます。1 から $max までの連続した整数を改行区切りで出力してください。その際、出力しようとしている数が置換リストの数の倍数なら対応する名前に置き換え、その数が置換リストに含まれる複数の数の公倍数ならリスト内の数が小さい順に連結して置き換えてください。 - -入力: -10 -2,Dizz -3,Fizz -5,Buzz - -出力: -1 -Dizz -Fizz -Dizz -Buzz -DizzFizz -7 -Dizz -Fizz -DizzBuzz -$EOF$ -WHERE title = 'ダイナミックFizzBuzz'; @@ -1,163 +0,0 @@ -INSERT INTO testcases (problem_id, stdin, stdout) -VALUES - ((SELECT problem_id FROM problems WHERE title = '序数'), - $$1 penguin -2 chance -3 time's the charm -$$, - $$1st penguin -2nd chance -3rd time's the charm -$$), - ((SELECT problem_id FROM problems WHERE title = '序数'), - $$aaa 10 11 12 13 14 15 16 17 18 19 20 bbb -ccc 21 22 23 24 25 26 27 28 29 30 ddd -aaa 110 111 112 113 114 bbb -$$, - $$aaa 10th 11th 12th 13th 14th 15th 16th 17th 18th 19th 20th bbb -ccc 21st 22nd 23rd 24th 25th 26th 27th 28th 29th 30th ddd -aaa 110th 111th 112th 113th 114th bbb -$$); - -INSERT INTO testcases (problem_id, stdin, stdout) -VALUES - ((SELECT problem_id FROM problems WHERE title = 'Σ'), - $$6 -$$, - $$****** - * - * - * - * - * -****** -$$), - ((SELECT problem_id FROM problems WHERE title = 'Σ'), - $$10 -$$, - $$********** - * - * - * - * - * - * - * - * - * -********** -$$); - -INSERT INTO testcases (problem_id, stdin, stdout) -VALUES - ((SELECT problem_id FROM problems WHERE title = '漢数字'), - $$1234567890 -第8回 -ペチパー会議2025 -気温は摂氏7度 -総勢123人 -税込98700円 -$$, - $$一二三四五六七八九〇 -第八回 -ペチパー会議二〇二五 -気温は摂氏七度 -総勢一二三人 -税込九八七〇〇円 -$$), - ((SELECT problem_id FROM problems WHERE title = '漢数字'), - $$-123 -$$, - $$-一二三 -$$); - -INSERT INTO testcases (problem_id, stdin, stdout) -VALUES - ((SELECT problem_id FROM problems WHERE title = 'カレンダー'), - $$2025-02 -$$, - $$[2025年2月] - 1 - 2 3 4 5 6 7 8 - 9 10 11 12 13 14 15 - 16 17 18 19 20 21 22 - 23 24 25 26 27 28 -$$), - ((SELECT problem_id FROM problems WHERE title = 'カレンダー'), - $$2000-02 -$$, - $$[2000年2月] - 1 2 3 4 5 - 6 7 8 9 10 11 12 - 13 14 15 16 17 18 19 - 20 21 22 23 24 25 26 - 27 28 29 -$$), - ((SELECT problem_id FROM problems WHERE title = 'カレンダー'), - $$2025-03 -$$, - $$[2025年3月] - 1 - 2 3 4 5 6 7 8 - 9 10 11 12 13 14 15 - 16 17 18 19 20 21 22 - 23 24 25 26 27 28 29 - 30 31 -$$), - ((SELECT problem_id FROM problems WHERE title = 'カレンダー'), - $$2024-02 -$$, - $$[2024年2月] - 1 2 3 - 4 5 6 7 8 9 10 - 11 12 13 14 15 16 17 - 18 19 20 21 22 23 24 - 25 26 27 28 29 -$$); - -INSERT INTO testcases (problem_id, stdin, stdout) -VALUES - ((SELECT problem_id FROM problems WHERE title = 'ダイナミックFizzBuzz'), - $$10 -2,Dizz -3,Fizz -5,Buzz -$$, - $$1 -Dizz -Fizz -Dizz -Buzz -DizzFizz -7 -Dizz -Fizz -DizzBuzz -$$), - ((SELECT problem_id FROM problems WHERE title = 'ダイナミックFizzBuzz'), - $$21 -3,Fizz -7,Pazz -$$, - $$1 -2 -Fizz -4 -5 -Fizz -Pazz -8 -Fizz -10 -11 -Fizz -13 -Pazz -Fizz -16 -17 -Fizz -19 -20 -FizzPazz -$$); |
