FortranでFizzBuzzしてみた

何故してみたのかは訊かないでください。

プログラム

      program fizzbuzz
      
      do i = 1, 100

         if(mod(i,3)==0 .or. mod(i,5)==0) then
            if(mod(i,3)==0) then
               write(*, fmt='(a)', advance='no') 'fizz'
            end if
            if(mod(i,5)==0) then
               write(*, fmt='(a)', advance='no') 'buzz'
            end if

            write (*, '()')
         else 
            write (*, '(I0)') i
         end if
         

      end do

      end program fizzbuzz

実行結果

1
2
fizz
4
buzz
fizz
7
8
fizz
buzz
11
fizz
13
14
fizzbuzz
16
17
fizz
:
(ry

感想

  • print で出力すると、強制的に先頭に空白が1個入り、末尾に改行が入る。
    • write で出力すれば空白は入らない。
    • advance='no' を指定すると改行も入らない。
  • 剰余は演算子でなく関数。
  • 正直面倒臭い。
  • はてなダイアリーににFortranコード出力モードがあったのが驚き。