開発環境
- macOS Catalina - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Go (プログラミング言語)
入門Goプログラミング (Nathan Youngman(著)、Roger Peppé(著)、吉川 邦夫(監修, 翻訳)、翔泳社)のUNIT 4(コレクション)、LESSON 20(チャレンジ:ライフのスライス)の20.1(新しい世界)の解答を求めてみる。
コード
package main
import (
"fmt"
"math/rand"
"time"
)
const (
width = 80
height = 25
)
type universe [][]bool
func newUniverse() universe {
u := make([][]bool, height, height)
for i := range u {
u[i] = make([]bool, width, width)
}
return u
}
func (u universe) set(i, j int, b bool) {
u[i][j] = b
}
func (u universe) alive(i, j int) bool {
return u[i][j]
}
func (u universe) seed() {
for i := 0; i < height; i++ {
for j := 0; j < width; j++ {
u.set(i, j, rand.Intn(100) <= 24)
}
}
}
func (u universe) show() {
for i := 0; i < height; i++ {
for j := 0; j < width; j++ {
if u.alive(i, j) {
fmt.Printf("*")
} else {
fmt.Printf(" ")
}
}
fmt.Println("")
}
}
func main() {
rand.Seed(time.Now().UnixNano())
u := newUniverse()
u.show()
fmt.Println("生きたセルの種を蒔く")
u.seed()
u.show()
}
入出力結果(Zsh、PowerShell、Terminal)
% go build conwaygameoflife.go
% ./conwaygameoflife
生きたセルの種を蒔く
* *** * * * ** * * ** * * *
* * ** * * * * ** * * ** * * *
* * * * * * * ** * * * * * * ***
* *** * * ** * *** * * * * *
* * * * ** * * * ** * * * * **
* * * * ** * * * * * ** * * * * ** * * ** *
** * ** * * * *** ** * * * *
* * * *** * * * * * * * * * * * * ** *** *
* * * * ** * *** * ** * * * ** *
* * * * * * * * * * ** * * **
** * * * * * ** * * * * * * ** ** * * * *
** * * * ** ** ** * * * * **** ***** * ** * *
** * * * * * **** * * * * * *
* * * ** * * * ** ** * *** ** * * * * * * *
* * * * * * **** * * ** * * * * **** * **
* * * ** ** * * * * * * * * **
* * * * ** ** *** ** * *** * * ** * *
* * * * ** * *** ** * * * * * ** * *
** * * * ** * * * * * * *** * * *
* * * * * ** *** * *** * * *
* * * ** * ** ** * * *** * ** **
* * * ** * * * * * * ** ** * * * ** **
* ** * * * * * * * ** * * * * * *** **
* * * * * * * * *** * * ***** ** * * *
* *** ** * ** * * *** * * * * * * *
% ./conwaygameoflife
生きたセルの種を蒔く
* ** * * * * * * * * * * * *
** * * * * * ** * * * * ** *
* ** * * ** * **** * * * * * ** *
** * * * * ** * * * * *** * * *
* * * * * * * * *** * * ** *
* * * ** * * * ** * * *** * ** * * ** * * ***
* ** ** * * * ** * * * ** * * * ** * * ** **
* * **** * * * ** * * * * * * ****
* *** ** ** * * * ** * ** * * * * * * *
***** ** * * * ** * * ** * *** *
* * **** * * * * * ** * * * * *
* * * * **** * * * * ** * * * * * * ** ** * ** *** *
* * * * *** * **** * * * * * * ** * *
* * * * * * * * * * * * ** * * *** * *** * * * ** *
* * * * * * * * * ** * ** * * *
** * *** * ** * * * * * ** * * ** * **
* * * * *** *** ** * * * ** * * *
* * * ** ** * * * * *** * * *
* * * * ** * * * * * ***** * * * **
* * * * * * * ** * * * * * * * ** * *
* * * *** * * ** * * * * *** * * * * *
* *** * * * * * * * * * * **
* * *** * * * * * * * * * ** * **
* * * * ** * *** * **** * * * * * * * * *
* * * * * * * * ** * * * * ***** ***
%
0 コメント:
コメントを投稿