সর্বাধিক ফাংশন হ'ল বুলিয়ান ফাংশন যা তিনটি বুলিয়ান ইনপুট নেয় এবং সর্বাধিক সাধারণটি দেয়। উদাহরণস্বরূপ, যদি maj(x,y,z)
সংখ্যাগরিষ্ঠ ফাংশন হয় এবং T
সত্যকে F
চিহ্নিত করে এবং মিথ্যা চিহ্নিত করে:
maj(T,T,T) = T
maj(T,T,F) = T
maj(T,F,F) = F
maj(F,F,F) = F
এই প্রশ্নটি বুলিয়ান ফাংশনগুলি সংখ্যাগরিষ্ঠ ফাংশনের রচনা হিসাবে লেখার বিষয়ে উদ্বেগ প্রকাশ করে। সংখ্যাগরিষ্ঠ ফাংশনগুলির একটি 5-অ্যারি রচনার একটি উদাহরণ (x1,x2,x3,x4,x5) => maj(x1,x2,maj(x3,x4,x5))
। এই ফাংশনটি এই নমুনা ইনপুট ভেক্টরগুলিতে নিম্নলিখিত আউটপুটটি প্রদান করে:
(T,T,F,F,F) => maj(T,T,maj(F,F,F)) = maj(T,T,F) = T
(T,F,T,T,F) => maj(T,F,maj(T,T,F)) = maj(T,F,T) = T
(T,F,T,F,F) => maj(T,F,maj(T,F,F)) = maj(T,F,F) = F
(F,F,F,T,T) => maj(F,F,maj(F,T,T)) = maj(F,F,T) = F
কার্য
এমন একটি প্রোগ্রাম লিখুন যা একটি ধনাত্মক পূর্ণসংখ্যা এন এবং দৈর্ঘ্য এন ভেক্টরগুলির বুলিয়ানগুলির একটি তালিকা এবং সংখ্যাগরিষ্ঠ গেটের একটি গাছকে আউটপুট দেয় যা যদি সম্ভব হয় তবে প্রদত্ত ভেক্টরগুলির সমস্ত ক্ষেত্রে সত্য হয়ে যায়। ফাংশন সীমাবদ্ধতার তালিকায় নয় ভেক্টরগুলিতে সত্য বা মিথ্যা প্রত্যাবর্তন করতে পারে।
ভেক্টরগুলির তালিকা আপনার পছন্দ মতো কোনও ফর্ম্যাটে ইনপুট হতে পারে। যদি আপনি পছন্দ করেন তবে ভেক্টরকে ইনপুট না দেওয়ার পরিবর্তে আপনি ভেক্টরের সত্য অবস্থানের তালিকাটি ইনপুট করতে পারেন। উদাহরণস্বরূপ,
[TTF,TFT,FTT]
বা[[T,T,F],[T,F,T],[F,T,T]]
বা[[1,2],[1,3],[2,3]]
(সত্য অবস্থানের তালিকা) সব ঠিক আছে।আউটপুট কোনও বৈধ ট্রি ফর্ম্যাট হতে পারে। উদাহরণস্বরূপ,
maj(maj(x1,x2,x3),x4,x5)
কাজ করে। আপনি সম্ভবত ভেরিয়েবলগুলির জন্য স্ট্যান্ড-ইন হিসাবে একক সংখ্যা ব্যবহার করতে চাইবেন[[1,2,3],4,5]
। বিপরীত পোলিশ123m45m
এছাড়াও ঠিক আছে, উদাহরণস্বরূপ।যদি কোনও ফাংশন কাজ করে না, আপনার প্রোগ্রামটির একটি ত্রুটি বা আউটপুট একটি মিথ্যা মান উত্পন্ন করা উচিত।
যদি এমন একাধিক ফাংশন কাজ করে তবে আপনার প্রোগ্রামটি সেগুলির কোনওটি ফিরিয়ে দিতে পারে। ফাংশনটি সরল করার প্রয়োজন নেই। উদাহরণস্বরূপ,
maj(x1,x1,x2)
বাx1
সমতুল্য।
স্কোরিং
এটি কোড গল্ফ: বাইট জেতে সংক্ষিপ্ততম সমাধান।
পরীক্ষার কেস:
মনে রাখবেন যে এর প্রতিটি ক্ষেত্রেই অনেকগুলি সম্ভাব্য আউটপুট রয়েছে, সুতরাং আপনার এমন একটি পরীক্ষক স্ক্রিপ্ট লিখতে হবে যা আপনার আউটপুটটিকে কোনও ফাংশনে রূপান্তর করে এবং নির্দিষ্ট ফর্মটি প্রতিটি ইনপুট ভেক্টরগুলিতে সত্য করে দেয় কিনা তা পরীক্ষা করে দেখুন।
Input: 3, [TFF]
Output: 1 or [1,1,2] or [1,[1,2,2],[1,1,3]] or other equivalent
Input: 3, [TFF,FTF]
Output: Falsey or error (it's not possible)
Input: 3, [TTF,TFT]
Output: [1,2,3] or 1 or other equivalent
Input: 3, [TTF,TFT,FTT]
Output: [1,2,3] or [1,3,2] or other equivalent
Input: 4, [TTFF,TFTF,FFTT]
Output: Falsey or error
Input: 4, [TTTF,TTFT,TFTT,FTTT]
Output: [1, 2, 3] or [2,3,4], or many other options
Input: 5, [TTTFF,FTTFT,TFFFT]
Output: [1,[1,[1,2,5],[2,4,5]],3] or many other options
Input: 6, [TTTFFF,FTFTTF,TFFTFT]
Output: [1, 2, 4] or [1, [1, 2, 4], [2, 3, 4]] or others
Input: 5, [TTTFF,TTFTF,TTFFT,TFTTF,TFTFT,TFFTT,FTTTF,FTTFT,FTFTT,FFTTT]
Output: [[1, [1, 3, 5], 4], [1, 2, [2, 4, 5]], [2, 3, [3, 4, 5]]] or others
Input: 7, [TTTTFFF,TTTFTFF,TTTFFTF,TTTFFFT,TTFTTFF,TTFTFTF,TTFTFFT,TTFFTTF,TTFFTFT,TTFFFTT,TFTTTFF,TFTTFTF,TFTTFFT,TFTFTTF,TFTFTFT,TFTFFTT,TFFTTTF,TFFTTFT,TFFTFTT,TFFFTTT,FTTTTFF,FTTTFTF,FTTTFFT,FTTFTTF,FTTFTFT,FTTFFTT,FTFTTTF,FTFTTFT,FTFTFTT,FTFFTTT,FFTTTTF,FFTTTFT,FFTTFTT,FFTFTTT,FFFTTTT]
Output: [[[1, [1, [1, 4, 7], 6], 5], [1, [1, 3, [3, 6, 7]], [3, 5, [5, 6, 7]]], [3, 4, [4, [4, 5, 7], 6]]], [[1, [1, [1, 4, 7], 6], 5], [1, 2, [2, [2, 5, 7], 6]], [2, [2, 4, [4, 6, 7]], [4, 5, [5, 6, 7]]]], [[2, [2, [2, 4, 7], 6], 5], [2, 3, [3, [3, 5, 7], 6]], [3, [3, 4, [4, 6, 7]], [4, 5, [5, 6, 7]]]]]