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)