珠玉のプログラミング言語で試す「6÷2(1+2)=?」

「6÷2(1+2)=?」を正しく計算できるプログラミング言語があるのかをいろんな人が試しました(ほとんどoota_kenさんですが)。
21
しんすく(け) さん。 @snsk

うそーん^-^; :「上のエントリーでは「6÷2(1+2)=1は間違い、正解は9」としているが正解は「1」である。」 :6÷2(1 2)=9と発表しているバカガジェット通信 http://anond.hatelabo.jp/20110507090156

2011-05-08 11:13:51
Kenichiro Ota @oota_ken

@snsk これコンパイルエラーになる言語多そうじゃないですか?演算子の結合強度以前にマスマティカぐらいしかとおらない予感。

2011-05-08 11:19:40
しんすく(け) さん。 @snsk

@oota_ken YES。javascript:alert(6/2*(1+2)); ならとおりますが、* をとると動かないすね^-^;

2011-05-08 11:23:52
はるーる @halu_lu

@snsk 答えはどっちなんですかー?ヽ(;▽;)ノ

2011-05-08 11:25:03
Kenichiro Ota @oota_ken

@snsk ちょっといくつかの言語で試してみますね!

2011-05-08 11:26:59
しんすく(け) さん。 @snsk

@harukaloryy 静岡大学の人的には1っぽいねー(T-T) ただ、少なくともChromeのJSパーザはこういう解釈はしない。わからないす(T-T) http://bit.ly/jUjWDt

2011-05-08 11:32:46
Kenichiro Ota @oota_ken

6/2(2+1) の調査 Ruby, Perl, C#, Javaともコンパイルエラーw できる言語どこにあんだ?

2011-05-08 11:36:52
Kenichiro Ota @oota_ken

なんと、Googleの検索でできたよwww 6/2(2+1) でもGoogleでは演算子の結合順序が違うってか、2(2+1)は2 * (2+1)の省略形とみなされその後式が評価されるから結果は 9になるよw

2011-05-08 11:41:29
Kenichiro Ota @oota_ken

Google先生 6/2(2+1) => (6 / 2) * (2 + 1) => 9 となる

2011-05-08 11:42:40
Kenichiro Ota @oota_ken

ちなみにPowerShellも6/2(2+1)はコンパイルエラー(式評価エラー)

2011-05-08 11:47:21
Kenichiro Ota @oota_ken

ってことで、Google先生以外僕の使う言語ではだめでした・・・あとはシェルスクリプトぐらいだけど・・・もーいーや、あのBlogは一体何の言語で評価したんだろう。試してないだけの脳内言語じゃ演算子の結合規則なんて言語依存なので嘘だぞ。

2011-05-08 11:49:17
Kenichiro Ota @oota_ken

2(2+1)な風に書いて結合される言語なんて僕マスマティカしか見たことないんだけど、他にあるんかしら。いまんところGoogle先生以外全滅どす。

2011-05-08 11:56:10
Kenichiro Ota @oota_ken

だが、F#ならやってくれる、F#ならやってくれる!てことで試す。

2011-05-08 12:00:18
Kenichiro Ota @oota_ken

F#でも、だめだっただぬ・・・

2011-05-08 12:01:55
Kenichiro Ota @oota_ken

ちなみにTL上でみると、Objective-CとJavaScriptでも駄目な模様・・・唯一パースできるGoogle先生の電卓は半端ねっす

2011-05-08 12:03:03
Kenichiro Ota @oota_ken

なんか、ばかばかしい試みな気がするので、Silverlightの勉強に戻ろう。たぶん、Blogの彼は軟化の言語で試したわけじゃなくて頭の中で考えたことなんだろう・・・

2011-05-08 12:04:29
Kenichiro Ota @oota_ken

@snsk 結合度の頭の体操にはなりましたが、やはり何かの言語で裏付けを取ってほしかったです。

2011-05-08 12:07:55
Kenichiro Ota @oota_ken

そうですね。なぜかGoogle先生は違う結合で評価してしまっていますがw RT @hirosawatomoya: @oota_ken たぶん、(通常の)プログラミング言語ではミス防止のために、演算子がなかったらエラーでこけるようになってるんでしょうね。

2011-05-08 12:08:31
Kenichiro Ota @oota_ken

だが待ってほしい・・・Excelが残っていたではないか!

2011-05-08 12:08:58
Kenichiro Ota @oota_ken

Excel 2010ではなんと、エラー自動訂正機能で 6/2(2+1) => 6/2*(2+1)ってなったーーー ってか、やっぱり普通こっちだろう。多分2(2+1)が仮に先に評価されてもRubyだとメソッド呼び出しになると思うのでそんなのねーよってことで終了

2011-05-08 12:11:11
Kenichiro Ota @oota_ken

もはや手元に試せる処理系がないので、あきらめます。とりあえず、唯一処理できたGoogle先生は 6/2(2+1) => (6/2) * (1+2) => 9 と評価しました。以上!

2011-05-08 12:18:04
suginoy @suginoy

@oota_ken おお!結局GoogleとMSしかその問題に答えられないってことじゃないですか。

2011-05-08 12:22:59
Kenichiro Ota @oota_ken

@suginoy が、Google先生は言語処理系としては間違っている答えがwww

2011-05-08 12:25:26
suginoy @suginoy

@oota_ken あ、間違いなんだw ということは、Excel最強で、方眼紙信者の主張を強化することに。。

2011-05-08 12:29:24