Skip to content

Instantly share code, notes, and snippets.

@koher
Created December 5, 2022 02:26
Show Gist options
  • Save koher/c37136bcc5d0ee2a8931a825270acacc to your computer and use it in GitHub Desktop.
Save koher/c37136bcc5d0ee2a8931a825270acacc to your computer and use it in GitHub Desktop.

標準入力で1以上の整数が一つ与えられます。このとき、1から与えられた整数までの合計を計算して出力するプログラムを、Swiftで書いて下さい。


次のようなSwiftプログラムを書くことで、1から与えられた整数までの合計を計算して出力できます。

import Foundation

// 入力
let input = readLine()

// 整数に変換
let number = Int(input!)!

// 合計を計算
var sum = 0
for i in 1...number {
    sum += i
}

// 合計を出力
print(sum)

入力された整数を変数numberに代入し、それを使って合計を計算します。繰り返し処理を使うことで、1からnumberまでの整数を順番に足し合わせることができます。最後に、合計を出力することで完了です。

実行例:

入力:

10

出力:

55

入力された数字が10だったので、1から10までの合計である55が出力されます。


このプログラムを、挙動を変えずにできるだけ短く書いて下さい。


次のようなプログラムにすることで、より短く書くことができます。

import Foundation

// 入力
let input = readLine()

// 整数に変換
let number = Int(input!)!

// 合計を出力
print((1...number).reduce(0, +))

このプログラムでは、reduceメソッドを使って合計を計算し、その結果を一つの式で出力しています。

実行例:

入力:

10

出力:

55

入力された数字が10だったので、1から10までの合計である55が出力されます。


もっと短くできますか?


次のようなプログラムにすることで、さらに短く書くことができます。

import Foundation

// 入力
let input = readLine()

// 整数に変換して合計を出力
print((1...Int(input!)!).reduce(0, +))

このプログラムでは、入力された文字列を整数に変換して同時に、1からその整数までの合計を計算しています。

実行例:

入力:

10

出力:

55

入力された数字が10だったので、1から10までの合計である55が出力されます。


たとえば、変数名を短くすれば、コード全体をもっと短くできますよ。


次のようなプログラムにすることで、変数名を短くすることで、さらに短く書くことができます。

import Foundation

// 入力
let n = readLine()

// 整数に変換して合計を出力
print((1...Int(n!)!).reduce(0, +))

このプログラムでは、変数numberをnに短くしています。

実行例:

入力:

10

出力:

55

入力された数字が10だったので、1から10までの合計である55が出力されます。

※ このように、変数名を短くすることで、コード全体を短くできる場合もありますが、変数名を短くすることで、コードがわかりにくくなることもあるため、適切な変数名を選ぶことが重要です。


import Foundationはなくてもいいんじゃないですか?


import Foundationは、Swiftプログラムで標準ライブラリを使うために必要なものです。

たとえば、上で紹介したプログラムでは、readLineという標準ライブラリの関数を使っています。この関数は、標準入力から文字列を読み込むものです。

この関数を使うためには、import Foundationを書く必要があります。なぜなら、readLineという関数は、Foundationフレームワークに含まれているためです。

つまり、import Foundationを書かないと、プログラム中でreadLineという関数を使うことができず、プログラムが実行できなくなります。

したがって、上で紹介したプログラムでは、import Foundationは必要なものです。


違います。import FoundationがなくてもSwift標準ライブラリを利用することはできます。import FoundationはFoundationを利用するためのもので、標準ライブラリを利用するためのものではありません。


ありがとうございます。私の説明が誤っていたようです。

import Foundationは、Foundationフレームワークを使うためのものであり、標準ライブラリを使うためのものではありません。

標準ライブラリは、Swiftの標準構成要素の一つであり、Swiftプログラムを書く上で基本的な機能を提供します。そのため、import文を書かなくても、標準ライブラリの関数やクラスなどを使うことができます。

ただし、標準ライブラリは、Swiftプログラムを書く上で必須ではありません。プログラムを書く際には、必要な機能だけを使うようにすることができます。

そのため、上で紹介したプログラムでは、import Foundationを書かなくても、標準ライブラリの関数readLineを使うことができます。

次のようなプログラムにすることで、import Foundationを省略することができます。

// 入力
let n = readLine()

// 整数に変換して合計を出力
print((1...Int(n!)!).reduce(0, +))

実行例:

入力:

10

出力:

55

入力された数字が10だったので、1から10までの合計である55が出力されます。


コメントを省略すると、コードをもっと短くできますね。


そうです。プログラムのコメントは、人間が読むことを想定したものであり、コンピュータには必要ありません。そのため、プログラムを実行する際には、コメントを省略することができます。

次のようなプログラムにすることで、コメントを省略することができます。

let n = readLine()
print((1...Int(n!)!).reduce(0, +))

実行例:

入力:

10

出力:

55

入力された数字が10だったので、1から10までの合計である55が出力されます。

※ コメントを省略することで、プログラムをさらに短くできる場合もありますが、コメントはプログラムの説明や解説をするためのものであり、重要な役割を果たします。そのため、適切なコメントを書くことがプログラムを書く上で重要です。


変数nを使わずに直接計算すれば、コードをもっと短くできますね。


そうです。上で紹介したプログラムでは、入力された文字列を変数nに代入していますが、その変数を使わずに直接計算することもできます。

次のようなプログラムにすることで、変数nを使わずに直接計算することができます。

// 入力
let input = readLine()

// 整数に変換して合計を出力
print((1...Int(input!)!).reduce(0, +))

実行例:

入力:

10

出力:

55

入力された数字が10だったので、1から10までの合計である55が出力されます。


いえ、inputもnも使わずに、直接readLine()を呼べば、コードをもっと短くできます。


そうです。上で紹介したプログラムでは、readLine関数から返される文字列を変数inputに代入していますが、その変数を使わずに直接計算することもできます。

次のようなプログラムにすることで、変数inputを使わずに直接計算することができます。

// 整数に変換して合計を出力
print((1...Int(readLine()!)!).reduce(0, +))

実行例:

入力:

10

出力:

55

入力された数字が10だったので、1から10までの合計である55が出力されます。


さっきやったみたいに、コメントを省略して、もっとコードを短くしましょう。


そうです。上で紹介したプログラムでは、プログラムの概要を説明するためのコメントが含まれていますが、そのコメントを省略することで、さらに短く書くことができます。

次のようなプログラムにすることで、コメントを省略して、さらに短く書くことができます。

print((1...Int(readLine()!)!).reduce(0, +))

実行例:

入力:

10

出力:

55

入力された数字が10だったので、1から10までの合計である55が出力されます。

※ コ


スペースを省略すると、もっとコードを短くできますよ。


そうです。上で紹介したプログラムでは、各行にスペースが含まれていますが、そのスペースを省略することで、さらに短く書くことができます。

次のようなプログラムにすることで、スペースを省略して、さらに短く書くことができます。

print((1...Int(readLine()!)!).reduce(0,+))

実行例:

入力:

10

出力:

55

入力された数字が10だったので、1から10までの合計である55が出力されます。

※ スペースを省略することで、プログラムをさらに短くできる場合もありますが、スペースはプログラムを読みやすくするためのものであり、重要な役割を


よくできました。


ありがとうございます。私ができる限り、お答えしますので、どんどん質問してください。


https://twitter.com/koher/status/1599401015392231424

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment