অপারেটরের চেয়ে কম সহ সমস্ত 16 টি বুলিয়ান ফাংশন প্রকাশ করুন


15

দুটি বাইনারি ভেরিয়েবল, এ এবং বি এর জন্য 16 টি পৃথক বুলিয়ান ফাংশন রয়েছে :

A B | F0 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | F13 | F14 | F15
-----------------------------------------------------------------------------------------
0 0 | 0  | 0  | 0  | 0  | 0  | 0  | 0  | 0  | 1  | 1  | 1   | 1   | 1   | 1   | 1   | 1  
0 1 | 0  | 0  | 0  | 0  | 1  | 1  | 1  | 1  | 0  | 0  | 0   | 0   | 1   | 1   | 1   | 1  
1 0 | 0  | 0  | 1  | 1  | 0  | 0  | 1  | 1  | 0  | 0  | 1   | 1   | 0   | 0   | 1   | 1  
1 1 | 0  | 1  | 0  | 1  | 0  | 1  | 0  | 1  | 0  | 1  | 0   | 1   | 0   | 1   | 0   | 1   

অপারেটরের চেয়ে কম <, যা সাধারণত বোলিয়ান মানগুলিতে প্রয়োগ করার সময় না, এবং, বা ওআর মতো লজিক অপারেটর হিসাবে ভাবা হয় না:

A B | A < B
-----------
0 0 | 0
0 1 | 1
1 0 | 0
1 1 | 0

মজার বিষয় হল, আমরা 15 টির মধ্যে যে কোনও একটিরই সিমুলেশন এক্সপ্রেশন ব্যবহার করে অনুকরণ করতে পারি ()<AB10। এই এক্সপ্রেশনগুলি যেমন পাঠ্য ও মূল্যায়ন করা হয় ঠিক তেমন অনেকগুলি স্ট্যান্ডার্ড প্রোগ্রামিং ভাষায় যেমন যেমন বন্ধনীগুলি অবশ্যই মেলাতে পারে এবং এর <উভয় পাশে যুক্তি থাকতে হবে।

বিশেষত, এই অভিব্যক্তিগুলি অবশ্যই নিম্নলিখিত ব্যাকরণের সাথে মেনে চলতে হবে ( ব্যাকাস-নুর আকারে দেওয়া ):

element ::= A | B | 1 | 0
expression ::= element<element | (expression)<element | element<(expression) | (expression)<(expression)

এর অর্থ হ'ল অকেজো পের্থেসিস এবং ফর্মটির অভিব্যক্তি A<B<1অনুমোদিত নয়।

সুতরাং অভিব্যক্তি A<BF4 ফাংশনটির সাথে মেলে এবং A<B<1অবশ্যই (A<B)<1বা এটিকে পরিবর্তন করতে হবে A<(B<1)

প্রমাণ করা যে 15 অন্যান্য ফাংশন সব এক্সপ্রেশন পরিণত করা যাবে, এটা এক্সপ্রেশন যে একটি সেট গঠন করতে যথেষ্ট বৈশিষ্ট্যগুলি সম্ভবত সম্পূর্ণরূপে নির্মিত , কারণ তারপর, সংজ্ঞা দ্বারা, তারা কোনো ফাংশন জন্য এক্সপ্রেশন মধ্যে গঠিত হতে পারে।

এক্সপ্রেশন এক এমনভাবে সেট করা আছে x<1(যেখানে xহয় Aবা Bযা), ¬xএবং (((B<A)<1)<A)<1যা, A → B। নেতিবাচক ( ¬) এবং জড়িত ( ) কার্যকরীভাবে সম্পূর্ণ হিসাবে পরিচিত

চ্যালেঞ্জ

অক্ষরগুলি ব্যবহার করে ()<AB10, উপরে বর্ণিত আকারে 16 টি এক্সপ্রেশন লিখুন যা 16 টি স্বতন্ত্র বুলিয়ান ফাংশনের প্রত্যেকটির সমান।

লক্ষ্যটি হ'ল প্রতিটি প্রকাশকে যতটা সম্ভব সংক্ষিপ্ত করে তোলা। আপনার স্কোরটি আপনার প্রতিটি 16 টি এক্সপ্রেশনের অক্ষরের সংখ্যার যোগফল। সর্বনিম্ন স্কোর জয়। টাইব্রেকার প্রথম উত্তরটিতে যায় (তবে তারা তাদের উত্তর পরে অন্য কারও কাছ থেকে নেওয়া সংক্ষিপ্ত মত প্রকাশের সাথে সম্পাদনা না করে)।

এই প্রতিযোগিতার জন্য আপনাকে প্রযুক্তিগতভাবে কোনও আসল কোড লেখার দরকার নেই তবে আপনি যদি ভাব প্রকাশ করতে সহায়তা করার জন্য কোনও প্রোগ্রাম লিখে থাকেন তবে সেগুলি পোস্ট করার জন্য আপনাকে উত্সাহ দেওয়া হবে।

আপনার অভিব্যক্তিটি প্রত্যাশিতভাবে কাজ করে কিনা তা পরীক্ষা করতে আপনি এই স্ট্যাক স্নিপেট ব্যবহার করতে পারেন:


8
-1, সমস্যা খুব সহজ।
isaacg

2
আমার ধারণা , অন্য উত্তর পোস্ট করার কোনও অর্থ নেই , তাই এখানে আমার চেষ্টা করা হয়েছে
এসপি 3000

7
@ আইস্যাক আপনি ঠিক বলেছেন আমি বলব এটি সর্বকালের সহজতম পিপিসিজি প্রতিযোগিতা থেকে অনেক দূরে তবে অনুকূল উত্তরগুলি প্রায় হুবহু মিল থাকবে তা প্রতিযোগিতা হিসাবে এক ধরণের বিরক্তিকর করে তোলে। যাইহোক, আমি কি করতে এটি বিশেষ মানুষ যারা যুক্তিবিজ্ঞান বিশেষজ্ঞদের নয়, একটি ব্যক্তিগত ব্যায়াম যেমন পুরোপুরি জরিমানা তোলে মনে করি। আমি নিশ্চিত যে পিপিসিগ্রে কমপক্ষে অর্ধেক লোক এখানে জয়ের জন্য নয়, অন্যথায় বিজয়ী জমা দিয়ে কোনও প্রশ্নের উত্তর দেবে না।
ক্যালভিনের

আমি সম্ভবত এটি বিতর্কিত গল্ফ অনুশীলনের সাথে তুলনা করব । এটি একটি মজাদার এবং আকর্ষণীয় প্রশ্ন ছিল, যদি কিছুটা সহজ হয়।
Sp3000

2
কারও আগ্রহী হলে এখানে 3 টি ভেরিয়েবল রয়েছে। দীর্ঘতম এক্সপ্রেশন মিলা (0, 0, 0, 1, 0, 1, 1, 0)এবং (0, 1, 1, 0, 1, 0, 0, 0)
Sp3000

উত্তর:


5

100 টি অক্ষর

0
(A<1)<B
B<A
A
A<B
B
((B<A)<((A<B)<1))<1
(A<(B<1))<1
A<(B<1)
(B<A)<((A<B)<1)
B<1
(A<B)<1
A<1
(B<A)<1
((A<1)<B)<1
1

9

এর কয়েকটির জন্য কয়েকটি বিকল্প রয়েছে, সুতরাং এই 100-চর সেটটি আগের পোস্ট হওয়াগুলির মতো নয়।

0
(B<A)<A
B<A
A
A<B
B
((A<B)<((B<A)<1))<1
(A<(B<1))<1
A<(B<1)
(A<B)<((B<A)<1)
B<1
(A<B)<1
A<1
(B<A)<1
((B<A)<A)<1
1

একটি সহজ প্রমাণ <কার্যকরীভাবে সম্পূর্ণ হ'ল A<(B<1)NOR দেয়।

আমি যে কোডটি এটি সন্ধান করলাম সেটি হ'ল দুটি বুলিয়ান অপ্টিমাইজেশন কোডের দুটি ভার্চুয়াল সরলকরণ যা আমি পূর্ববর্তী চ্যালেঞ্জগুলিতে দুটি ছোট পরিবর্তন করে ব্যবহার করেছি:

  1. ক্রিয়াকলাপের সংখ্যার চেয়ে অভিব্যক্তিটির স্কোরকে তার স্ট্রিংয়ের দৈর্ঘ্য করুন।
  2. দৈর্ঘ্য হ্রাস করার জন্য স্ট্রিংটিকে অপ্রয়োজনীয় বন্ধনীগুলি এড়াতে করুন।
import java.util.*;

public class PPCG48193 {

    public static void main(String[] args) {
        Expr[] optimal = new Expr[16];
        int unfound = 16;

        PriorityQueue<Expr> q = new PriorityQueue<Expr>();
        q.offer(new Expr(0, "0"));
        q.offer(new Expr(15, "1"));
        q.offer(new Expr(3, "A"));
        q.offer(new Expr(5, "B"));
        while (unfound > 0) {
            Expr e = q.poll();
            if (optimal[e.val] != null) continue;

            optimal[e.val] = e;
            unfound--;
            for (Expr e2 : optimal) {
                if (e2 != null) {
                    Expr e3 = e.op(e2), e4 = e2.op(e);
                    if (optimal[e3.val] == null) q.offer(e3);
                    if (optimal[e4.val] == null) q.offer(e4);
                }
            }
        }

        for (Expr e : optimal) System.out.println(e.expr);
    }

    private static class Expr implements Comparable<Expr> {
        public final int val;
        public String expr;

        public Expr(int val, String expr) {
            this.val = val;
            this.expr = expr;
        }

        public Expr op(Expr e) {
            String l = expr.contains("<") ? String.format("(%s)", expr) : expr;
            String r = e.expr.contains("<") ? String.format("(%s)", e.expr) : e.expr;
            return new Expr((15 - val) & e.val, String.format("%s<%s", l, r));
        }

        public int compareTo(Expr e) {
            int cmp = expr.length() - e.expr.length();
            if (cmp == 0) cmp = val - e.val;
            return cmp;
        }
    }
}

মোট চরিত্র গণনা কত?
ব্যবহারকারী 253751

@ এমমিবিস, ১০০ টি চর, অন্যদের মতো।
পিটার টেলর ২

"দৈর্ঘ্য হ্রাস করার জন্য" অপ্রয়োজনীয় প্রথম বন্ধনী এড়ান "না আপনি এগুলি এড়াবেন না যাতে আপনি সংক্ষিপ্ত হয়ে যাবেন তবে নিয়ম মেনে চলুন।
এরিক দ্য আউটগল্ফার

@ এরিকথ আউটগল্ফার, আমি আপনার অর্থটি 100% নিশ্চিত নই তবে আমার সেরা অনুমানটি হ'ল আপনি " এর অর্থ হ'ল এটির অর্থহীন প্যারাথেসিস এবং ফর্মটির অভিব্যক্তি A<B<1অনুমোদিত নয়। " যদি তাই হয় তবে টাইমস্ট্যাম্পগুলি পরীক্ষা করুন: এটি ছিল এই উত্তরের পরে তৈরি একটি সম্পাদনা ।
পিটার টেলর

2

100 টি অক্ষর

0
(A<B)<B
B<A
A
A<B
B
((A<B)<((B<A)<1))<1
(B<(A<1))<1
B<(A<1)
(A<B)<((B<A)<1)
B<1
(A<B)<1
A<1
(B<A)<1
((A<B)<B)<1
1

1

100 টি অক্ষর

0
(A<1)<B
B<A
A
A<B
B
((A<B)<((B<A)<1))<1
((B<1)<A)<1
(B<1)<A
(A<B)<((B<A)<1)
B<1
(A<B)<1
A<1
(B<A)<1
((A<1)<B)<1
1

আরে, এটি অন্যদের মতো ঠিক নয়। আমি এটিতে 10 মিনিটের মতো সময় কাটিয়েছি তাই এটি 2 বছরের পুরানো হলেও যাইহোক পোস্ট করা উপযুক্ত worth


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.