Go 言語で「基礎プログラミング演習 I 〜100 本ノック中級編」を解いてみる-No.49「九九」

はじめに

「基礎プログラミング演習 I 〜100 本ノック中級編」を解いてみます。

取り扱う問題は以下のサイトを引用させていただきました。

検証環境

1
2
3
4
5
6
7
8
9
$ 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. 49 九九

九九の表を、2 重の繰り返しを使って表示するプログラムを作成せよ。2 重の繰り返しを使わず単に表示するだけではダメ。値の間はタブ(\t)を使って間をあけること。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 【実行例】
$ ./knock49
1	2	3	4	5	6	7	8	9
2	4	6	8	10	12	14	16	18
3	6	9	12	15	18	21	24	27
4	8	12	16	20	24	28	32	36
5	10	15	20	25	30	35	40	45
6	12	18	24	30	36	42	48	54
7	14	21	28	35	42	49	56	63
8	16	24	32	40	48	56	64	72
9	18	27	36	45	54	63	72	81

回答

knock49.go

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
package main

import (
	"fmt"
	"strconv"
	"strings"
)

func main() {
	nums := make([]string, 9)

	for i := 0; i < 9; i++ {
		for j := 0; j < 9; j++ {
			nums[j] = strconv.Itoa((i + 1) * (j + 1))
		}

		fmt.Println(strings.Join(nums, "\t"))
	}
}

実行

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$ go run knock49.go
1       2       3       4       5       6       7       8       9
2       4       6       8       10      12      14      16      18
3       6       9       12      15      18      21      24      27
4       8       12      16      20      24      28      32      36
5       10      15      20      25      30      35      40      45
6       12      18      24      30      36      42      48      54
7       14      21      28      35      42      49      56      63
8       16      24      32      40      48      56      64      72
9       18      27      36      45      54      63      72      81

ひとこと

やはり C/C++/Java/C# といった言語の流れを組んでいるようですね。タブ文字の出力が同じ方法で実現できました。