AA 折れ線グラフクイズ 3
Shiro さんの Scheme(Gauche)版 (2006/03/14 21:31:12 PST) を直訳気味に(意訳もしまくり)。
| graph |
graph := [:input |
| input2plist plist drawrow yy |
input2plist := [:in |
| r0 |
r0 := OrderedCollection new.
in inject: 1 into: [:y0 :cmd |
cmd caseOf: {
[$R] -> [r0 addLast: {y0. $/}. y0 + 1].
[$F] -> [r0 addLast: {y0 - 1. $\}. y0 - 1].
[$C] -> [r0 addLast: {y0. $_}. y0]}].
r0].
drawrow := [:pl :y1 |
pl inject: false into: [:r1 :pp |
pp first = y1
ifTrue: [Transcript show: pp last. true]
ifFalse: [Transcript space. r1]]].
plist := input2plist value: input.
yy := (plist collect: [:each | each first]) max.
[Transcript cr. drawrow value: plist value: yy] whileTrue: [yy := yy - 1]].
World findATranscript: nil.
graph value: 'RCRFCRFFCCRFFRRCRRCCFRFRFF'