開発環境
- 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"
"time"
)
type turtle struct {
x, y int
}
func (t *turtle) left() {
t.x--
}
func (t *turtle) right() {
t.x++
}
func (t *turtle) up() {
t.y++
}
func (t *turtle) down() {
t.y--
}
func (t turtle) String() string {
return fmt.Sprintf("亀の位置: (%v, %v)", t.x, t.y)
}
func main() {
rand.Seed(time.Now().UnixNano())
t := turtle{x: 0, y: 0}
for i := 0; i < 10; i++ {
switch rand.Intn(4) {
case 0:
t.left()
case 1:
t.right()
case 2:
t.up()
default:
t.down()
}
fmt.Println(t)
}
}
入出力結果(Zsh、PowerShell、Terminal)
% ./turtle
亀の位置: (1, 0)
亀の位置: (0, 0)
亀の位置: (1, 0)
亀の位置: (0, 0)
亀の位置: (-1, 0)
亀の位置: (-1, -1)
亀の位置: (-1, -2)
亀の位置: (0, -2)
亀の位置: (-1, -2)
亀の位置: (-1, -1)
% ./turtle
亀の位置: (0, 1)
亀の位置: (0, 2)
亀の位置: (-1, 2)
亀の位置: (-2, 2)
亀の位置: (-1, 2)
亀の位置: (-1, 3)
亀の位置: (-1, 4)
亀の位置: (0, 4)
亀の位置: (0, 3)
亀の位置: (0, 4)
%
0 コメント:
コメントを投稿