2020年4月30日木曜日

開発環境

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

コメントを投稿