Go 言語で「基礎プログラミング演習 I 〜100 本ノック中級編」を解いてみる-No.58「棒グラフ」
はじめに
「基礎プログラミング演習 I 〜100 本ノック中級編」を解いてみます。
取り扱う問題は以下のサイトを引用させていただきました。
検証環境
$ uname -moi
x86_64 unknown GNU/Linux
$ head -n 2 /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
$ go version | head -n 1
go version go1.16.3 linux/amd64
問題
No. 58 棒グラフ
0 以上の整数値を 5 つ入力させ、それぞれの値に対して、次の形式でグラフを描くプログラムを作成せよ。
形式:左端に値を表示し、適切に空白を空けて":"を書く(:で揃えるためにタブ\t を使うとよい)。その後ろに値の数だけ*を描くが、5 個おきに空白を1つ入れる。具体例は下記の実行例を参照すること。
# 【実行例、下線部は入力例】
$ ./knock58
input data[0]: 7
input data[1]: 10
input data[2]: 14
input data[3]: 15
input data[4]: 21
7 :***** **
10 :***** *****
14 :***** ***** ****
15 :***** ***** *****
21 :***** ***** ***** ***** *
回答
knock58.go
package main
import (
"fmt"
"strconv"
)
func main() {
nums := make([]int, 5)
for i := 0; i < len(nums); i++ {
fmt.Printf("input data[%d]: ", i)
fmt.Scan(&nums[i])
}
for _, n := range nums {
bar := ""
for i := 0; i < n; i++ {
if i%5 == 0 && i > 0 {
bar += " "
}
bar += "*"
}
fmt.Println(strconv.Itoa(n) + "\t:" + bar)
}
}
実行
$ go run knock58.go
input data[0]: 7
input data[1]: 10
input data[2]: 14
input data[3]: 15
input data[4]: 21
7 :***** **
10 :***** *****
14 :***** ***** ****
15 :***** ***** *****
21 :***** ***** ***** ***** *
ひとこと
Java では推奨されない String 型の append 処理、Go 言語ではどうなんでしょうね?
ディスカッション
コメント一覧
まだ、コメントがありません