海道一の弓取り
Advent Calendar 2022 9日目1です。
2022/12/25が来るのが待ち遠しいです。
私のAdvent Calendar 2022 一覧。
はじめに
Elixirを楽しんでいますか
AtCoderのB - FizzBuzz SumをFortranで解いてみます。
Fortranに興味をもったきっかけは、Nervesで、Fortranが使えるようになるらしいからです。
この記事では、Elixirのことは取り扱っていません。
B - FizzBuzz Sum
AtCoderは、オンラインで参加できるプログラミングコンテスト(競技プログラミング)のサイトです。リアルタイムのコンテストで競い合ったり、約3000問のコンテストの過去問にいつでも挑戦することが出来ます。
AtCoderのB - FizzBuzz Sum問題とは次のような問題です。
例: 入力が5の場合、FizzBuzzの列は、1,2,Fizz,4,Buzz
となり、数字だけを足し算して、7が答え
問題文はリンク先をご参照ください。
プログラミングの基本である
- 順次
- 分岐
- 繰り返し
が含まれている良問だとおもっています。
PROGRAM HELLO
INTEGER(8) :: J
READ (*, *) N
I = 1
J = 0
DO WHILE (I .LE. N)
IF ((MOD(I, 3) .NE. 0) .AND. (MOD(I, 5) .NE. 0)) THEN
J = J + I
ENDIF
I = I + 1
END DO
PRINT '(i0)', J
END PROGRAM HELLO
たったこれだけのことを書くのに、いろいろ詰まりました。
なにせ私は、Fortran初心者なので。
実行環境はDockerで用意しました。
FROM alpine
WORKDIR /home/fortran
RUN set -x && \
apk update && \
apk add --no-cache gfortran musl-dev
CMD ["/bin/sh"]
version: '3'
services:
fortran:
build: .
container_name: fortran
volumes:
- .:/home/fortran
tty: true
Run
ローカルでの実行は以下の感じです。
$ docker-compose run --rm fortran gfortran hello.f -o hello
$ docker-compose run --rm fortran ./hello
AtCoderはもちろんパスします。
Wrapping up
Enjoy Fortran
2022年に流行る技術予想 ーー それは、Fortran on Nervesです