トップ «前の日記(2012-11-30(Fri)) 最新 次の日記(2012-12-02(Sun))» 編集

屑俺日記

僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。


2012-12-01(Sat) 今日になってまだ25分。天気なんか分かるものか

GNU Smalltalk で fizzbuzz

やり方自体は、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. ] 
         ]
       ]
  ]

チュートリアル や、 昨年十一月の記事を読み返してなんとか。
剰余の演算子が "\\" であることは、知らなかったのか、 それとも忘れていたのか、もはや分からない。

gst 少し。また少し

前に 書いていた が、ぜんぜん覚えてなかった。

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や内容が変った場合はあしからず。

index.htmlは ここから。