AA 折れ線グラフクイズ 3


Shiro さんSchemeGauche)版 (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'