2019年12月22日日曜日

開発環境

入門Goプログラミング (Nathan Youngman(著)、Roger Peppé(著)、吉川 邦夫(監修, 翻訳)、翔泳社)のUNIT 1(命令型プログラミング)、LESSON 4(変数のスコープ)の練習問題の解答を求めてみる。

コード

package main

import (
 "fmt"
 "math/rand"
 "time"
)

var era = "AD"

func main() {
 rand.Seed(time.Now().UnixNano())
 for count := 0; count < 10; count++ {
  year := rand.Intn(3000) + 1
  month := rand.Intn(12) + 1
  daysInMonth := 31
  leap := year%400 == 0 || (year%100 != 0 && year%4 == 0)
  switch month {
  case 2:
   if leap {
    daysInMonth = 29
   } else {
    daysInMonth = 28
   }
  case 4, 6, 9, 11:
   daysInMonth = 30
  }
  day := rand.Intn(daysInMonth) + 1
  fmt.Printf("%v %4v %02v %02v\n", era, year, month, day)
 }
}

入出力結果(Zsh、PowerShell、Terminal)

% go run ./randomdates.go
AD 2668 01 06
AD 2834 11 06
AD 1896 12 06
AD 1955 01 18
AD 2078 07 23
AD 2443 04 07
AD 2250 11 09
AD 1597 08 26
AD 1396 12 08
AD 1766 10 06
% go run ./randomdates.go
AD 2871 04 06
AD 2216 02 20
AD 1975 07 07
AD 1316 10 21
AD 2767 01 07
AD 2555 03 31
AD   17 10 03
AD 2879 01 26
AD  333 10 28
AD 1214 04 21
% go run ./randomdates.go
AD 1504 03 07
AD  863 11 28
AD 2328 11 16
AD 1150 04 23
AD 2882 09 02
AD   39 09 25
AD  370 10 05
AD 2039 05 08
AD 2320 12 17
AD 1853 03 15
% go run ./randomdates.go
AD 1077 11 15
AD 2129 05 30
AD  692 12 23
AD 1429 01 12
AD  764 07 03
AD 1467 03 22
AD 2863 10 08
AD  830 11 05
AD 1984 04 25
AD 1125 10 19
% go run ./randomdates.go
AD 1100 02 11
AD  156 12 15
AD  237 11 04
AD 2819 12 21
AD  179 01 24
AD 2201 03 29
AD 2933 08 28
AD 2620 06 07
AD 2711 12 07
AD 2264 12 30
% 

0 コメント:

コメントを投稿