アカウント名:
パスワード:
凡人が何年考えてもたどり着けないコードってどんなコードなんだろう?だれか教えてください。
天才というのは既存の概念に囚われず物事を考える人、だと思っている。よって、出てきたものをみても結果だけ取り出せば平凡なものが多いと思う。簡単に引用できるもので、最近自分が出会ってすごいと感じたのはJavascriptになんで排他論理和の論理演算子がないのか?というstackoverflowの回答。
(!X ^ !Y)
と書いたらいい。だそうだ。実際はこうなる過程もちゃんと説明されている、ぜひ元記事を読むことをお勧めする。共感した人が多かったらしく、この回答か結構賛同票を集めている。
できたものが問題じゃないんだよ、そこにたどり着くことが天才の天才たる所以だ。
これかな http://stackoverflow.com/questions/4540422/why-is-there-no-logical-xor... [stackoverflow.com]
>(というか、Xが0001で真, Yが0010で真のときに真になっちゃう気がする)ビット演算?
実際動かしてないからわかんないけど、論理値の計算にビット演算子が出てくるのに違和感がある。ECMAScriptの言語仕様みてないけど、この動作って保証されてるの?素直に「(x && !y) || (!x && y)」とかでいいし、ビット演算なら「^」でいいような。
そもそもの
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
アレゲはアレゲ以上のなにものでもなさげ -- アレゲ研究家
天才プログラマーってどんなコード書くの? (スコア:0)
凡人が何年考えてもたどり着けないコードってどんなコードなんだろう?だれか教えてください。
Re: (スコア:0)
天才というのは既存の概念に囚われず物事を考える人、だと思っている。
よって、出てきたものをみても結果だけ取り出せば平凡なものが多いと思う。
簡単に引用できるもので、最近自分が出会ってすごいと感じたのはJavascriptになんで排他論理和の論理演算子がないのか?というstackoverflowの回答。
(!X ^ !Y)
と書いたらいい。だそうだ。実際はこうなる過程もちゃんと説明されている、ぜひ元記事を読むことをお勧めする。
共感した人が多かったらしく、この回答か結構賛同票を集めている。
できたものが問題じゃないんだよ、そこにたどり着くことが天才の天才たる所以だ。
Re: (スコア:2)
stackoverflowで、Javascript logical xor で検索しても、(!X ^ !Y) の式が出てくる記事が見当たりませんでした。
(というか、Xが0001で真, Yが0010で真のときに真になっちゃう気がする)
よく出てくるのは、こっちの式で、こっちはちゃんと動きそうな感じですね。
((boolean1 && !boolean2) || (boolean2 && !boolean1))
Re: (スコア:0)
これかな
http://stackoverflow.com/questions/4540422/why-is-there-no-logical-xor... [stackoverflow.com]
>(というか、Xが0001で真, Yが0010で真のときに真になっちゃう気がする)
ビット演算?
実際動かしてないからわかんないけど、論理値の計算にビット演算子が出てくるのに違和感がある。
ECMAScriptの言語仕様みてないけど、この動作って保証されてるの?
素直に「(x && !y) || (!x && y)」とかでいいし、ビット演算なら「^」でいいような。
そもそもの
Re:天才プログラマーってどんなコード書くの? (スコア:2)
そもそも、私のコメントでは、! をビット否定と勘違いしていましたが、論理否定なので、一応辻褄は合うんですね。
(javascriptでの整数->boolean変換は、0が偽で非0が真。boolean->整数変換は真が1で偽が0。!は論理否定なので、xが10だろうと100だろうと、xが真なら !xは、0。xが0ならxが偽なので、!xは1になるため、ビット排他的論理和を取っても、正しく動作する)
(!x ^ !y) だと、戻り値が0/1になるので、!!(!x ^ !y)みたいに、頭に!!をつけて、booleanへ変換できるみたいなことも書いてあって興味深かったです。
まあ、おっしゃるとり、「(x && !y) || (!x && y)」 の方が素直で読み間違いが無いので、私も書くならこっちで書きますが。