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'