2020年2月9日日曜日

開発環境

入門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 コメント:

コメントを投稿