あみだくじ
Posted feedbacks - Scheme
9:user> (print-result amidakuji) A B C D E | | |-| | |-| | |-| | |-| |-| |-| |-| | |-| | | | B D C A E => #<undef> 10:user>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | (define amidakuji
(string-append
"A B C D E\n"
"| | |-| |\n"
"|-| | |-|\n"
"| |-| |-|\n"
"|-| |-| |\n"
"|-| | | |\n"
))
(define (first-state line)
(map string->symbol (string-split line #\space)))
(define (update-state line prev-state)
(let1 amida (cdr (string-split line #\|))
(fold-right (lambda (s a k)
(if (string=? a "-")
(cons* (car k) s (cdr k))
(cons s k)))
'() prev-state amida)))
(define (solve amida)
(call-with-input-string amida
(lambda (in)
(port-fold
(cut update-state <> <>)
(first-state (read-line in))
(cut read-line in)))))
(define (print-result amida)
(display amida)
(print (string-join (map symbol->string (solve amida)) " ")))
|


greentea #4476() Rating4/6=0.67
[ reply ]