MySQL で FizzBuzz
そろそろネタ切れの予感。
seq はなんとかならんものかな。
CREATE TEMPORARY TABLE seq ( i INT AUTO_INCREMENT PRIMARY KEY ); INSERT INTO seq VALUES (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (); SELECT CASE mod3 * 2 + mod5 WHEN 3 THEN "FizzBuzz" WHEN 2 THEN "Fizz" WHEN 1 THEN "Buzz" ELSE CONCAT(i) END AS fizzbuzz FROM (SELECT i, i % 3 = 0 AS mod3, i % 5 = 0 AS mod5 FROM seq) AS t;
ついでだからもう一ひねり。
CREATE TEMPORARY TABLE seq ( i INT AUTO_INCREMENT PRIMARY KEY ); INSERT INTO seq VALUES (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (); CREATE TEMPORARY TABLE fizzbuzz ( val INT PRIMARY KEY, output VARCHAR(8) NOT NULL ); INSERT INTO fizzbuzz (val, output) VALUES (1, "Fizz"), (2, "Buzz"), (3, "FizzBuzz"); SELECT IFNULL(output, CONCAT(i)) AS str FROM (SELECT i, (i % 5 = 0) * 2 + (i % 3 = 0) as val FROM seq) AS t LEFT OUTER JOIN fizzbuzz USING (val);