2020年5月9日土曜日

開発環境

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

コメントを投稿