Anarch Golf 953. MIDI note number to frequency

,

http://golf.shinh.org/p.rb?MIDI+note+number+to+frequency

perl

37byteだった。私の提出はどれも8.1758に括り出すのをしていないので1B損している。

36byte

printf'%.2f
',8.1758*2**($_/12)for<>

変換式 $f = 2^{\frac{d-69}{12}} \cdot 440$ そのままな素直なコード。

参考: https://en.wikipedia.org/wiki/MIDI_Tuning_Standard

c

exp2を知らなかったので69byteを提出した。

65byte

main(n){while(gets(&n))printf("%.2f\n",8.1758*exp2(atoi()/12.));}

環境依存な解。 入力文字列をgets(&n)でstackにだばあして、stackに残った&nを暗黙にatoi()に拾わせている。

67byte

main(n){while(~scanf("%d",&n))printf("%.2f\n",8.1758*exp2(n/12.));}

portableな解ならおそらくこれ。 exp2を知らないと1B損する。

ruby

私は45byte。共通部分で抜けがあるので全部の言語で1Bずつ損していてつらい。

44byte

#!ruby -n
puts'%.2f'%2**($_.to_f/12+3.03136)

rubyでも素直にやる。幅があって、8.1758$<.map{|s| }でも同じ長さになる。

python 3.x

50byte

while 1:print('%.2f'%2**(int(input())/12+3.03136))

皆これ。**%より結合が強いけれど*はそうではないので、'%.2f'%8.1758*2**(int(input())/12)とはできない。