開発環境
- macOS Catalina - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Go (プログラミング言語)
入門Goプログラミング (Nathan Youngman(著)、Roger Peppé(著)、吉川 邦夫(監修, 翻訳)、翔泳社)のUNIT 6(ネズミの穴を下って)、LESSON 26(ポインタ)の練習問題の解答を求めてみる。
コード
package main
import (
"fmt"
"math/rand"
"strings"
"time"
)
type turtle struct {
x, y int
}
func (t *turtle) right() {
t.x++
}
func (t *turtle) left() {
t.x--
}
func (t *turtle) down() {
t.y++
}
func (t *turtle) up() {
t.y--
}
func (t turtle) String() string {
return fmt.Sprintf("(%v, %v)", t.x, t.y)
}
func main() {
for j := 0; j < 5; j++ {
rand.Seed(time.Now().UnixNano())
t := turtle{x: 0, y: 0}
for i := 0; i < 10; i++ {
fmt.Printf("移動回数: %v回 位置: %v\n", i, t)
switch rand.Intn(4) {
case 0:
t.right()
case 1:
t.left()
case 2:
t.down()
default:
t.up()
}
}
fmt.Printf("最終位置: %v\n", t)
fmt.Println(strings.Repeat("-", 50))
}
}
入出力結果(Zsh、PowerShell、Terminal)
% go run ./turtle.go
移動回数: 0回 位置: (0, 0)
移動回数: 1回 位置: (0, 1)
移動回数: 2回 位置: (0, 2)
移動回数: 3回 位置: (1, 2)
移動回数: 4回 位置: (2, 2)
移動回数: 5回 位置: (1, 2)
移動回数: 6回 位置: (0, 2)
移動回数: 7回 位置: (0, 1)
移動回数: 8回 位置: (1, 1)
移動回数: 9回 位置: (1, 0)
最終位置: (1, -1)
--------------------------------------------------
移動回数: 0回 位置: (0, 0)
移動回数: 1回 位置: (0, 1)
移動回数: 2回 位置: (0, 0)
移動回数: 3回 位置: (-1, 0)
移動回数: 4回 位置: (-2, 0)
移動回数: 5回 位置: (-2, -1)
移動回数: 6回 位置: (-2, -2)
移動回数: 7回 位置: (-3, -2)
移動回数: 8回 位置: (-2, -2)
移動回数: 9回 位置: (-1, -2)
最終位置: (0, -2)
--------------------------------------------------
移動回数: 0回 位置: (0, 0)
移動回数: 1回 位置: (-1, 0)
移動回数: 2回 位置: (0, 0)
移動回数: 3回 位置: (0, 1)
移動回数: 4回 位置: (0, 2)
移動回数: 5回 位置: (-1, 2)
移動回数: 6回 位置: (-2, 2)
移動回数: 7回 位置: (-1, 2)
移動回数: 8回 位置: (-2, 2)
移動回数: 9回 位置: (-2, 1)
最終位置: (-3, 1)
--------------------------------------------------
移動回数: 0回 位置: (0, 0)
移動回数: 1回 位置: (-1, 0)
移動回数: 2回 位置: (-1, -1)
移動回数: 3回 位置: (-1, -2)
移動回数: 4回 位置: (0, -2)
移動回数: 5回 位置: (1, -2)
移動回数: 6回 位置: (1, -1)
移動回数: 7回 位置: (1, -2)
移動回数: 8回 位置: (2, -2)
移動回数: 9回 位置: (2, -1)
最終位置: (3, -1)
--------------------------------------------------
移動回数: 0回 位置: (0, 0)
移動回数: 1回 位置: (-1, 0)
移動回数: 2回 位置: (-2, 0)
移動回数: 3回 位置: (-3, 0)
移動回数: 4回 位置: (-4, 0)
移動回数: 5回 位置: (-3, 0)
移動回数: 6回 位置: (-2, 0)
移動回数: 7回 位置: (-1, 0)
移動回数: 8回 位置: (0, 0)
移動回数: 9回 位置: (0, -1)
最終位置: (-1, -1)
--------------------------------------------------
%
0 コメント:
コメントを投稿