私はEdabitでこの課題に遭遇し、このビット単位の操作ソリューションを解決できませんでした。
notNotNot = (a,b) => !!(a%2 >> b)
チャレンジ:
//Something which is not true is false, but something which is not not true is true!
//Create a function where given n number of "not", evaluate whether it's true or false.
//Examples:
notNotNot(1, true) ➞ false
// Not true
notNotNot(2, false) ➞ false
// Not not false
notNotNot(6, true) ➞ true
// Not not not not not not true
私はその演算子を研究しました:
左端のビットのコピーを左から押し込むことにより右にシフトし、右端のビットが落ちるようにします。
私は理解したと思います(たとえばが5 >> 1と0101 >> 1評価されるのと同じです0010)が、それがブール値でどのように機能するかわかりませんか?私が知っているtrueと評価された1とfalseすると0。
notNotNot(2, true)次の点を考慮してください:戻りますがfalse、真ではありません(!!true)である必要がありtrueます...
falseに解決するaの奇数のnotのみを考慮しtrueます。
notNotNot = (a,b) => !!((a%2)^b)代わりに言います...
(a, b) => !!((a + b) % 2)ですか?
true=1(10進数)=01(2 進数)を1つ左にシフトすると、102進数または210進数が生成されます。