PL/SQL で ズンドコキヨシ

  • 2
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

ズンドコキヨシまとめ
http://qiita.com/shunsugai@github/items/971a15461de29563bf90

と云う訳(?)で PL/SQL で ズンドコキヨシ を作って見た。

(力技で)すまんな。彡(-)(-)
ワンライナーでやっている猛者も何人か居るけど、
ワイにはこれ位が限界や……彡(-)(-)

SET SERVEROUTPUT ON SIZE UNLIMITED;
DECLARE
  -- Define
  vStr VARCHAR2(50);
BEGIN
  -- Initialize
  DBMS_RANDOM.SEED(TO_CHAR(SYSTIMESTAMP, 'YYYY/MM/DD HH24:MI:SS.FF'));
  -- ZunDoko Loop
  LOOP
    -- Zun or Doko
    vStr := vStr || CASE MOD(TRUNC(DBMS_RANDOM.VALUE*10), 2) WHEN 0 THEN 'ズン!' ELSE 'ドコ!' END;
    -- Cut and Format
    IF LENGTH(vStr) > 15 THEN
      vStr := SUBSTR(vStr, -15);
    END IF;
    -- Output
    DBMS_OUTPUT.PUT_LINE(vStr);
    -- Complete
    EXIT WHEN vStr = 'ズン!ズン!ズン!ズン!ドコ!';
  END LOOP;
  -- Kiyoshi!
  DBMS_OUTPUT.PUT_LINE('キ・ヨ・シ!');
END;
/

実行結果のサンプルは以下の通りやで彡(゚)(゚)

SQL> SET SERVEROUTPUT ON SIZE UNLIMITED;
SQL> DECLARE
  2    -- Define
  3    vStr VARCHAR2(50);
  4  BEGIN
  5    -- Initialize
  6    DBMS_RANDOM.SEED(TO_CHAR(SYSTIMESTAMP, 'YYYY/MM/DD HH24:MI:SS.FF'));
  7    -- ZunDoko Loop
  8    LOOP
  9      -- Zun or Doko
 10      vStr := vStr || CASE MOD(TRUNC(DBMS_RANDOM.VALUE*10), 2) WHEN 0 THEN 'ズン!' ELSE 'ドコ!' END;
 11      -- Cut and Format
 12      IF LENGTH(vStr) > 15 THEN
 13        vStr := SUBSTR(vStr, -15);
 14      END IF;
 15      -- Output
 16      DBMS_OUTPUT.PUT_LINE(vStr);
 17      -- Complete
 18      EXIT WHEN vStr = 'ズン!ズン!ズン!ズン!ドコ!';
 19    END LOOP;
 20    -- Kiyoshi!
 21    DBMS_OUTPUT.PUT_LINE('キ・ヨ・シ!');
 22  END;
 23  /
ズン!
ズン!ズン!
ズン!ズン!ドコ!
ズン!ズン!ドコ!ズン!
ズン!ズン!ドコ!ズン!ドコ!
ズン!ドコ!ズン!ドコ!ドコ!
ドコ!ズン!ドコ!ドコ!ズン!
ズン!ドコ!ドコ!ズン!ドコ!
ドコ!ドコ!ズン!ドコ!ドコ!
ドコ!ズン!ドコ!ドコ!ズン!
ズン!ドコ!ドコ!ズン!ドコ!
ドコ!ドコ!ズン!ドコ!ズン!
ドコ!ズン!ドコ!ズン!ズン!
ズン!ドコ!ズン!ズン!ドコ!
ドコ!ズン!ズン!ドコ!ドコ!
ズン!ズン!ドコ!ドコ!ズン!
ズン!ドコ!ドコ!ズン!ズン!
ドコ!ドコ!ズン!ズン!ズン!
ドコ!ズン!ズン!ズン!ズン!
ズン!ズン!ズン!ズン!ズン!
ズン!ズン!ズン!ズン!ズン!
ズン!ズン!ズン!ズン!ズン!
ズン!ズン!ズン!ズン!ズン!
ズン!ズン!ズン!ズン!ドコ!
キ・ヨ・シ!

PL/SQL procedure successfully completed.

SQL>

でももうちょっとスマートにやりたいやね彡(゚)(゚)