Anarch Golf 951. Hypotenuse length

,

http://golf.shinh.org/p.rb?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)