Anarch Golf 951. Hypotenuse length
浮動小数点数の問題は横並びになりやすい印象がある。
c
hypotの有無による3Bの差と、表記のゆれを除いて皆同じコードであった。
76B
float a,b;main(){while(~scanf("%f%f",&a,&b))printf("%.2f\n",sqrt(a*a+b*b));}
私はhypotを忘れていたのでこれを提出した。
73B
float a,b;main(){while(~scanf("%f%f",&a,&b))printf("%.2f\n",hypot(a,b));}
hypotはC99で定義されている。
perl
ほぼ皆38Bで横並び。コードもほぼ同じだが、/ /の位置等の細かい違いは多い。
/ /が1になることを使って*で潰してるのは上手いと思った。
38B
/ /,printf"%.2f
",sqrt$`**2+$'**2for<>
ruby
ほぼ皆38B。私のは54Bだった(省略)。
どれも-aで$Fに取ってhypot(*$F)な感じにするもの。
ludoさん 38B
#!ruby -ap
$_="%.2f
"%Complex(*$F).abs
mitchsさん、xsotさん 39B
#!ruby -na
puts'%.2f'%eval($F*'i+').abs
解説
evalでなくComplexを使ったことで1Bの差が生まれている。
-pと-nの違いによる$_=とputsの差はない。
1.8.xではMath.hypot(*$F)が通る。
2.xでこれをすると$Fの要素がStringであるため例外が飛ぶ。
Complex(*$F)
eval($F*'i+')
(eval$F*'i+')
$_= + newline
puts
Complex(*$F).abs
Math.hypot(*$F)