gaucheで。
scheme初心者なのでもうちょい色々な実装見てみたいなぁ(チラ
(use util.queue)
(use math.mt-random)
(define mt (make <mersenne-twister> :seed (sys-time)))
(define (doudesuka? arr-src)
(define (get-one lst)
(let loop ((c (mt-random-integer mt 4)) (arr lst))
(if (= c 0)
(car arr)
(loop (- c 1) (cdr arr)))))
(define q (list->queue (list (get-one arr-src)
(get-one arr-src)
(get-one arr-src)
(get-one arr-src))))
(let loop ((d "") (sum-chars 0) (chk-lst q))
(if (equal? (queue->list q) arr-src)
(begin
(map (lambda (x) (set! sum-chars (+ sum-chars (string-length x)))) arr-src)
(map (lambda (x) (display x)) (queue->list q))
(newline)
(print sum-chars "文字で煽られました。" arr-src "!!!"))
(begin
(display (set! d (dequeue! q)))
(loop d (+ sum-chars (string-length d)) (enqueue! q (get-one arr-src)))
))))
(doudesuka? '("進捗" "どう" "です" "か"))
進捗進捗進捗進捗どう進捗どうですどうどうどうどうです進捗ですですどうかどう進捗か進捗か進捗かかか進捗進捗かかどうですかですかどうですどうかですどう進捗進捗かどう進捗ですか進捗ですですかどう進捗ですですかです進捗進捗か進捗か進捗か進捗どう進捗です進捗進捗です進捗ですかかどうどう進捗か進捗どう進捗ですどう進捗か進捗進捗ですどう進捗かどうどうどう進捗どうですか
178文字で煽られました。(進捗 どう です か)!!!