ズンドコキヨシ with Fortran

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

背景

ズンドコキヨシまとめによりますと、ズンドコブームなのでFORTRANで書いてみました。

元ネタが「自作関数を作り記述しなさい」とのことですが、戻り値は要らないのでFUNCTIONではなくSUBROUTINEで実装しました。

FORTRAN77で書き始めたのですが、乱数生成でちょっと困ったのでFORTRAN90の組み込み関数を拝借しました。たぶん動的配列もFORTRAN90以降のコンパイラでしか動きません。我々のようないまどきの若者はピュアなFORTRAN77コンパイラなど使うことはないから問題ないのです。gfortran 4.8.3で確認しました。

コード

zundoko.f
      SUBROUTINE ZUNDKO()
        INTEGER CNTZUN,TIME,SEEDSZ
        INTEGER,ALLOCATABLE::SEED(:)
        REAL RND
        CALL RANDOM_SEED(SIZE=SEEDSZ)
        ALLOCATE(SEED(SEEDSZ))
        CNTZUN=0
        DO
          CALL SYSTEM_CLOCK(COUNT=TIME)
          DO I=1,SEEDSZ
            SEED(I)=SEED(I)+TIME
          END DO
          CALL RANDOM_SEED(PUT=SEED)
          CALL RANDOM_NUMBER(RND)
          IF (RND .LT. 0.5) THEN
            PRINT *,"ズン"
            CNTZUN=CNTZUN+1
          ELSE
            PRINT *,"ドコ"
            IF (CNTZUN .GE. 4) THEN
              PRINT *,"キ・ヨ・シ!"
              RETURN
            END IF
            CNTZUN=0
          END IF
        END DO
      END SUBROUTINE

      PROGRAM MAIN
        CALL ZUNDKO()
      END PROGRAM    

実行例

$ gfortran -o zundoko zundoko.f ; ./zundoko 
 ズン
 ドコ
 ドコ
 ドコ
 ズン
 ドコ
 ドコ
 ズン
 ズン
 ズン
 ズン
 ズン
 ドコ
 キ・ヨ・シ!