開発環境
- macOS Catalina - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Go (プログラミング言語)
入門Goプログラミング (Nathan Youngman(著)、Roger Peppé(著)、吉川 邦夫(監修, 翻訳)、翔泳社)のUNIT 5(状態と振る舞い)、LESSON 25(チャレンジ: 火星の動物保護区域)の解答を求めてみる。
コード
package main
import (
"fmt"
"math/rand"
"time"
)
type mover interface {
move() string
}
type eater interface {
eat() string
}
type animal interface {
mover
eater
}
type dog struct {
name string
}
func (d dog) String() string {
return d.name
}
func (d dog) move() string {
return "てくてく"
}
func (d dog) eat() string {
var food string
switch rand.Intn(2) {
case 0:
food = "骨付き肉"
case 1:
food = "ドッグフード"
}
return food
}
type cat struct {
name string
}
func (c cat) String() string {
return c.name
}
func (c cat) move() string {
return "するする"
}
func (c cat) eat() string {
var food string
switch rand.Intn(2) {
case 0:
food = "ミルク"
case 1:
food = "キャットフード"
}
return food
}
func main() {
rand.Seed(time.Now().UnixNano())
d := dog{name: "犬"}
c := cat{name: "猫"}
animals := []animal{d, c}
sunrise := 7
sunset := 19
for sol := 1; sol <= 3; sol++ {
fmt.Printf("%v日目\n", sol)
for h := sunrise; h <= sunset; h++ {
a := animals[rand.Intn(2)]
fmt.Printf("%2v時 %v: ", h, a)
switch rand.Intn(2) {
case 1:
fmt.Printf("%v移動した。\n", a.move())
default:
fmt.Println(a.eat())
}
}
}
}
入出力結果(Zsh、PowerShell、Terminal)
% go run ./mars.go
1日目
7時 猫: するする移動した。
8時 猫: ミルク
9時 犬: ドッグフード
10時 犬: てくてく移動した。
11時 犬: てくてく移動した。
12時 猫: するする移動した。
13時 猫: キャットフード
14時 犬: てくてく移動した。
15時 犬: ドッグフード
16時 猫: キャットフード
17時 犬: 骨付き肉
18時 犬: ドッグフード
19時 猫: するする移動した。
2日目
7時 猫: するする移動した。
8時 犬: 骨付き肉
9時 猫: キャットフード
10時 犬: 骨付き肉
11時 猫: するする移動した。
12時 猫: ミルク
13時 犬: てくてく移動した。
14時 犬: ドッグフード
15時 猫: キャットフード
16時 犬: ドッグフード
17時 犬: てくてく移動した。
18時 猫: ミルク
19時 犬: てくてく移動した。
3日目
7時 猫: するする移動した。
8時 犬: てくてく移動した。
9時 犬: ドッグフード
10時 猫: するする移動した。
11時 猫: するする移動した。
12時 猫: するする移動した。
13時 猫: するする移動した。
14時 猫: キャットフード
15時 犬: てくてく移動した。
16時 猫: ミルク
17時 犬: てくてく移動した。
18時 猫: するする移動した。
19時 犬: ドッグフード
% go run ./mars.go
1日目
7時 犬: 骨付き肉
8時 猫: キャットフード
9時 犬: ドッグフード
10時 猫: するする移動した。
11時 猫: キャットフード
12時 犬: 骨付き肉
13時 猫: キャットフード
14時 犬: てくてく移動した。
15時 猫: するする移動した。
16時 犬: てくてく移動した。
17時 猫: するする移動した。
18時 猫: キャットフード
19時 犬: てくてく移動した。
2日目
7時 犬: てくてく移動した。
8時 犬: ドッグフード
9時 犬: てくてく移動した。
10時 猫: ミルク
11時 犬: 骨付き肉
12時 犬: 骨付き肉
13時 猫: ミルク
14時 犬: てくてく移動した。
15時 猫: するする移動した。
16時 犬: てくてく移動した。
17時 猫: するする移動した。
18時 猫: キャットフード
19時 猫: するする移動した。
3日目
7時 犬: てくてく移動した。
8時 犬: てくてく移動した。
9時 猫: するする移動した。
10時 猫: ミルク
11時 猫: するする移動した。
12時 犬: 骨付き肉
13時 猫: キャットフード
14時 犬: ドッグフード
15時 猫: ミルク
16時 猫: するする移動した。
17時 猫: キャットフード
18時 猫: するする移動した。
19時 猫: するする移動した。
% go run ./mars.go
1日目
7時 猫: するする移動した。
8時 犬: てくてく移動した。
9時 猫: するする移動した。
10時 犬: 骨付き肉
11時 猫: するする移動した。
12時 猫: キャットフード
13時 犬: てくてく移動した。
14時 犬: てくてく移動した。
15時 犬: てくてく移動した。
16時 猫: ミルク
17時 犬: てくてく移動した。
18時 猫: ミルク
19時 犬: てくてく移動した。
2日目
7時 猫: ミルク
8時 猫: ミルク
9時 犬: ドッグフード
10時 猫: ミルク
11時 猫: するする移動した。
12時 犬: てくてく移動した。
13時 犬: てくてく移動した。
14時 猫: キャットフード
15時 猫: するする移動した。
16時 猫: キャットフード
17時 猫: するする移動した。
18時 犬: ドッグフード
19時 猫: ミルク
3日目
7時 猫: ミルク
8時 犬: 骨付き肉
9時 犬: てくてく移動した。
10時 猫: キャットフード
11時 犬: ドッグフード
12時 猫: するする移動した。
13時 猫: するする移動した。
14時 犬: 骨付き肉
15時 猫: するする移動した。
16時 犬: ドッグフード
17時 犬: 骨付き肉
18時 犬: てくてく移動した。
19時 猫: キャットフード
% go run ./mars.go
1日目
7時 猫: するする移動した。
8時 犬: てくてく移動した。
9時 猫: するする移動した。
10時 犬: てくてく移動した。
11時 犬: てくてく移動した。
12時 犬: ドッグフード
13時 犬: てくてく移動した。
14時 犬: ドッグフード
15時 猫: キャットフード
16時 犬: てくてく移動した。
17時 猫: キャットフード
18時 猫: するする移動した。
19時 猫: するする移動した。
2日目
7時 犬: てくてく移動した。
8時 犬: てくてく移動した。
9時 犬: てくてく移動した。
10時 猫: するする移動した。
11時 犬: 骨付き肉
12時 猫: するする移動した。
13時 猫: ミルク
14時 犬: てくてく移動した。
15時 猫: するする移動した。
16時 犬: てくてく移動した。
17時 猫: するする移動した。
18時 猫: ミルク
19時 犬: てくてく移動した。
3日目
7時 犬: ドッグフード
8時 猫: キャットフード
9時 猫: ミルク
10時 猫: ミルク
11時 猫: するする移動した。
12時 猫: キャットフード
13時 犬: てくてく移動した。
14時 犬: 骨付き肉
15時 猫: するする移動した。
16時 猫: するする移動した。
17時 犬: 骨付き肉
18時 犬: 骨付き肉
19時 犬: てくてく移動した。
% go run ./mars.go
1日目
7時 猫: するする移動した。
8時 猫: ミルク
9時 猫: ミルク
10時 猫: キャットフード
11時 犬: 骨付き肉
12時 猫: キャットフード
13時 犬: ドッグフード
14時 犬: ドッグフード
15時 猫: するする移動した。
16時 猫: ミルク
17時 猫: キャットフード
18時 猫: するする移動した。
19時 猫: するする移動した。
2日目
7時 猫: キャットフード
8時 猫: キャットフード
9時 犬: てくてく移動した。
10時 犬: ドッグフード
11時 猫: ミルク
12時 犬: てくてく移動した。
13時 犬: てくてく移動した。
14時 犬: ドッグフード
15時 犬: てくてく移動した。
16時 犬: てくてく移動した。
17時 犬: 骨付き肉
18時 猫: するする移動した。
19時 猫: ミルク
3日目
7時 犬: ドッグフード
8時 犬: 骨付き肉
9時 猫: キャットフード
10時 猫: するする移動した。
11時 猫: キャットフード
12時 猫: ミルク
13時 犬: てくてく移動した。
14時 犬: てくてく移動した。
15時 犬: てくてく移動した。
16時 猫: するする移動した。
17時 猫: するする移動した。
18時 猫: キャットフード
19時 猫: キャットフード
%
0 コメント:
コメントを投稿