開発環境
- macOS Catalina - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Go (プログラミング言語)
入門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 コメント:
コメントを投稿