LoginSignup
3
0

More than 1 year has passed since last update.

海道一の弓取り

Advent Calendar 2022 9日目1です。
:santa:2022/12/25が来るのが待ち遠しいです。
私のAdvent Calendar 2022 一覧

はじめに

Elixirを楽しんでいますか:bangbang::bangbang::bangbang:

AtCoderB - FizzBuzz SumFortranで解いてみます。

Fortranに興味をもったきっかけは、Nervesで、Fortranが使えるようになるらしいからです。

この記事では、Elixirのことは取り扱っていません。

B - FizzBuzz Sum

AtCoderは、オンラインで参加できるプログラミングコンテスト(競技プログラミング)のサイトです。リアルタイムのコンテストで競い合ったり、約3000問のコンテストの過去問にいつでも挑戦することが出来ます。

AtCoderB - FizzBuzz Sum問題とは次のような問題です。

例: 入力が5の場合、FizzBuzzの列は、1,2,Fizz,4,Buzzとなり、数字だけを足し算して、7が答え

問題文はリンク先をご参照ください。

プログラミングの基本である

  • 順次
  • 分岐
  • 繰り返し

が含まれている良問だとおもっています。

hello.f
      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で用意しました。

Dockerfile
FROM alpine

WORKDIR /home/fortran
RUN set -x && \
    apk update && \
    apk add --no-cache gfortran musl-dev

CMD ["/bin/sh"]
docker-compose.yml
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はもちろんパスします。

スクリーンショット 2022-01-05 22.04.33.png

Wrapping up :lgtm::lgtm::lgtm::lgtm:

Enjoy Fortran:bangbang::bangbang::bangbang:

2022年に流行る技術予想 ーー それは、Fortran on Nervesです:rocket::rocket::rocket:

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0