জাভাস্ক্রিপ্ট (ES6), 38 34 30 29 28 বাইট
যে কোনও সংখ্যক পৃথক পরামিতি হিসাবে ইনপুট নেয়। রিটার্ন 0
বা 1
।
(a,b,c,d)=>!(d|(a^b^c)%7)^!c
পরীক্ষার মামলা
let f =
(a,b,c,d)=>!(d|(a^b^c)%7)^!c
console.log('[Truthy]')
console.log(f(6 ))
console.log(f(6, 2 ))
console.log(f(1, 3 ))
console.log(f(2, 1, 3))
console.log(f(3, 2, 6))
console.log('[Falsy]')
console.log(f(1, 6 ))
console.log(f(5, 4, 2 ))
console.log(f(3, 1, 4 ))
console.log(f(5, 4, 6, 2 ))
console.log(f(1, 2, 3, 4, 5, 6))
কিভাবে?
নীচে প্রদত্ত প্যারামিটারের সংখ্যা অনুসারে মূল এক্সপ্রেশনটির সরলীকৃত সংস্করণ রয়েছে, অপরিজ্ঞাত ভেরিয়েবলগুলি 0 বা মিথ্যা দ্বারা জোর করা হচ্ছে :
# of param. | simplified expression | comment
------------+------------------------------+---------------------------------------------
1 | !(a % 7) ^ 1 | always true
2 | !((a ^ b) % 7) ^ 1 | false for (1,6), (2,5) and (3,4)
3 | !((a ^ b ^ c) % 7) | see the table below
4+ | !(d | (a ^ b ^ c) % 7) | always false
এনবি : (ক, খ, সি) এর ক্রম কিছু যায় আসে না কারণ তারা সবসময় একসাথে থাকে।
সবচেয়ে জটিল ঘটনা তৃতীয়টি। এখানে একটি টেবিলটি সমস্ত সম্ভাব্য সংমিশ্রণগুলি দেখায়:
a | b | c | a^b^c | %7 | =0? | faces that sum to 7
--+---+---+-------+----+-----+--------------------
1 | 2 | 3 | 0 | 0 | Yes | none
1 | 2 | 4 | 7 | 0 | Yes | none
1 | 2 | 5 | 6 | 6 | No | 2 + 5
1 | 2 | 6 | 5 | 5 | No | 1 + 6
1 | 3 | 4 | 6 | 6 | No | 3 + 4
1 | 3 | 5 | 7 | 0 | Yes | none
1 | 3 | 6 | 4 | 4 | No | 1 + 6
1 | 4 | 5 | 0 | 0 | Yes | none
1 | 4 | 6 | 3 | 3 | No | 1 + 6
1 | 5 | 6 | 2 | 2 | No | 1 + 6
2 | 3 | 4 | 5 | 5 | No | 3 + 4
2 | 3 | 5 | 4 | 4 | No | 2 + 5
2 | 3 | 6 | 7 | 0 | Yes | none
2 | 4 | 5 | 3 | 3 | No | 2 + 5
2 | 4 | 6 | 0 | 0 | Yes | none
2 | 5 | 6 | 1 | 1 | No | 2 + 5
3 | 4 | 5 | 2 | 2 | No | 3 + 4
3 | 4 | 6 | 1 | 1 | No | 3 + 4
3 | 5 | 6 | 0 | 0 | Yes | none
4 | 5 | 6 | 7 | 0 | Yes | none
অল্টার। সংস্করণ # 1, 32 বাইট
অ্যারে হিসাবে ইনপুট নেয়। একটি বুলিয়ান ফেরত দেয়।
a=>a.every(x=>a.every(y=>x+y-7))
পরীক্ষার মামলা
let f =
a=>a.every(x=>a.every(y=>x+y-7))
console.log('[Truthy]')
console.log(f([6] ))
console.log(f([6, 2] ))
console.log(f([1, 3] ))
console.log(f([2, 1, 3]))
console.log(f([3, 2, 6]))
console.log('[Falsy]')
console.log(f([1, 6] ))
console.log(f([5, 4, 2] ))
console.log(f([3, 1, 4] ))
console.log(f([5, 4, 6, 2] ))
console.log(f([1, 2, 3, 4, 5, 6]))
অল্টার। সংস্করণ # 2, ক্রোম / ফায়ারফক্স, 34 বাইট
এটি ক্রোম এবং ফায়ারফক্সের বাছাই পদ্ধতিগুলিকে আপত্তি করে। এটি এজ দিয়ে কাজ করে না।
অ্যারে হিসাবে ইনপুট নেয়। রিটার্ন 0
বা 1
।
a=>a.sort((a,b)=>k&=a+b!=7,k=1)&&k
পরীক্ষার মামলা
let f =
a=>a.sort((a,b)=>k&=a+b!=7,k=1)&&k
console.log('[Truthy]')
console.log(f([6] ))
console.log(f([6, 2] ))
console.log(f([1, 3] ))
console.log(f([2, 1, 3]))
console.log(f([3, 2, 6]))
console.log('[Falsy]')
console.log(f([1, 6] ))
console.log(f([5, 4, 2] ))
console.log(f([3, 1, 4] ))
console.log(f([5, 4, 6, 2] ))
console.log(f([1, 2, 3, 4, 5, 6]))