#!r6rs
(import (rnrs) (srfi :27))
(define zun "ズン")
(define doko "ドコ")
(define kiyoshi "キ・ヨ・シ!")
(define (zun? o) (string=? zun o))
(define (doko? o) (string=? doko o))
(define (kiyoshi! o) (display o) (display kiyoshi) (exit 0))
(define zun&doko (vector zun doko))
(define (zundoko-generator) (vector-ref zun&doko (random-integer 2)))
(define init-state 0)
(define (gen-next n) (lambda (o) (display o) n))
(define ->init (gen-next init-state))
(define states
`#((,zun? ,(gen-next 1) ,->init)
(,zun? ,(gen-next 2) ,->init)
(,zun? ,(gen-next 3) ,->init)
(,zun? ,(gen-next 4) ,->init)
(,doko? ,kiyoshi! ,(gen-next 4)) ;; more than 4 zun, loop it
))
(random-source-randomize! default-random-source)
(let loop ((ns init-state))
(let ((token (zundoko-generator))
(state (vector-ref states ns)))
(if ((car state) token)
(loop ((cadr state) token))
(loop ((caddr state) token)))))
普通に4回と1回を数えた方がすっきりするような気もしないでもない。
Let's start Scheme
▼
2016-03-19
ズンドコキヨシ
風邪(と思われる)で1週間寝込んでいたのだが、体調がほぼ戻ってきた。Twitter等でズンドコキヨシなるものを見かけたので、1週間ぶりにリハビリを兼ねて書いてみた。(1週間もコード書かないと鈍るよね?)
No comments:
Post a Comment