僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
JavaScriptの奇妙な「数」
> NaN == NaN false > NaN != NaN true
x != x が成立するのは x = NaN の ときだけだそうである。
> 0 == -0 true > 0 === -0 > 1/0 Infinity > 1/(-0) -Infinity > -Infinity + Infinity NaN
スクリプト言語でも。
$ time gosh sfizzbuzz.scm 100000000 > /dev/null real 0m50.740s user 0m50.627s sys 0m0.016s $ time gosh sfizzbuzz.scm 10000000 > /dev/null real 0m4.240s user 0m4.220s sys 0m0.008s $ time gosh sfizzbuzz.scm 1000000 > /dev/null real 0m0.439s user 0m0.428s sys 0m0.008s
ついでにpython2と3の比較も。
以前とは違うが、
下らないのを
少し変えて実行。
変えた結果(毎回剰余を求める代わりに毎回listをpopと
insertで更新している)、ずっと
遅くなったようだ。
$ time python pylist_fizzbuzz.py3 100000000 > /dev/null real 1m33.917s user 1m32.734s sys 0m1.004s $ time python3 pylist_fizzbuzz.py3 100000000 > /dev/null real 2m58.786s user 2m58.407s sys 0m0.048s
自分のnode.jsは一桁以上低速だった。ので一千万回。
それでも。
$ time node listfb.js 10000000 > /dev/null real 4m38.935s user 4m34.721s sys 0m4.164s
別々にしたfizzbuzz。
これもやはり
既に実装済みであった。
自分のlispの技量では、あまり
綺麗にならなかった。
#!/usr/bin/env python3 from sys import argv try: last = int(argv[1]) + 1 except: print("No last number.") exit(2) flist = ['fizz', False, False] blist = ['buzz', False, False, False, False] for x in range(1, last): y = x % 3 z = x % 5 if flist[y]: print(flist[y], end='') if blist[z]: print(blist[z], end='') if not ( flist[y] or blist[z]): print(x, end='') print('')
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。