1. Qiita
  2. 投稿
  3. Go

春のズンドコ祭り Ruby vs Golang

  • 3
    いいね
  • 0
    コメント

Ruby使い(見習い)とGolang使い(見習い)で勝負です

vs 
  Ruby使い(見習い)       Golang使い(見習い)

評価基準(ちょう曖昧)

  • コードのバイト数が少ないこと
  • メモリ節約

Fight!!

Ruby

zundoko.rb
zds = []
loop.lazy.map{ ['ズン', 'ドコ'].sample }.each do |zd|
    print zd
    zds << zd
    break if zds.last(5) == ["ズン", "ズン", "ズン", "ズン", "ドコ"]
end
print " キ・ヨ・シ!"

Go言語

zundoko.go
package main

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

func main() {
    zun := "ズン"
    doko := "ドコ"
    answer := []string{zun, zun, zun, zun, doko}
    zundoko := []string{zun, doko}
    q := []string{}

    for {
        q = append(q, choice(zundoko))
        if len(q) >= len(answer) {
            say := q[len(q)-len(answer):]
            fmt.Println(say)
            sayKiyoshi(say, answer)
            q = say
        }
    }
}

func choice(list []string) string {
    rand.Seed(time.Now().UnixNano())
    i := rand.Intn(len(list))
    return list[i]
}

func sayKiyoshi(say []string, answer []string) {
    if reflect.DeepEqual(say, answer) {
        fmt.Println("キ・ヨ・シ!")
        os.Exit(0)
    }
}

結果(ちょう曖昧)

評価項目 winner
コードのバイト数が少ないこと  Ruby
メモリ節約 Go?

評価項目がよくわからない感じになった。引き分けに落ち着いた。

評価項目、他に何がありますかね?

Comments Loading...