僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
やり方自体は、bc とあまり変わらない。
もう少し、「らしさ」を出したいけど。
1 to: 100 do: [: x | (x \\ 15) == 0 ifTrue: [Transcript show: 'fizzbuzz'; cr. ] ifFalse: [ (x \\ 5) == 0 ifTrue: [Transcript show: 'buzz'; cr.] ifFalse: [ (x \\ 3) == 0 ifTrue: [ Transcript show: 'fizz'; cr. ] ifFalse: [ Transcript show: x printString; cr. ] ] ] ]
チュートリアル
や、
昨年十一月の記事を読み返してなんとか。
剰余の演算子が "\\" であることは、知らなかったのか、
それとも忘れていたのか、もはや分からない。
前に 書いていた が、ぜんぜん覚えてなかった。
st> 36rPZ 935 st> 37rPZ stdin:34: Numeric base too large 10 stdin:34: Unexpected EOF while scanning number
デフォルトで2進数から35進数まで対応。代入は ":=" 、 コメントは"comment"、ピリオドが文の区切り。それから。
#!/usr/bin/env gst
a := 5 . (a * a) printNl .
foo := 'bar' . foo printNl
=>
25
'bar'
2行目末尾の . を入れ忘れると、
25 Object: 25 error: did not understand #foo MessageNotUnderstood(Exception)>>signal (ExcHandling.st:254) SmallInteger(Object)>>doesNotUnderstand: #foo (SysExcept.st:1407) UndefinedObject>>executeStatements (foobar.gt:2) ./foobar.gt:3: expected expression
またfizzbuzz。違う方法を思いついたので、python3で。
fizz と buzz と、 fizzbuzz の出力順序のパターンを配列に突っ込んで
どれでもなければ番号+1 を出力するようにしてみた。
fbarray=['','','fizz','','buzz','fizz','','','fizz', 'buzz','','fizz','','','fizzbuzz'] for num in range(0,100): fb = fbarray[num%15] if fb == '': print(num+1) else: print(fb)
python2でも動いた。
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。