僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
まず、EmacsLisp。
(/ 1.0 0) 1.0e+INF
続いて、clisp。
[1]> (/ 1.0 0) *** - /: division by zero The following restarts are available: ABORT :R1 Abort main loop
それから gosh。
gosh> (/ 1.0 0) +inf.0
EmacsLisp や gosh では、クォートしてもしなくても
1.0e+INF とか +inf.0 が返った。
無限小は、頭にマイナスをつければいいらしい。
以前書いた、
配列を使った fizzbuzz から、
除算を省いてみた。
そのとき気づかなかったのは、
循環リストを知らなかったから、だろうな。
#!/usr/bin/env python3 mylist = \ [False, 'fizzbuzz', False, False, 'fizz', \ False, 'buzz', 'fizz', False, False, \ 'fizz', 'buzz', False, 'fizz', False] for x in range(1,101): if mylist[0]: print(mylist[0]) else: print(x) mylist.insert(0, mylist.pop())
これも配列の順番(要するに、
尻尾を切って
頭に足すので、
回転方向が逆になる)がちょっと間違っていたので、
訂正。
普通([1, 2, 3] なら [2, 3, 1]にする)なら list.append(list.pop(0)) あたりか。
昨日のコードをもっと汚く変えてみた。
繰り返しの増分を15から30にして、一回のループで30行を
一度に出力するようにする。ループ回数とprintf()の回数が
さらに半減したはずである。
流石にこれだけの手入力は面倒なので
python3 で "%d\nfizz\n%d\n ... %d\nfizz\nbuzz\n" と、
i, i+2, ... i+26, i+27 を作成し、 printf()に詰め込んでみた。
出力結果のチェックサムを確認し、COREi5 + Mem8GB + Ubuntu12.04 で
time ./hogehoge > /dev/null してみる。
でも、結果は数 % 遅くなっただけだった。
ちなみに、普通に近いはずのfizzbuzzとの差は、ここでは 三倍に届かなかった。
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。