লজিক গেটস ম্যানুয়ালি


13

বেসিক লজিক গেটস অনুকরণ করে এমন একটি প্রোগ্রাম তৈরি করুন।

ইনপুট: একটি অল-ক্যাপস শব্দের পরে 2 1 ডিজিটের বাইনারি সংখ্যা, স্পেস দ্বারা পৃথক করা, যেমন OR 1 0। গেটস OR, AND, NOR, NAND, XOR, এবং XNORপ্রয়োজন হয়।

আউটপুট: প্রবেশ করা লজিক গেটের আউটপুট কী দুটি নম্বর দেওয়া হবে: হয় 1 বা 0।

উদাহরণস্বরূপ:
AND 1 0 হয়ে 0
XOR 0 1ওঠে 1
OR 1 1হয়ে 1
NAND 1 1ওঠে becomes0

এটি কোডগল্ফ, তাই সংক্ষিপ্ততম কোডটি জয়ী।


আমরা কি ইনপুট হিসাবে কোনও অ্যারে নিতে পারি?
কুইন্টেক

না @ কুইন্টেক আপনি পারবেন না
qazwsx

3
আমরা কি সত্য / মিথ্যা হিসাবে আউটপুট দিতে পারি?
xnor

5
নিশ্চিত @xnor (প্রাসঙ্গিক ব্যবহারকারীর নাম)
qazwsx

উত্তর:


3

জেলি , 13 10 বাইট

OSị“ʋN’BŻ¤

এটি অনলাইন চেষ্টা করুন!

পিটার টেলরের উত্তর পোর্ট



ধন্যবাদ কেভিন ক্রুইজসেন আহ, নতুন অ্যালগরিদমটি লক্ষ্য করার জন্য সেখানে ছিলেন না, ধন্যবাদ।
এরিক দি আউটগল্ফার

29

পাইথন 2 , 38 বাইট

lambda s:sum(map(ord,s))*3%61%37%9%7%2

এটি অনলাইন চেষ্টা করুন!

একটি ভাল ওল 'মডুলো চেইন ইনপুট স্ট্রিংয়ের ASCII মানগুলির যোগফলকে প্রয়োগ করে, এমন সমাধানের জন্য তৈরি করে যা কেবল মাত্রাতিরিক্ত। মোট ASCII মান, প্রতিটি সম্ভাব্য ইনপুট জন্য স্বতন্ত্র সঙ্গে ঐ যে ব্যতীত 0 1এবং 1 0একই ফলাফল, যা কাজ কারণ সব লজিক ব্যবহার গেটস প্রতিসম হয় দেব।

*3ইনপুট যে শুধুমাত্র বিট বিভিন্ন জন্য অন্যথায়-সংলগ্ন মান আলাদা করে, এই করতে এটি হার্ড গেলিক ভাষার শৃঙ্খল আপ বিভক্ত জন্য যেহেতু। মোড চেইনে সংখ্যার দৈর্ঘ্য এবং আকার 18 বাইনারি আউটপুট ফিট করতে মোটামুটি সঠিক পরিমাণ এনট্রপি তৈরি করে।

একটি সংক্ষিপ্ত সমাধান অবশ্যই ব্যবহার hash(s)বা সম্ভব id(s), তবে আমি এগুলি এড়িয়ে চলেছি কারণ তারা সিস্টেম নির্ভর dependent


পাইথন 2 , 50 বাইট

lambda s:'_AX0NRD'.find((s*9)[35])>>s.count('0')&1

এটি অনলাইন চেষ্টা করুন!

আরও কিছুটা নীতিগত সমাধান। প্রতিটি লজিক গেটটি ইনপুটটিতে প্রতিটি শূন্যের গণনার জন্য আলাদা ফলাফল দেয়, 1 থেকে 6-পর্যন্ত তিন-বিট সংখ্যা হিসাবে এনকোডযোগ্য প্রতিটি সম্ভাব্য লজিক গেটটি সংশ্লিষ্ট নম্বরটিতে ম্যাপ করা হয় (s*9)[35], যা সমস্ত স্বতন্ত্র। জন্য OR, এই বিট এক পড়া বাতাস বইছে অক্ষরের হওয়া তাই পারে 0বা 1, কিন্তু এটা কাজ সক্রিয় আউট যদি এটা চেক করতে 0, এবং একটি 1সঠিকভাবে একটি দেব 1ফলাফলের যাহাই হউক না কেন।


অভিশাপ, আমি আমার নিজস্ব আধুনিক মানগুলি খুঁজছিলাম, তবে আপনি আমাকে এটির জন্য প্রহার করলেন। আপনি কি এর জন্য আপনার কৌশলগুলি যে কোনও জায়গায় লিখে রেখেছেন, আমার বর্বর বলের পদ্ধতিগুলি খুব দীর্ঘ সময় নিতে পারে
জো কিং

2
@ জোকিং আমি মূলত মোট নিষ্ঠুর শক্তি চালিয়েছি *a%b%c%d%e%2, সত্যিই চতুর কিছুই নয়। একমাত্র আকর্ষণীয় জিনিসটি *মোডগুলির সামনে রাখছিল; আমি অন্য ফর্ম্যাট চেষ্টা করিনি।
xnor

বাহ যে কেবল মনের উদ্রেক! আমি এটির জন্য একটি হ্যাশ জাতীয় পদ্ধতিও আশা করি না। আমি কি আপনার উত্তরের 45 বাইট জেএস বন্দর তৈরি করতে পারি?
শিয়ারু আসাকোটো

@ শিেরুআসাকোটো অবশ্যই এটির জন্য যান।
xnor

1
@ এক্সনর আমি আপনার মতো ঠিক একই পদ্ধতিটি ব্যবহার করেছি, তাই আমি নিজে থেকে এটি পোস্ট করা ঠিক অনুভব করব না, তবে এটি 36 বাইট হতে পারে ।
nedla2004

10

জাভাস্ক্রিপ্ট (ES6), 39 বাইট

s=>341139>>parseInt(btoa(s),34)%86%23&1

এটি অনলাইন চেষ্টা করুন!

কিভাবে?

আমরা parseInt()কোন বেসের সাথে কাজ করছি তা বিবেচনা করেই আমরা স্পেস পার্স করতে পারি না । সুতরাং আমরা পরিবর্তে ইনপুট স্ট্রিংয়ের একটি বেস-64 represent উপস্থাপনা ইনজেক্ট করি। এটি =প্যাডিং অক্ষর তৈরি করতে পারে (যা parseInt()উভয় দিয়ে পার্স করা যায় না) তবে এগুলি স্ট্রিংয়ের শেষে অবস্থিত হওয়ার গ্যারান্টিযুক্ত এবং নিরাপদে উপেক্ষা করা যেতে পারে।

আমরা বেস হিসাবে পার্স এবং একটি মডিউল প্রয়োগ করি , তার পরে একটি মডিউল , যা নিম্নলিখিত ফলাফল দেয়। এর মধ্যে নির্ভুলতা হারিয়ে যাওয়ার কারণে অকার্যকরগুলি অন্তর্ভুক্ত রয়েছে। চূড়ান্ত ফলাফলটি , সর্বোচ্চ সত্যবাদী সূচকটি , যা 19-বিট দেখার বিটমাস্কের দিকে নিয়ে যায় ।348623[0..19]18

 input      | to base-64     | parsed as base-34 | mod 86 | mod 23 | output
------------+----------------+-------------------+--------+--------+--------
 "AND 0 0"  | "QU5EIDAgMA==" |  1632500708709782 |   26   |    3   |    0
 "AND 0 1"  | "QU5EIDAgMQ==" |  1632500708709798 |   42   |   19   |    0
 "AND 1 0"  | "QU5EIDEgMA==" |  1632500708866998 |   34   |   11   |    0
 "AND 1 1"  | "QU5EIDEgMQ==" |  1632500708867014 |   50   |    4   |    1
 "OR 0 0"   | "T1IgMCAw"     |     1525562056532 |   52   |    6   |    0
 "OR 0 1"   | "T1IgMCAx"     |     1525562056533 |   53   |    7   |    1
 "OR 1 0"   | "T1IgMSAw"     |     1525562075028 |   58   |   12   |    1
 "OR 1 1"   | "T1IgMSAx"     |     1525562075029 |   59   |   13   |    1
 "XOR 0 0"  | "WE9SIDAgMA==" |  1968461683492630 |   48   |    2   |    0
 "XOR 0 1"  | "WE9SIDAgMQ==" |  1968461683492646 |   64   |   18   |    1
 "XOR 1 0"  | "WE9SIDEgMA==" |  1968461683649846 |   56   |   10   |    1
 "XOR 1 1"  | "WE9SIDEgMQ==" |  1968461683649862 |   72   |    3   |    0
 "NAND 0 0" | "TkFORCAwIDA=" | 61109384461626344 |   62   |   16   |    1
 "NAND 0 1" | "TkFORCAwIDE=" | 61109384461626350 |   70   |    1   |    1
 "NAND 1 0" | "TkFORCAxIDA=" | 61109384461665650 |   64   |   18   |    1
 "NAND 1 1" | "TkFORCAxIDE=" | 61109384461665656 |   72   |    3   |    0
 "NOR 0 0"  | "Tk9SIDAgMA==" |  1797025468622614 |   76   |    7   |    1
 "NOR 0 1"  | "Tk9SIDAgMQ==" |  1797025468622630 |    6   |    6   |    0
 "NOR 1 0"  | "Tk9SIDEgMA==" |  1797025468779830 |   84   |   15   |    0
 "NOR 1 1"  | "Tk9SIDEgMQ==" |  1797025468779846 |   14   |   14   |    0
 "XNOR 0 0" | "WE5PUiAwIDA=" | 66920415258533864 |    0   |    0   |    1
 "XNOR 0 1" | "WE5PUiAwIDE=" | 66920415258533870 |    8   |    8   |    0
 "XNOR 1 0" | "WE5PUiAxIDA=" | 66920415258573170 |    2   |    2   |    0
 "XNOR 1 1" | "WE5PUiAxIDE=" | 66920415258573176 |   10   |   10   |    1

: হে পোর্ট করা উত্তরের চেয়ে কম
শিয়ারু আসাকোটো

কিন্তু ... এটা কি কাজ করে না বলে মনে হচ্ছে NOR?
শিয়ারু আসাকোটো

@ শিরুআসাকোটো লক্ষ্য করার জন্য ধন্যবাদ আমি শুধু ভুলে গেছি NOR। এখন স্থির।
আর্নল্ড

6

সিজেএম (১৩ বাইট)

q1bH%86825Yb=

ধরে নিই যে ইনপুটটি কোনও পূর্ববর্তী নিউলাইন ছাড়াই।

অনলাইন পরীক্ষা স্যুট

এটি কেবলমাত্র একটি সাধারণ হ্যাশ যা 24 টি সম্ভাব্য ইনপুটগুলিকে 17 টি স্বতন্ত্র তবে সামঞ্জস্যপূর্ণ মানগুলিতে ম্যাপ করে এবং তারপরে সংকোচিত টেবিলটিতে দেখায়।

পাইথন 2 (36 বাইট)

lambda s:76165>>sum(map(ord,s))%17&1

এটি উপরের সিজেএম উত্তরের একটি বন্দর। এক্সনোর পরীক্ষার কাঠামোটি ব্যবহার করে টেস্ট স্যুট


4

3

কাঠকয়লা , 32 বাইট

§01÷⌕⪪”&⌈4Y⍘LH⦄vü|⦃³U}×▷” S∨⁺NN⁴

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা: সংকীর্ণ স্ট্রিং সমর্থিত ক্রিয়াকলাপগুলির তালিকায় প্রসারিত হয় যাতে প্রদত্ত ক্রিয়াকলাপের সূচকটি ইনপুট অনুসারে ডানদিকে সরানো হয় এবং বিটটি এভাবে বের করা হয় ফলাফল হিসাবে পরিণত হয়।

XOR     001
AND     010
OR      011
NOR     100
NAND    101
XNOR    110
inputs  011
        010

74-বাইট সংস্করণ সমস্ত 16 বাইনারি ক্রিয়াকলাপের জন্য কাজ করে, যা আমি নির্বিচারে নাম হিসাবে লিখেছি: শূন্য এবং কম দ্বিতীয় গ্রেটার গ্রেট ফার্স্ট এক্সর বা উত্তর এক্সএনওর NFIRST NGREATER NSECOND NLESS Nand NZERO।

§10÷÷⌕⪪”&↖VρS´↥cj/v⊗J[Rf↓⪫?9KO↘Y⦄;↙W´C>η=⁴⌕✳AKXIB|⊖\`⊖:B�J/≧vF@$h⧴” S∨N²∨N⁴

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ।


পুরো ১ operations টি অপারেশন প্রোগ্রামের চেয়ে +1 বরং মুগ্ধ!
theREALyumdub

3

গণিত, 55 বাইট

Symbol[ToCamelCase@#][#2=="1",#3=="1"]&@@StringSplit@#&

খাঁটি ফাংশন। ইনপুট এবং রিটার্ন হিসাবে Trueবা Falseআউটপুট হিসাবে একটি স্ট্রিং নেয় । যেহেতু Or, And, Nor, Nand, Xor, এবং Xnorসব বিল্ট-ইন আছে, আমরা ব্যবহার ToCamelCaseপাসকাল ক্ষেত্রে অপারেটর পরিবর্তন করতে, এটা সমতুল্য প্রতীক রূপান্তর এবং দুটি আর্গুমেন্ট তা প্রযোজ্য।


3

জে , 21 বাইট

2|7|9|37|61|3*1#.3&u:

এটি অনলাইন চেষ্টা করুন!

Xnor এর পাইথন 2 সমাধানের পোর্ট ।


জে , 30 বাইট

XNOR=:=/
NAND=:*:/
NOR=:+:/
".

এটি অনলাইন চেষ্টা করুন!

Eval সঙ্গে মজা কিছু বিট ".এবং স্ট্যান্ডার্ড লাইব্রেরী (যা ইতিমধ্যে সঠিক অন্তর্ভুক্ত AND, OR, XOR)।


জে , 41 বাইট

({7 6 9 8 14 1 b./)~1 i.~' XXNNA'E.~_2&}.

এটি অনলাইন চেষ্টা করুন!

আরও জে-স্টাইল পদ্ধতির।

কিভাবে এটা কাজ করে

একটি খুব সাধারণ জে ট্রিক লুকানো আছে এখানে। প্রায়শই, পছন্দসই ফাংশনে কাঠামো থাকে "একটি ইনপুটটিতে ডু এফ করুন, অন্যটিতে এইচ করুন, এবং তারপরে উভয় ফলাফলের জন্য জি করুন" structure তারপরে এটির মতো কাজ করা উচিত (F x) G H y। স্বরূপ আকারে এটি সমান (G~F)~H:

x ((G~F)~H) y
x (G~F)~ H y
(H y) (G~F) x
(H y) G~ F x
(F x) G H y

যদি Gঅসম্পূর্ণ আদিম হয় তবে কেবলমাত্র লক্ষ্য ফাংশনের বাম এবং ডান যুক্তিগুলি অদলবদল করুন এবং আমরা একটি বাইট সংরক্ষণ করতে পারি।

এখন উপরের উত্তরে:

({7 6 9 8 14 1 b./)~1 i.~' XXNNA'E.~_2&}.

1 i.~' XXNNA'E.~_2&}.  Processing right argument (X): the operation's name
                _2&}.  Drop two chars from the end
1 i.~' XXNNA'E.~       Find the first match's index as substring
                       Resulting mapping is [OR, XOR, XNOR, NOR, NAND, AND]

7 6 9 8 14 1 b./  Processing left argument (Y): all logic operations on the bits
7 6 9 8 14 1 b.   Given two bits as left and right args, compute the six logic functions
               /  Reduce by above

X{Y  Operation on both: Take the value at the index

গল্ফিংয়ের জন্য জে টিপসে কৌশলটি পোস্ট করার বিষয়টি বিবেচনা করুন যদি আপনি ইতিমধ্যে না থাকেন। ঝরঝরে স্টাফ এছাড়াও আমি ইওল সমাধানের একটি বড় অনুরাগী।
কোল

3

পাওয়ারশেল, 36 34 বাইট

এক্সনোর দ্বারা অনুপ্রাণিত , তবে ক্রমটি *108%143%2সংক্ষিপ্ততর হলে মূলটি হবে*3%61%37%9%7%2

$args|% t*y|%{$n+=108*$_};$n%143%2

পরীক্ষার স্ক্রিপ্ট:

$f = {

 $args|% t*y|%{$n+=108*$_};$n%143%2
#$args|% t*y|%{$n+=3*$_};$n%61%37%9%7%2   # sequence by xnor

}

@(
    ,("AND 0 0", 0)
    ,("AND 0 1", 0)
    ,("AND 1 0", 0)
    ,("AND 1 1", 1)
    ,("XOR 0 0", 0)
    ,("XOR 0 1", 1)
    ,("XOR 1 0", 1)
    ,("XOR 1 1", 0)
    ,("OR 0 0", 0)
    ,("OR 0 1", 1)
    ,("OR 1 0", 1)
    ,("OR 1 1", 1)
    ,("NAND 0 0", 1)
    ,("NAND 0 1", 1)
    ,("NAND 1 0", 1)
    ,("NAND 1 1", 0)
    ,("NOR 0 0", 1)
    ,("NOR 0 1", 0)
    ,("NOR 1 0", 0)
    ,("NOR 1 1", 0)
    ,("XNOR 0 0", 1)
    ,("XNOR 0 1", 0)
    ,("XNOR 1 0", 0)
    ,("XNOR 1 1", 1)

) | % {
    $s,$e = $_
    $r = &$f $s
    "$($r-eq$e): $s=$r"
}

আউটপুট:

True: AND 0 0=0
True: AND 0 1=0
True: AND 1 0=0
True: AND 1 1=1
True: XOR 0 0=0
True: XOR 0 1=1
True: XOR 1 0=1
True: XOR 1 1=0
True: OR 0 0=0
True: OR 0 1=1
True: OR 1 0=1
True: OR 1 1=1
True: NAND 0 0=1
True: NAND 0 1=1
True: NAND 1 0=1
True: NAND 1 1=0
True: NOR 0 0=1
True: NOR 0 1=0
True: NOR 1 0=0
True: NOR 1 1=0
True: XNOR 0 0=1
True: XNOR 0 1=0
True: XNOR 1 0=0
True: XNOR 1 1=1

1
যদিও ক্ষেত্রেগুলিতে আপনার *16%95%7%2ব্যর্থতা XNOR। আপনি ব্যবহার করতে পারে @ nedla2004 এর*6%68%41%9%2 , যা 2 বাইট চেয়ে খাটো @xnor ', গুলি এক যদিও।
কেভিন ক্রুইজসেন

1
ধন্যবাদ !!!! আমি যোগ করেছি xnor। আমি মনে করি *108%143এটি আরও আকর্ষণীয় :) পাশাপাশি একটি দুর্দান্ত জুটিও রয়েছে *256%339। এই জুটি এমন ভাষার জন্য আরও ভাল যা বিট এবং বাইটগুলির সাথে কীভাবে কাজ করতে জানে।
mazzy

1
আহ ভাল! আপনার উত্তর থেকে একটি বন্দর আমার জাভা উত্তরে 2 বাইট সংরক্ষণ করে । :) আর ক-এর বিকল্প 10 বাইট আমার জন্য 05AB1E উত্তর ব্যবহার করে *256%339
কেভিন ক্রুইজসেন

3

পার্ল 6 , 20 বাইট

*.ords.sum*108%143%2

এটি অনলাইন চেষ্টা করুন!

ম্যাডির পদ্ধতির একটি বন্দর । বিকল্পভাবে, *256%339%2এছাড়াও কাজ করে।

পার্ল 6 , 24 বাইট

*.ords.sum*3%61%37%9%7%2

এটি অনলাইন চেষ্টা করুন!

এক্সনরের উত্তরের একটি বন্দর । আমি একটি সংক্ষিপ্ততর সন্ধান করতে যাব, তবে আমি মনে করি এটি সম্ভবত সেরা।


2

জাভাস্ক্রিপ্ট (নোড.জেএস) , 106 94 বাইট

x=>([a,c,d]=x.split` `,g=[c&d,c^d,c|d]["OR".search(a.slice(1+(b=/N[^D]/.test(a))))+1],b?1-g:g)

এটি অনলাইন চেষ্টা করুন!

কোড এবং সমস্ত 24 কেসের লিঙ্ক।

এক্সএনওর কেসটি মানচিত্র করতে ভুলে গেছেন বলে +9।


হয়তো আমি কিছু দেখছি না, তবে ইনপুটটি কোথায় টাইপ করব? ইনপুট ট্যাব কিছুই করে না।
qazwsx

@qazwsx এটি একটি ল্যাম্বডা ফাংশন, যা ডিফল্টরূপে অনুমোদিত।
শিয়ারু আসাকোটো

1
@qazwsx লিঙ্কটি প্রতিটি সম্ভাব্য ইনপুটটির আউটপুট দেখায়। এই উত্তরটি একটি ফাংশন, সুতরাং আপনি যদি ম্যানুয়ালি এটি পরীক্ষা করতে চান তবে আপনি console.log(f("AND", 1, 1));
ফুটারটি

@ কাজাজউক্স এবং দয়া করে ডাউনটাতে ফিরিয়ে দিন। এটি সর্বোপরি অবৈধ নয়।
শিয়ারু আসাকোটো

আচ্ছা বুঝলাম. আমি ডাউনটোটটি ফিরিয়ে দিয়েছি
qazwsx


1

জাভাস্ক্রিপ্ট (নোড.জেএস) , 45 বাইট

সম্মতিতে পোস্ট করা মাত্র xnor এর দুর্দান্ত পাইথন 2 উত্তরগুলির একটি বন্দর, দয়া করে এর পরিবর্তে উত্তরটি উত্তর দিন।

x=>Buffer(x).reduce((a,b)=>a+b)*3%61%37%9%7%2

এটি অনলাইন চেষ্টা করুন!




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

সম্ভবত। নিশ্চিত না. যদি একই বাইট-কাউন্টের সাথে একাধিক বিকল্প থাকে তবে আমি সাধারণত একাধিক উত্তর যুক্ত করি। মজির পাওয়ারশেল জবাব এমনকি একটি ছোটও পাওয়া গেছে: 41 বাইট
কেভিন ক্রুইজসেন

1

সংযুক্তি , 55 বাইট

{Eval!$"${Sum!Id''Downcase!SplitAt!_}${N=>__2}"}@@Split

এটি অনলাইন চেষ্টা করুন!

একটি বরং বর্বর সমাধান। ইনপুটটিকে প্রাসঙ্গিক অ্যাটাচি কমান্ডে রূপান্তর করে এবং এটি মূল্যায়ন করে। (সংযুক্তিতে 6 টি লজিক গেটের প্রতিটি জন্য বিল্ট-ইন রয়েছে))


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