sumim #765(2007/07/13 15:00 GMT) [ Smalltalk ] Rating0/0=0.00
Squeak Smalltalk で n が 10 以下で(^_^;)。あと「n はプログラムを書き換えずに指定できるように」が「n を引数に取る関数として and/or 起動時オプションとして指定できるように書け」という意味なら、そのようにはしていないのでごめんなさい。(GUI な Squeak Smalltalk 環境ではそうするメリットが少ない←関数 and/or そもそもできない←起動時オプション なので…)
1 2 3 4 5 6 7 8 9 10 11 12 13
| n labels numOfVBarsPair m last | n := 10. World findATranscript: nil. numOfVBarsPair := {m := (n alignedTo: 2) / 2. m - (n \\ 2)}. Transcript cr; show: (labels := String streamContents: [:ss | (1 to: n) do: [:i | ss print: i - 1] separatedBy: [ss space]]). 1 to: (last := numOfVBarsPair first * 2 + (n - 1 \\ 2)) do: [:row | Transcript cr; show: '|'. 1 to: n - 1 do: [:i | | vBarOrSp | vBarOrSp := row < last ifTrue: [' _' atWrap: i + row] ifFalse: [$ ]. Transcript nextPut: vBarOrSp; nextPut: $|]]. Transcript cr; show: labels reversed
Rating0/0=0.00-0+
1 reply [ reply ]
sumim #767(2007/07/13 15:09 GMT) Rating0/0=0.00
すみませんっ! * 無加工(text) * 整形済み(pre) の意味が分かっていませんでした。orz 可能でしたら上のコメントの修正お願いします。m(__)m
[ reply ]
sumim
#765()
[
Smalltalk
]
Rating0/0=0.00
| n labels numOfVBarsPair m last | n := 10. World findATranscript: nil. numOfVBarsPair := {m := (n alignedTo: 2) / 2. m - (n \\ 2)}. Transcript cr; show: (labels := String streamContents: [:ss | (1 to: n) do: [:i | ss print: i - 1] separatedBy: [ss space]]). 1 to: (last := numOfVBarsPair first * 2 + (n - 1 \\ 2)) do: [:row | Transcript cr; show: '|'. 1 to: n - 1 do: [:i | | vBarOrSp | vBarOrSp := row < last ifTrue: [' _' atWrap: i + row] ifFalse: [$ ]. Transcript nextPut: vBarOrSp; nextPut: $|]]. Transcript cr; show: labels reversedRating0/0=0.00-0+
1 reply [ reply ]