2 ইনপুট এবং 1 আউটপুট সহ সমস্ত 16 লজিক গেটস গল্ফ!


63

উদাহরণস্বরূপ, গেটটি A and B2 ইনপুট এবং 1 আউটপুট সহ একটি লজিক গেট।

এর মধ্যে ঠিক 16 টি রয়েছে, কারণ:

  • প্রতিটি লজিক গেটে দুটি ইনপুট লাগে, যা সত্য বা মিথ্যা হতে পারে, আমাদের 4 টি সম্ভাব্য ইনপুট দেয়
  • সম্ভাব্য 4 টি ইনপুটগুলির মধ্যে প্রত্যেকের সত্যবাদী এবং মিথ্যা ফলাফল পাওয়া যায়
  • সুতরাং, 2 ^ 4 সম্ভাব্য লজিক গেট রয়েছে, যা 16।

আপনার কাজটি হল 16 টি প্রোগ্রাম / ফাংশন লিখুন যা সেগুলি পৃথকভাবে প্রয়োগ করে।

আপনার ফাংশন / প্রোগ্রাম অবশ্যই স্বাধীন হতে হবে

তারা তারা আউটপুট truthy / falsey মান যতদিন বৈধ, যার মানে হল আপনি বাস্তবায়ন করতে পারেন A or Bহিসাবে পাইথন মধ্যে lambda a,b:a+b, এমনকি যদি 2জন্য উত্পাদিত হয় A=Trueএবং B=True

স্কোর প্রতিটি ফাংশন / প্রোগ্রামের জন্য মোট বাইট ব্যবহৃত হয়।

লজিক গেটগুলির তালিকা

  1. 0,0,0,0 ( false)
  2. 0,0,0,1 ( and)
  3. 0,0,1,0 ( A and not B)
  4. 0,0,1,1 ( A)
  5. 0,1,0,0 ( not A and B)
  6. 0,1,0,1 ( B)
  7. 0,1,1,0 ( xor)
  8. 0,1,1,1 ( or)
  9. 1,0,0,0 ( nor)
  10. 1,0,0,1 ( xnor)
  11. 1,0,1,0 ( not B)
  12. 1,0,1,1 ( B implies A)
  13. 1,1,0,0 ( not A)
  14. 1,1,0,1 ( A implies B)
  15. 1,1,1,0 ( nand)
  16. 1,1,1,1 ( true)

যেখানে প্রথম সংখ্যাটি আউটপুট A=false, B=false, দ্বিতীয় সংখ্যাটি আউটপুট A=false, B=true, তৃতীয় সংখ্যাটি আউটপুট A=true, B=false, চতুর্থ সংখ্যাটি আউটপুট A=true, B=true

লিডারবোর্ড


2
আপনার ফাংশন / প্রোগ্রামগুলি কোড ভাগ করতে পারে। এটার মানে কি? এছাড়াও, প্রোগ্রামগুলি বিভিন্ন ভাষায় থাকতে পারে?
লিন

2
আমি ব্যাখ্যাটি বিভ্রান্তকরূপে খুঁজে পেয়েছি: "প্রতিটি সম্ভাব্য 4 টি ইনপুট থাকতে পারে এবং সত্যবাদী এবং মিথ্যা বলে আউটপুট"। এই ইঙ্গিত 8 (4 * 2) না?
ডেভিডসি

4
আপনি যে নামগুলি মিস করছেন তা হ'ল অ্যান্ড-নট গেটস (এ্যান্ড নট বি এবং বি এবং না এ)।
মেগো

14
তাই আবার হয়েছে। 18 টি উত্তর রয়েছে, বেশিরভাগ সহজ এবং সঠিক, তারপরে কোথাও প্রশ্নটি "আপনি কী জিজ্ঞাসা করছেন তা অস্পষ্ট" হয়ে ওঠে। আমি আপনাকে চ্যালেঞ্জ পছন্দ করি না, যাও, অন্য নিন, বন্ধ করবেন না!
edc65

4
@ ডোরুকায়হান দেখুন: শূন্য সত্য
Sp3000

উত্তর:


110

ডোমিনোস , 122,000 বাইট বা 72 টাইলস

বাইট গণনাটি সেভ করা ফাইলের আকার যা 0.122 MB

ডোমিনো কম্পিউটিং ছিল অনুপ্রেরণা। ট্যাবলেটপ সিমুলেটর নামে পরিচিত ভার্চুয়াল-রিয়েলিটি স্টিম গেমের মাধ্যমে আমি এই সমস্তগুলি প্রতিসাম্য (এবং এর বাইরে!) পর্যন্ত পরীক্ষা করেছি ।

বিস্তারিত

  • ইনপুট / আউটপুট
    • শুরু - এটি স্পষ্টতার জন্য অন্তর্ভুক্ত করা হয়েছে (মোটের দিকে গণনা করা হয়নি) এবং এটিই 'কল' বা 'ক্রিয়াকলাপ' ফাংশনটি করে। ইনপুট দেওয়ার পরে 'টিপুন' হওয়া উচিত [হলুদ]
    • ইনপুট এ - এটি স্বচ্ছতার জন্য অন্তর্ভুক্ত করা হয়েছে (মোটের দিকে গণনা করা হয় না) এবং একটি 1চাপিত অন্যথায় [সবুজ] চাপলে 'চাপ দেওয়া হয়' ।
    • ইনপুট বি - এটি স্বচ্ছতার জন্য অন্তর্ভুক্ত করা হয়েছে (মোটের দিকে গণনা করা হয়নি) এবং 'চাপানো' ইঙ্গিত করা হয়েছে 1এবং অন্যথায় [ব্লু] চাপড়িত নয় ।
    • আউটপুট - এটি মোট দিকে গণনা করা হয়। এটি ডমিনো যা যুক্তির গেট [ব্ল্যাক] এর ফলাফল ঘোষণা করে ।
  • টি / এফ
    • একটি পতিত আউটপুট ডোমিনো Trueবা এর ফলাফলকে উপস্থাপন করে1
    • একটি স্থায়ী আউটপুট ডোমিনো Falseবা এর ফলাফলকে উপস্থাপন করে0
  • টিপলে
    • ইনপুট দিতে বা শৃঙ্খলা শুরু করতে ধাতব মার্বেলটিকে স্প্যান করুন
    • উত্তোলন শক্তি সেট করুন 100%
    • পছন্দসই ডোমিনোর উপরে মার্বেলটি তুলুন
    • মার্বেল ফেলে দিন

এখানে চিত্র বর্ণনা লিখুন

গেটস

  • ভুয়া, ১
    • এখানে চিত্র বর্ণনা লিখুন
  • এবং, 6 4
    • এখানে চিত্র বর্ণনা লিখুন
  • এ এবং বি নয়, 4 3
    • এখানে চিত্র বর্ণনা লিখুন
  • এ, ঘ
    • এখানে চিত্র বর্ণনা লিখুন
  • এ এবং বি নয়, 4 3
    • এখানে চিত্র বর্ণনা লিখুন
  • খ, ঘ
    • এখানে চিত্র বর্ণনা লিখুন
  • xor, 15 11
    • এখানে চিত্র বর্ণনা লিখুন
  • বা, 1
    • এখানে চিত্র বর্ণনা লিখুন
  • না, 3 2
    • এখানে চিত্র বর্ণনা লিখুন
  • xnor, 17 13
    • এখানে চিত্র বর্ণনা লিখুন
  • বি নয়, ২
    • এখানে চিত্র বর্ণনা লিখুন
  • বি বোঝায় A, 7 6
    • এখানে চিত্র বর্ণনা লিখুন
  • না এ, ২
    • এখানে চিত্র বর্ণনা লিখুন
  • এ বোঝায় বি, 7 6
    • এখানে চিত্র বর্ণনা লিখুন
  • নন্দ, 16 15
    • এখানে চিত্র বর্ণনা লিখুন
    • সত্য, ১
    • এখানে চিত্র বর্ণনা লিখুন

টি এল; ডিআর

আমি অপেক্ষা করছিলাম / ডোমিনো-বান্ধব চ্যালেঞ্জ চেয়েছিলাম এবং যখন আমি এটি দেখলাম, আমি এটি পাস করতে পারিনি। একমাত্র সমস্যাটি ছিল স্পষ্টতই আর কেউ ডোমিনোয়সের মালিক হয় না! সুতরাং অবশেষে আমি দিতে এবং একটি ডাবল দ্বাদশ কেনা । এই সেটে 91 টি টাইল রয়েছে, যা আমাকে স্বাভাবিক (দীর্ঘ) 'সময় বিলম্ব' পদ্ধতির পরিবর্তে 'ফাংশন কল' / ডমিনো শুরু করার ধারণা দেয়। 90 ডিগ্রি টার্নের ক্রেডিটটি ডোমিনোসডুবল07 এর চ্যানেলের অন্তর্ভুক্ত

শারীরিক ডোমিনোসগুলি দিয়ে এগুলি তৈরি করার পরে, এটি মেটাতে রুল করা হয়েছিল যে বৈধ সমাধানগুলি ডিজিটাল হওয়া উচিত। তাই আমি এই গেটগুলি ট্যাবলেটপ সিমুলেটারে পুনরায় তৈরি করেছি । দুঃখের বিষয়, টিএস এবং বাস্তবতা ডোমিনো পদার্থবিজ্ঞানের সাথে একমত নয়। এটির জন্য আমার 11 টি ডোমিনো যুক্ত করা প্রয়োজন তবে আমি 8 টি সংরক্ষণও করেছি rall সামগ্রিকভাবে, ভার্চুয়াল ডমিনোস বিল্ডিং এবং টেস্টিং ( Ctrl+ Z) এর ক্ষেত্রে প্রায় x150 আরও কার্যকর ।

হালনাগাদ

  • -9 [17-03-13] সংক্ষিপ্তxor xnor nand
  • [17-03-04] ওয়ার্কশপ ফাইলটিতে লিঙ্ক যুক্ত করা হয়েছে
  • +11 [17-03-03] যোগ করা ডিজিটাল xnorএবংxor
  • -8 [17-03-03] সমস্ত গেটকে ডিজিটালাইজড ( xorএবং ব্যতীত xnor)। ট্যাবলেটপ ব্লক করতে কেবল 2 এর পরিবর্তে 1 টি ডমিনো প্রয়োজন requires
  • [16-09-23] সঙ্কুচিত চিত্রগুলি
  • -11 [16-09-18] প্রায় অর্ধেকটি প্রায় কাটা জোর। ধন্যবাদ @DJMcMayhem xnor এবং জন্য জো XOR জন্য।
  • -31 [16-08-31] কিছু ছবি আপডেট করেছেন এবং কিছু টাইল শেভ করেছেন এবং অর্ধেক অংশে জোর কেটেছেন
  • [16-08-28] ছবি যুক্ত করা হয়েছে

43
+1 আমাদের পিপিসিজি
বিটা


7
কি দারুন. এটি আমি এই সাইটে দেখেছি সবচেয়ে আসল উত্তরগুলির মধ্যে একটি।
ডিজেএমসিএমহেম

3
দেখে মনে হচ্ছে আপনি যদি একসাথে xnor স্কুইশ করেন এবং 5 এর চেয়ে উপরে শীর্ষে 4 রাখেন তবে আপনি আবার এটি পরীক্ষা করতে পারিনি।
ডিজেএমসিএমহেম

2
এটি একটি বৈধ উত্তর দেওয়ার জন্য সময় দেওয়ার জন্য ধন্যবাদ। তবে উত্স ফাইলটির লিঙ্কটি খুঁজে পাওয়া কিছুটা শক্ত। সাধারণত, শিরোনামের লিঙ্কটি ভাষাটিকেই নিয়ে যায়। সুতরাং আমি সেইটিকে বাষ্পের খেলায় লিঙ্ক করব এবং তারপরে উত্তরটির শিরোনামে কোথাও একটি পৃথক, স্পষ্টভাবে লেবেলযুক্ত লিঙ্কটিতে আসল "উত্স ফাইল" এর লিঙ্কটি রেখেছি।
মার্টিন ইন্ডার

45

হেক্সাগনি , 89 বাইট

এক্সওআর সমাধানের জন্য কিছু প্রয়োজনীয় অনুপ্রেরণার জন্য FryAmTheEggman কে ধন্যবাদ।

0000 !@
0001 ?.|@!
0010 #?#!)@
0011 ?!@
0100 +?|@!?
0101 ??!@
0110 ?<@!!<_\~(
0111 ?<<@!
1000 )\!#?@{
1001 (~?/@#!
1010 ??|@!)
1011 \#??!1@
1100 ?(~!@
1101 ?.|@!)
1110 ?$@#)!<
1111 1!@

সমস্ত প্রোগ্রাম 0মিথ্যা এবং 1সত্যের জন্য ব্যবহার করে ।

এটি অনলাইন চেষ্টা করুন! এটি কোনও পরীক্ষার স্যুট নয়, আপনাকে বিভিন্ন প্রোগ্রামে অনুলিপি করতে হবে এবং নিজেকে ইনপুট করতে হবে।

উপরের সমাধানটি সর্বোত্তমতার 2-বাইটের মধ্যে রয়েছে (যদি না আমরা সত্যবাদী / মিথ্যা ব্যাখ্যাটি শিথিল করি, তবে আমার ধারণা)। পাশের দৈর্ঘ্য ২, অর্থাৎ by বাইট পর্যন্ত পুরোপুরি ফিট করে এমন সমস্ত প্রোগ্রামের উপরে আমি দু'দিন ধরে একটি নিষ্ঠুর বাহিনী অনুসন্ধান চালিয়েছি ( বেশিরভাগ প্রোগ্রাম নয়) - প্রতিটি বৈধ প্রোগ্রামের কী দরকার এবং কী না সে সম্পর্কে আমি কয়েকটি অনুমান করেছি বৈধ প্রোগ্রাম থাকতে পারে)। অনুসন্ধানটি 16 টি সম্ভাব্য গেটগুলির মধ্যে 15 টির জন্য সমাধানগুলি খুঁজে পেয়েছিল - এবং প্রায়শই কেবল একটির চেয়ে অনেক বেশি। আপনি এই পেস্টবিনে সমস্ত বিকল্প সমাধানের একটি তালিকা পেতে পারেন যেখানে আমি সেগুলি সমতুল্য আচরণের দ্বারা গোষ্ঠীভুক্ত করেছি। আমি উপরে যেগুলি দেখছি তা আমি বেছে নিয়েছি কারণ এগুলি হয় সহজতম বা সবচেয়ে আকর্ষণীয় সমাধান এবং আমি আগামীকাল তাদের জন্য ব্যাখ্যা যুক্ত করব।

16 তম গেট হিসাবে: এক্সওআর একমাত্র গেট যা সম্ভবত 7 বাইটে প্রয়োগ করা যায় না। দুর্ভাগ্যক্রমে আমার কাছে যে কোডটি রয়েছে তার সাথে বৃহত্তর প্রোগ্রামগুলির উপর একটি বর্বর অনুসন্ধান অনুসন্ধান সম্ভব নয়। তাই এক্সওআর হাতে লেখা ছিল। আমি এ পর্যন্ত সংক্ষিপ্ততমটি খুঁজে পেয়েছি উপরের 10-বাইট প্রোগ্রাম, যা ফ্রাইআম দ্যইগম্যানের একটি ব্যর্থ (তবে খুব নিকটতম) প্রচেষ্টার ভিত্তিতে তৈরি। এটি সম্ভব যে একটি 8-বাইট বা 9-বাইট সমাধান উপস্থিত রয়েছে, তবে এর বাইরে সমস্ত সমাধান সত্যই অনুকূল হওয়া উচিত।

ব্যাখ্যা

সতর্কতা: পাঠ্যের প্রাচীর। অফ-সুযোগে যে কারও আগ্রহী এই উচ্চ সংকুচিত হেক্সাগনি প্রোগ্রামগুলি আসলে কীভাবে কাজ করে, আমি নীচে তাদের প্রত্যেকটির জন্য ব্যাখ্যা অন্তর্ভুক্ত করেছি। ব্যাখ্যাগুলি যুক্তিযুক্তভাবে সংক্ষিপ্ত রাখার জন্য আমি প্রতিটি গেটের জন্য সহজ সমাধানটি বেছে নেওয়ার চেষ্টা করেছি choose যাইহোক, তাদের মধ্যে কিছু এখনও মনের উদ্রেক করে, তাই আমি ভেবেছিলাম তারা কিছুটা আরও বিস্তৃত হওয়ার প্রাপ্য।

0000: মিথ্যা

আমি মনে করি না এটির জন্য আমাদের একটি চিত্রের প্রয়োজন হবে:

 ! @
. . .
 . .

যেহেতু পুরো মেমরি গ্রিডটি জিরোতে শুরু করা হয়েছে, !কেবল একটি শূন্য প্রিন্ট @করে প্রোগ্রামটি শেষ করে।

এটিও কেবলমাত্র 2-বাইট সমাধান।

0001: এবং

 ? .
| @ !
 . .

এটি মূলত শর্ট সার্কিট প্রয়োগ করে । নীচের ধূসর চিত্রটি প্রোগ্রামটির শুরু দেখায়, যেখানে প্রথম ইনপুটটি পড়া হয় ?এবং নির্দেশ পয়েন্টার (আইপি) বাম কোণে প্রায় আবৃত হয় যেখানে |আয়নাটি প্রতিফলিত করে। এখন কোণারটি শর্তসাপেক্ষ হিসাবে কাজ করে, যেমন প্রথম ইনপুটটির মানের উপর নির্ভর করে দুটি পৃথক প্রয়োগকারী পথ রয়েছে। লাল চিত্রটি নিয়ন্ত্রণের প্রবাহ A = 0এবং এর জন্য সবুজ চিত্র দেখায় A = 1:

আমি আমি আমি

আপনি দেখতে পাচ্ছেন, যখন Aহ'ল 0, তখন আমরা কেবল এটি মুদ্রণ করি এবং সমাপ্ত করি (মনে রাখবেন যে সমস্তই .কোনও অপ্স নয়)। কিন্তু যখন Aহয় 1, তারপর আইপি প্রথম সারিতে আবার ঘোরে, পড়ার Bএবং প্রিন্টিং পরিবর্তে।

এই গেটের জন্য মোট 16 টি বাইট সমাধান রয়েছে। এর মধ্যে চৌদ্দটি মূলত উপরের মতই হয়, >পরিবর্তে ব্যবহার করে |বা .কমান্ডের পরিবর্তে কার্যকরভাবে কোনও অপ-বিকল্প ব্যবহার করে বা ?দ্বিতীয় অবস্থানে থাকে:

?.|@!    .?|@!    ?=|@!    =?|@!    ?_|@!    _?|@!    ?0|@!
?.>@!    .?>@!    ?=>@!    =?>@!    ?_>@!    _?>@!    ?0>@!

এবং তারপরে আরও দুটি সমাধান রয়েছে (যা একে অপরের সমতুল্য)। এগুলি একই সংক্ষিপ্ত-সার্কিট যুক্তিও বাস্তবায়িত করে, তবে মৃত্যুদণ্ড কার্যকর করার পথগুলি কিছুটা ক্রেজিয়ার (এবং পাঠকের কাছে অনুশীলন হিসাবে রেখে গেছে):

?<!@|
?<!@<

0010: এ আর বি নয়

 # ?
# ! )
 @ .

এটি শর্ট-সার্কিটের একটি ফর্মও প্রয়োগ করে, তবে #নিয়ন্ত্রণ প্রবাহ ব্যবহারের কারণে অনেক বেশি জটিল। #একটি শর্তসাপেক্ষ আইপি সুইচ। Hexagony আসলে ছয় আইপিগুলি লেবেল দিয়ে আসে 0করার 5, যা গ্রিড ছয় কোণে শুরু, তাদের ঘড়ির কাঁটার দিকে প্রান্ত বরাবর প্রতি নির্দেশ (এবং কোন কর্মসূচি মানেই আইপি দিয়ে শুরু হয় 0)। যখন একটি #মুখোমুখি হয়, বর্তমান মানটি মডুলো নেওয়া 6হয় এবং সংশ্লিষ্ট আইপি সহ নিয়ন্ত্রণ প্রবাহ অব্যাহত থাকে। আমি নিশ্চিত না যে কী উন্মত্ততার ফিট আমাকে এই বৈশিষ্ট্যটি যুক্ত করেছে, তবে এটি অবশ্যই কিছু অবাক করা প্রোগ্রামের জন্য অনুমতি দেয় (এটির মতো)।

আমরা তিনটি ক্ষেত্রে পার্থক্য করব। কখন A = 0, প্রোগ্রামটি মোটামুটি সহজ, কারণ আইপি-স্যুইচিংয়ের সময় এমন মানসিকতার মুখোমুখি হয় 0যখন #এমন হয়:

আমি

#কিছুই করে না, ?পড়ে A(অর্থাত্ কিছুইও করে না), #এখনও কিছু করে না, !মুদ্রণ করে 0, )বৃদ্ধি করে (এটি গুরুত্বপূর্ণ, অন্যথায় আইপি তৃতীয় লাইনে ঝাঁপ দেয় না), @প্রোগ্রামটি সমাপ্ত করে। যথেষ্ট সহজ। এখন আসুন কেসটি বিবেচনা করুন (A, B) = (1, 0):

আমি

লাল পথটি এখনও আইপির সাথে মিলে যায় 0এবং আমি আইপির জন্য সবুজ পথ জুড়েছি 1। আমরা দেখি যে পরে ?সার্চ A( 1এই সময়), #আইপি যে উপরের ডান দিকের কোণায় মধ্যে শুরু হয় করতে সুইচ করে। এর অর্থ ?পড়তে পারে B( 0)। এখন )ইনক্রিমেন্টগুলি যা 1, যেমন #উপরের বাম কোণে কিছুই করে না এবং আমরা আইপি সহ থাকি 1!কপি করে প্রিন্ট 1ও IP বাম তির্যক কাছাকাছি গোপন। #এখনও কিছু করে না এবং @প্রোগ্রামটি সমাপ্ত করে।

অবশেষে, সত্যই অদ্ভুত ঘটনা যেখানে উভয় ইনপুট রয়েছে 1:

আমি

এবার দ্বিতীয় ইনপুট হয় 1এবং )এটি বৃদ্ধি 2। তার মানে #উপরের বাম কোণে আইপি-তে অন্য আইপি স্যুইচ হয়ে যায় 2, নীল রঙে সূচিত করুন। সেই পথে, আমরা প্রথমে এটিকে আরও বাড়িয়ে তুলি 3(যদিও এটি অপ্রাসঙ্গিক) এবং ?তৃতীয়বারটি পাস করি । যেহেতু আমরা এখন ইওএফ (অর্থাত্ ইনপুটটি শেষ হয়ে গেছে) আঘাত করেছি, ?প্রত্যাবর্তন 0, !মুদ্রণ করে এবং @প্রোগ্রামটি সমাপ্ত করে।

উল্লেখযোগ্যভাবে, এই গেটের জন্য এটি কেবল 6-বাইট সমাধান solution

0011: এ

 ? !
@ . .
 . .

এটি যথেষ্ট সহজ যে আমাদের কোনও চিত্রের প্রয়োজন হবে না: ?পড়ে A, !প্রিন্ট করে, @সমাপ্ত হয়।

এই গেটের জন্য এটিই কেবলমাত্র 3 বাইট সমাধান। (নীতিগতভাবে, এটি করাও সম্ভব হবে ,;@, তবে অনুসন্ধানটি অন্তর্ভুক্ত হয়নি ;, কারণ আমি মনে করি না যে এটি !এই কাজের জন্য বাইটগুলি কখনও সংরক্ষণ করতে পারে ever )

0100: খ এবং না এ

 + ?
| @ !
 ? .

এটি একটি "ভাই" এর চেয়ে অনেক সহজ 0010। নিয়ন্ত্রণ প্রবাহটি আসলে আমরা একইভাবে 0001(এবং) জন্য উপরে দেখেছি । যদি A = 0, তবে আইপি নীচের লাইনটি অতিক্রম করে, Bসমাপ্তির আগে পড়তে এবং মুদ্রণ করে। A = 1তারপরে যদি আইপি প্রথম লাইনটি আবারও পঠন করে Bতবে সেগুলি +পড়বে , তবে যুক্ত দুটি অব্যবহৃত মেমরি প্রান্ত যুক্ত করে তাই এটি সমস্ত কিছু বর্তমান মানকে পুনরায় সেট করে 0, যাতে !সর্বদা মুদ্রণ হয় 0

এর জন্য বেশ কয়েকটি 6-বাইট বিকল্প রয়েছে (মোট 42 টি)। প্রথমত, উপরের সমতুল্য এক টন সমাধান রয়েছে। আমরা আবার |এবং এর মধ্যে অবাধে নির্বাচন করতে পারি >এবং +অন্য কোনও কমান্ডের মাধ্যমে প্রতিস্থাপন করা যেতে পারে যা আমাদের খালি প্রান্ত দেয়:

"?|@!?    &?|@!?    '?|@!?    *?|@!?    +?|@!?    -?|@!?    ^?|@!?    {?|@!?    }?|@!?
"?>@!?    &?>@!?    '?>@!?    *?>@!?    +?>@!?    -?>@!?    ^?>@!?    {?>@!?    }?>@!?

উপরন্তু, আমরা ]পরিবর্তে ব্যবহার করতে পারেন ?]পরবর্তী আইপিতে সরান (অর্থাত্ আইপি নির্বাচন করে 1), যাতে এই শাখাটি পরিবর্তে ?উপরের ডান কোণে পুনরায় ব্যবহার করে । এটি আরও 18 টি সমাধান দেয়:

"?|@!]    &?|@!]    '?|@!]    *?|@!]    +?|@!]    -?|@!]    ^?|@!]    {?|@!]    }?|@!]
"?>@!]    &?>@!]    '?>@!]    *?>@!]    +?>@!]    -?>@!]    ^?>@!]    {?>@!]    }?>@!]

এবং তারপরে আরও ছয়টি সমাধান রয়েছে যা সকলেই বিভিন্ন ধরণের উন্মাদনার সাথে আলাদাভাবে কাজ করে:

/[<@!?    ?(#!@]    ?(#>@!    ?/@#/!    [<<@!?    [@$\!?

0101: B ইংরেজী বর্ণমালার দ্বিতীয় অক্ষর

 ? ?
! @ .
 . .

ওহহু, অন্য একটি সহজ: পড়ুন A, পড়ুন B, মুদ্রণ করুন B, সমাপ্ত করুন। যদিও এর আসলে বিকল্প আছে। যেহেতু Aশুধুমাত্র একটি একক চরিত্র তাই আমরা এটি সহ এটি পড়তে পারি ,:

,?!@

এবং এর ?মাধ্যমে দুবার চালানোর জন্য একটি একক ব্যবহার এবং একটি আয়না ব্যবহার করার বিকল্প রয়েছে :

?|@!    ?>@!

0110: Xor

  ? < @
 ! ! < _
\ ~ ( . .
 . . . .
  . . .

যেমনটি আমি উপরে বলেছি, এটি ছিল একমাত্র গেট যা পাশের দৈর্ঘ্য 2 এ ফিট হবে না, সুতরাং এটি ফ্রাইআম দ্য ইজম্যান এবং আমার একটি হস্তাক্ষর সমাধান এবং এটি অনুকূল নয় যে এটি ভাল নয় chance পার্থক্য করার জন্য দুটি মামলা রয়েছে। যদি A = 0নিয়ন্ত্রণ প্রবাহ মোটামুটি সহজ হয় (কারণ সেক্ষেত্রে আমাদের কেবল মুদ্রণ করা দরকার B):

আমি

আমরা লাল পথে শুরু করি। ?পড়েছে A, <এমন একটি শাখা যা শূন্য বামে প্রতিফলিত করে। আইপিটি নীচে আবৃত হয়, তারপরে _অন্য একটি আয়না হয় এবং আইপি কোণার সাথে আঘাত করলে, এটি উপরের বাম কোণে আবৃত হয় এবং নীল পথে অবিরত থাকে। ?এটি পড়ে B, !প্রিন্ট করে। এখন (এটি হ্রাস। এটি গুরুত্বপূর্ণ কারণ এটি নিশ্চিত করে যে মানটি ইতিবাচক নয় (এটি হয় হয় 0বা -1এখন)। এটি আইপি মোড়ানো থেকে ডান কোণায়, যেখানে @প্রোগ্রামটি শেষ করে।

A = 1জিনিসগুলি যখন কিছুটা জটিল হয়। not Bসেক্ষেত্রে আমরা মুদ্রণ করতে চাই , যা নিজে থেকে খুব বেশি কঠিন নয়, তবে মৃত্যুদন্ড কার্যকর করার পথটি কিছুটা ট্রিপিস।

আমি

এবার, <আইপিটিকে সঠিকভাবে <প্রতিবিম্বিত করে এবং তারপরে কেবল একটি মিরর হিসাবে কাজ করে। সুতরাং আইপি বিপরীতে একই পথটি অতিক্রম করে, Bযখন ?আবার মুখোমুখি হয় reading আইপি প্রায় ডান কোণে আবৃত এবং সবুজ পথে অবিরত। পরের এনকাউন্টার (~যেটি "হ্রাস, সংখ্যাবৃদ্ধি দ্বারা -1", যা অদলবদল 0এবং 1এবং সেইজন্য নির্ণয় not B\এটি কেবল একটি আয়না এবং !পছন্দসই ফলাফল মুদ্রণ করে। তারপরে ?অন্য একটি নম্বর ফেরত দেওয়ার চেষ্টা করে তবে শূন্য ফিরে আসে। আইপি এখন নীলের পথে নীচে বাম কোণে অবিরত রয়েছে। (হ্রাস, <প্রতিফলিত,(আবার হ্রাস পায়, যাতে আইপি কোণায় আঘাত করলে বর্তমান মানটি নেতিবাচক হয়। এটি নীচের ডান তির্যকটি পেরিয়ে যায় এবং শেষ পর্যন্ত @প্রোগ্রামটি শেষ করতে হিট করে।

0111: বা

 ? <
< @ !
 . .

আরও শর্ট সার্কিট।

আমি আমি

A = 0কেস (লাল পথ) একটু এখানে বিভ্রান্তিকর। আইপি বাম দিক থেকে প্রতিবিম্বিত হয়, নীচে বাম কোণে আবৃত হয়, সঙ্গে সঙ্গে প্রতিফলিত হয় <এবং ?পড়তে ফিরে আসে B। এরপরে এটি দৃ corner় কোণে মোড়ানো, প্রিন্ট Bকরে !এবং শেষ হয়।

A = 1কেস (সবুজ পথ) একটু সহজ। <শাখা আইপি অধিকার পথচ্যুত করতে, তাই আমরা কেবল মুদ্রণ !, পিছনে উপরের বাম থেকে মোড়ানো, এবং বিনষ্ট @

অন্য একটি মাত্র 5 বাইট সমাধান রয়েছে:

\>?@!

এটি মূলত একইরূপে কাজ করে তবে প্রকৃত সম্পাদনার পথগুলি একেবারেই আলাদা এবং এটি একটি এর পরিবর্তে শাখার জন্য একটি কোণ ব্যবহার করে <

1000: না

 ) \
! # ?
 @ {

এই অনুসন্ধানে এটি আমার প্রিয় প্রোগ্রাম হতে পারে। দুর্দান্ত জিনিসটি হ'ল এই বাস্তবায়নটি nor5 টি পর্যন্ত ইনপুটগুলির জন্য কাজ করে। এটির ব্যাখ্যা দেওয়ার জন্য আমাকে মেমরির মডেলটির বিশদটি পেতে হবে। দ্রুত রিফ্রেশার হিসাবে, হেক্সাগনির মেমরির মডেলটি একটি পৃথক ষড়ভুজ গ্রিড, যেখানে প্রতিটি প্রান্তটি একটি পূর্ণসংখ্যার মান (প্রাথমিকভাবে সমস্ত শূন্য) ধারণ করে। এখানে একটি মেমরি পয়েন্টার (এমপি) রয়েছে যা প্রান্তটি এবং একটি প্রান্তটি নির্দেশ করে (যেমন বর্তমান ধারার সামনে এবং পিছনে দুটি প্রতিবেশী প্রান্ত রয়েছে, অর্থপূর্ণ বাম এবং ডান প্রতিবেশী রয়েছে)। আমরা যে প্রান্তগুলি ব্যবহার করব তার একটি ডায়াগ্রাম এখানে দেওয়া হয়েছে, এমপিটি লাল হিসাবে দেখানো শুরু করা সহ:

আমি

উভয় ইনপুটগুলি সেই ক্ষেত্রে বিবেচনা করা যাক 0:

আমি

আমরা ধূসর পথের সাথে শুরু করি, যা কেবল থেকে প্রান্ত বৃদ্ধি করে 1যাতে উপরের ডানদিকে কোণায় শুরু করে নীল পথে #আইপিতে স্যুইচ হয় 1\সেখানে কিছুই করে না এবং ?একটি ইনপুট পড়ে। আমরা উপরের বাম কোণে মোড়ানো যেখানে )ইনপুটটি বৃদ্ধি করে। এখন যতক্ষণ ইনপুট শূন্য হয়, এর ফলস্বরূপ একটি হবে 1, যাতে #কিছুই হয় না। তারপরে {এমপিটিকে বাম দিকে সরান, অর্থাৎ প্রথম পুনরাবৃত্তির উপর থেকে বি তে সরান । যেহেতু এখনও এই প্রান্তটির প্রাথমিক শূন্য রয়েছে আইপি উপরে ডান কোণায় এবং একটি নতুন মেমরি প্রান্তে ফিরে আসে। সুতরাং এই লুপটি যতক্ষণ জিরোস পড়বে ততক্ষণ ?চলতে থাকবে, এমপিকে বি থেকে ষড়ভুজের চারপাশে সরানোথেকে সি থেকে ডি ইত্যাদি। এটি ?একটি ইনপুট ছিল বা এটি ইওএফ ছিল বলে কোনও শূন্য ফেরায় কিনা তা বিবেচ্য নয়।

এই লুপের মাধ্যমে ছয় পুনরাবৃত্তিও পর {ফিরে একটি । এই বার, প্রান্তটি ইতিমধ্যে 1খুব প্রথম পুনরাবৃত্তি থেকে মানটি ধরেছে , তাই আইপি বাম কোণায় আবৃত হয় এবং পরিবর্তে সবুজ পথে অবিরত থাকে। !কেবল এটি মুদ্রণ করে 1এবং @প্রোগ্রামটি সমাপ্ত করে।

এখন যদি কোন ইনপুট হয় 1?

আমি

তারপরে এটি ?পড়ে যে 1কোনও সময় এবং )এটি বাড়িয়ে দেয় 2। তার মানে #এখন আবার আইপি স্যুইচ হবে এবং আমরা লাল পথে ডান কোণে চালিয়ে যাব। ?অন্য একটি ইনপুট পড়ে (যদি তা থাকে তবে) যা আসলেই কিছু {যায় আসে না এবং একটি প্রান্তকে আরও এগিয়ে নিয়ে যায়। এটি একটি অব্যবহৃত প্রান্ত হতে হবে, সুতরাং এটি 5 টি ইনপুটগুলির জন্য কাজ করে। আইপি উপরের ডানদিকে মোড়ানো হয় যেখানে এটি অবিলম্বে প্রতিবিম্বিত হয় এবং বাম কোণে মোড়ানো হয়। অব্যবহৃত প্রান্তটি !মুদ্রণ করে আইপিতে ফিরে যায় । সেই আইপি এখনও দক্ষিণ-পশ্চিমে (ধূসর পথ) ঘুরে দেখার অপেক্ষায় ছিল , তাই এটি তাত্ক্ষণিকভাবে হিট হয়ে প্রোগ্রামটি শেষ করে।0#0#@

এই গেটের জন্য মোট সাতটি 7-বাইট সমাধান রয়েছে। তাদের মধ্যে 5 টি একই কাজ করে এবং কেবল অব্যবহৃত প্রান্তে চলে যাওয়ার জন্য অন্যান্য কমান্ডগুলি ব্যবহার করে (এবং কোনও ভিন্ন ষড়্ভুজ বা অন্যদিকে যেতে পারে):

)\!#?@"    )\!#?@'    )\!#?@^    )\!#?@{    )\!#?@}

এবং সমাধানগুলির একটি অন্য শ্রেণি রয়েছে যা কেবলমাত্র দুটি ইনপুট নিয়ে কাজ করে, তবে যার মৃত্যুদন্ডের পথগুলি আসলে আরও মেসিওর:

?]!|<)@    ?]!|<1@

1001: সমতা

 ( ~
? / @
 # !

এটি শর্তাধীন আইপি নির্বাচনের খুব চালাক ব্যবহার করে makes আমাদের আবার A = 0এবং এর মধ্যে পার্থক্য করা দরকার A = 1। প্রথম ক্ষেত্রে আমরা মুদ্রণ করতে চাই not B, দ্বিতীয়টিতে আমরা মুদ্রণ করতে চাই B। জন্য A = 0আমরা দুটি ক্ষেত্রে পৃথক B। এর সাথে শুরু করা যাক A = B = 0:

আমি

আমরা ধূসর পথ দিয়ে শুরু করি। (~উপেক্ষা করা যায়, আইপি বাম কোণে আবৃত হয় (ধূসর পথে এখনও) এবং পড়তে সাহায্য Aকরে ?(যে হ্রাস, তাই আমরা পেতে -1এবং নীচে বাম কোণে আইপি মোড়ানো। এখন যেমন আমি আগে বলেছি, তিনি আইপি বাছাইয়ের আগে #মডুলোটির মান 6নেন, সুতরাং একটি মান -1আসলে আইপি বেরিয়ে আসে 5, যা লাল পথে বাম কোণায় শুরু হয়। ?পড়েছে B, (হ্রাস 5হ'ল সেই সাথে যাতে আমরা #আবার আঘাত করলে আইপিতে থাকি on ~অবহেলা করে -1যাতে আইপি নীচে ডান কোণে আবৃত হয়, মুদ্রণ করে 1এবং সমাপ্ত হয়।

আমি

এখন যদি Bএর 1পরিবর্তে হয় তবে বর্তমান মানটি হবে 0যখন আমরা #দ্বিতীয়বার আঘাত করব , তাই আমরা আইপিতে ফিরে যাব 0(এখন সবুজ পথে)। এটি ?তৃতীয় বার হিট করে , ফলন করে 0, !প্রিন্ট করে এবং @সমাপ্ত হয়।

আমি

অবশেষে, কেস যেখানে A = 1। এইবারের বর্তমান মানটি ইতিমধ্যে শূন্য যখন আমরা #প্রথমবারের মতো আঘাত করি , তাই এটি কখনও আইপি 5-তে প্রথম স্থানে যায় না। আমরা কেবল সবুজ পথে অবিলম্বে চালিয়ে যাই। ?এখন কেবল একটি শূন্য দেয় না বরং Bপরিবর্তে ফিরে আসে । !এটি মুদ্রণ করে এবং @আবারও সমাপ্ত হয়।

এই গেটের জন্য মোট 3 টি বাইট সমাধান রয়েছে। অন্য দু'জন খুব আলাদাভাবে কাজ করে (এমনকি একে অপরের থেকেও), এবং এমনকি অযৌক্তিকর ব্যবহার করে #। বিশেষত তারা ,(একটি পূর্ণসংখ্যার পরিবর্তে একটি অক্ষর কোড পাঠ করে) এক বা একাধিক মানগুলি পড়েন এবং তারপরে একটি আইপি বাছতে সেই মানটি মডুলো 6 ব্যবহার করে। বেশ সুন্দর বাদাম।

),)#?@!

?~#,~!@

1010: না

 ? ?
| @ !
 ) .

এই এক মোটামুটি সহজ। কার্যকরকরণের পথটি হ'ল অনুভূমিক শাখা যা আমরা ইতিমধ্যে andআগে থেকেই জানি । ??পড়া Aএবং তারপরে তাত্ক্ষণিক B। প্রতিফলিত |এবং শাখা প্রশস্ত করার পরে , B = 0আমরা নীচের শাখাটি সম্পাদন করব, যেখানে মুদ্রণের পরে )মানটি বৃদ্ধি করা 1হয় !। উপরের শাখায় (যদি B = 1) ?কেবল প্রান্তটি পুনরায় সেট করুন 0যা পরে মুদ্রিত হয় !

এই গেটের জন্য আটটি 6-বাইট প্রোগ্রাম রয়েছে। এর মধ্যে চারটি বেশ একই রকম, >পরিবর্তে |বা 1পরিবর্তে )(বা উভয়) ব্যবহার করে:

??>@!)    ??>@!1    ??|@!)    ??|@!1

দু'জন একক ?ব্যবহার করেন যা আয়নাটির কারণে দু'বার ব্যবহৃত হয়। অস্বীকৃতি তারপর ঘটে হিসাবে আমরা জন্য করেছিলাম xorপারেন সঙ্গে (~বা ~)

?>!)~@    ?>!~(@

এবং পরিশেষে, দুটি সমাধান শর্তসাপেক্ষ আইপি সুইচ ব্যবহার করে, কেননা যদি দুর্ঘটনাজনিত ব্যক্তিও কাজ করে তবে সহজ উপায় কেন:

??#)!@    ??#1!@

1011: বি বোঝায় আ

 \ #
? ? !
 1 @

এটি কিছু বরং বিস্তৃত আইপি স্যুইচিং ব্যবহার করে। আমি এবার A = 1মামলা দিয়ে শুরু করব , কারণ এটি সহজ:

এখানে চিত্র বর্ণনা লিখুন

আমরা ধূসর পথ, যেখানে লেখা আছে শুরু Aসঙ্গে ?এবং তারপর হিট #। যেহেতু Aহয় 1এই IP পরিবর্তন 1(সবুজ পথ)। !অবিলম্বে ছাপে যে, আইপি উপরের বাম থেকে গোপন, সার্চ B(অকারণে) এবং বন্ধ।

A = 0জিনিসগুলি যখন কিছুটা আকর্ষণীয় হয়ে ওঠে। প্রথমে বিবেচনা করা যাক A = B = 0:

এখানে চিত্র বর্ণনা লিখুন

এবার, #কিছুই করে না এবং আমরা আইপিতে রয়েছি 0(সেই দিক থেকে লাল পথ)। ?এটি পড়ে Bএবং 1এটিকে পরিণত করে 1। উপরের বাম কোণে মোড়ানোর পরে, আমরা #আবার আঘাত করব , তাই আমরা সর্বোপরি সবুজ পথে শেষ হয়েছি এবং 1সমাপ্তির আগে আগের মতো মুদ্রণ করি ।

শেষ অবধি, এখানে (A, B) = (0, 1)মিথ্যা মামলা রয়েছে:

এখানে চিত্র বর্ণনা লিখুন

নোট করুন যে আমি স্বচ্ছতার জন্য প্রাথমিক ধূসর পথটি সরিয়েছি, তবে প্রোগ্রামটি একইভাবে শুরু হয় এবং আমরা আগের মতোই লাল পথে শেষ করি। তাই এবার দ্বিতীয় ?রিটার্ন 1। এখন আমরা মুখোমুখি 1। এই মুহুর্তে হেক্সাগনিতে অঙ্কগুলি আসলে কী করে তা বোঝা গুরুত্বপূর্ণ (এখন পর্যন্ত আমরা কেবল সেগুলি জিরোতে ব্যবহার করেছি): যখন কোনও অঙ্কের মুখোমুখি হয়, বর্তমান মানটি 10 ​​দ্বারা গুণিত হয় এবং তার পরে অঙ্কটি যুক্ত হয়। এটি সাধারণত উত্স কোডে দশমিক সংখ্যা ভারব্যাটিম লিখতে ব্যবহৃত হয়, তবে এর অর্থ এটি B = 1আসলে মানটিতে ম্যাপ করা হয় 11। সুতরাং যখন আমরা আঘাত করি #, তখন এটি দেওয়ার জন্য মডুলো নেওয়া 6হয় 5এবং তাই আমরা আইপিতে স্যুইচ করি 5( 1আগের পরিবর্তে ) এবং নীল পথে চলতে থাকি । আঘাত?তৃতীয় বার শূন্য ফেরত দেয়, তাই !মুদ্রণ করে এবং অন্য দুটির পরে ?, আইপি নীচে ডানদিকে গুটিয়ে যায় যেখানে প্রোগ্রামটি শেষ হয়।

এর জন্য চারটি 7-বাইট সমাধান রয়েছে এবং তারা সকলেই আলাদাভাবে কাজ করে:

#)/!?@$    <!?_@#1    \#??!1@    |/)#?@!

1100: না এ

 ? (
~ ! @
 . .

কেবল একটি সরল রৈখিক: এর Aসাথে পড়ুন ?, অবহেলা করুন (~, মুদ্রণ করুন !, সমাপ্তি দিয়ে @

এর একটি বিকল্প সমাধান রয়েছে এবং এর ~)পরিবর্তে এটি উপেক্ষা করা হচ্ছে:

?~)!@

1101: এ বোঝায় বি

 ? .
| @ !
 ) .

এটি কেবলমাত্র আমরা উল্টো কথা বলেছিলাম তার বিপরীত প্রভাবের চেয়ে অনেক সহজ। এটি আবার সেইগুলির মতো একটি অনুভূমিক শাখা প্রোগ্রামগুলির মধ্যে একটি and। যদি Aতা হয় তবে 0এটি কেবল 1নীচের শাখায় বর্ধিত হয় এবং মুদ্রিত হয়। অন্যথায়, শীর্ষ শাখাটি আবার কার্যকর করা হয় যেখানে এটি ?পড়ে Bএবং তারপরে !প্রিন্ট করে।

একটা ব্যাপার টন এখানে বিকল্প (মোট 66 সমাধান), বেশিরভাগ কার্যকর নো অপস স্বাধীন পছন্দের কারণে। একটি শুরুর জন্য আমরা সব একই উপায়ে আমরা জন্য পারা উপরে সমাধান পরিবর্তিত হতে পারে andএবং আমরা মধ্যে নির্বাচন করতে পারবেন )এবং 1:

?.|@!)    .?|@!)    ?=|@!)    =?|@!)    ?_|@!)    _?|@!)    ?0|@!)
?.|@!1    .?|@!1    ?=|@!1    =?|@!1    ?_|@!1    _?|@!1    ?0|@!1
?.>@!)    .?>@!)    ?=>@!)    =?>@!)    ?_>@!)    _?>@!)    ?0>@!)
?.>@!1    .?>@!1    ?=>@!1    =?>@!1    ?_>@!1    _?>@!1    ?0>@!1

এবং তারপর শর্তাধীন আইপি নির্বাচন, যেখানে প্রথম কমান্ড প্রায় ইচ্ছামত নির্বাচন করা যেতে পারে ব্যবহার করে একটি ভিন্ন সংস্করণ, এবং সেখানে মধ্যে একটি পছন্দ )এবং 1সেই সব বিকল্প কিছু:

"?#1!@    &?#1!@    '?#1!@    )?#1!@    *?#1!@    +?#1!@    -?#1!@    .?#1!@    
0?#1!@    1?#1!@    2?#1!@    3?#1!@    4?#1!@    5?#1!@    6?#1!@    7?#1!@    
8?#1!@    9?#1!@    =?#1!@    ^?#1!@    _?#1!@    {?#1!@    }?#1!@

"?#)!@    &?#)!@    '?#)!@              *?#)!@    +?#)!@    -?#)!@    
0?#)!@              2?#)!@              4?#)!@              6?#)!@    
8?#)!@                        ^?#)!@    _?#)!@    {?#)!@    }?#)!@

1110: নন্দ

 ? $
@ # )
 ! <

শেষ জটিল। আপনি যদি এখনও পড়ছেন তবে আপনি এটি প্রায় তৈরি করেছেন। :) আসুন আগে তাকান A = 0:

এখানে চিত্র বর্ণনা লিখুন

?পড়া Aএবং তারপর আমরা আঘাত $। এটি একটি লাফ কমান্ড (বেফুঞ্জের মতো #) যা পরবর্তী নির্দেশাবলী এড়িয়ে যায় যাতে আমরা এটিতে শেষ না করি @। পরিবর্তে আইপি এ অবিরত #। তবে যেহেতু Aতাই 0, এটি কিছুই করে না। )এটিকে বৃদ্ধি করে 1যাতে আইপি নীচে যেদিকে 1প্রিন্ট করা হয় সেখানে চলতে থাকে । <পথচ্যুত করতে ডান যেখানে এটি বাম কোনায় করার গোপন করে এবং প্রোগ্রাম বন্ধ করার জন্য আইপি।

এরপরে, ইনপুটটি যখন আসে তখন (A, B) = (1, 0)আমরা এই পরিস্থিতিটি পাই:

এখানে চিত্র বর্ণনা লিখুন

এটি মূলত যে ব্যতীত ঠিক আগের মতন #আমরা আইপি স্যুইচ 1(সবুজ পথ), কিন্তু যেহেতু Bহয় 0আমরা আইপি ফিরে যান 0যখন আমরা আঘাত #একটি দ্বিতীয় সময় (এখন নীল পথ), যেখানে এটি ছাপে 1আগের মত।

অবশেষে, A = B = 1কেস:

এখানে চিত্র বর্ণনা লিখুন

এবার, যখন আমরা #দ্বিতীয়বার, বর্তমান মানটি এখনও 1যাতে আমরা আবার আইপি পরিবর্তন না করি। <এটা প্রতিফলিত করে এবং তৃতীয় বার আমরা আঘাত ?আমরা একটি শূন্য পেতে। সুতরাং আইপি নীচে বামদিকে মোড়ায় যেখানে !শূন্যটি প্রিন্ট করে এবং প্রোগ্রামটি শেষ হয়।

এর জন্য মোট 9 টি বাইট সমাধান রয়েছে। প্রথম বিকল্পটি কেবল 1পরিবর্তে ব্যবহার করে ):

?$@#1!<

তারপরে দুটি সমাধান রয়েছে যা আপনার মাথাকে যে পরিমাণ আইপি স্যুইচিং চলছে তা নিয়ে কাজ করবে:

)?#_[!@    1?#_[!@

এগুলি আসলে আমার মনকে উড়িয়ে দিয়েছে: মজার অংশটি হ'ল আইপি স্যুইচিং একটি মুলতুবি শর্তযুক্ত হিসাবে ব্যবহার করা যেতে পারে। ভাষার আইপি-স্যুইচিং বিধিগুলি এমন যে বর্তমান আইপিটি স্যুইচ হওয়ার আগে আরও একটি পদক্ষেপ করে। যদি সেই পদক্ষেপটি কোনও কোণে যেতে থাকে, তবে বর্তমান মানটি সিদ্ধান্ত নিয়েছে যে আমরা কোন শাখায় ফিরে যেতে চাইলে যদি আইপি চলতে থাকবে। ইনপুট হলে ঠিক এটি ঘটে A = B = 1। যদিও আমি ভাষাটি কীভাবে ডিজাইন করেছি তার সাথে এটি পুরোপুরি সামঞ্জস্যপূর্ণ, আমি কখনই অনুমানের এই অর্থ সম্পর্কে অবগত ছিলাম না, তাই আমার ভাষা যখন আমাকে কিছু নতুন কৌশল শেখায় তখন খুব ভাল লাগে: ডি।

তারপরে তৃতীয় সমাধান রয়েছে যার আইপি স্যুইচিংয়ের পরিমাণ আরও খারাপ (যদিও এটি স্থগিত শর্তযুক্ত প্রভাবটি ব্যবহার করে না):

>?1]#!@

এবং তারপরে আর একটি আছে:

?$@#)!<

এবং তারপরে এই চারটি সমতুল্য সমাধান রয়েছে যা কিছু শর্তসাপেক্ষ আইপি স্যুইচিং ব্যবহার করে এবং এর পরিবর্তে শাখা এবং কোণগুলির মাধ্যমে সমস্ত যুক্তি প্রয়োগ করে:

]<?<@!)    ]<?<@!1    ]|?<@!)    ]|?<@!1

1111: সত্য

 1 !
@ . .
 . .

আপনি শেষের জন্য নিজেকে সাধারণ কিছু অর্জন করেছেন: প্রান্তটি সেট করুন 1, প্রিন্ট করুন !, দিয়ে শেষ করুন @। :)

অবশ্যই, এর একটি বিকল্প রয়েছে:

)!@

স্বাভাবিক হিসাবে, সব নিয়ন্ত্রণ প্রবাহ ডায়াগ্রামে Timwi এর সঙ্গে তৈরি করা HexagonyColorer ও তার সঙ্গে মেমরি ডায়াগ্রাম EsotericIDE


9
আআআআআন্ড দ্য টিএল; ডাঃ পুরষ্কারটি চলে যায় ... (
স্পষ্টভাবে কৌতুক করা

4
এই কারণেই আপনি আর চ্যাটে সক্রিয় নন ??
অপ্টিমাইজার 6

দেরী অনুসারে বাছাই করুন, তবে আপনি কি আপনার ব্রুট ফোর্স কোডটিতে একটি লিঙ্ক যুক্ত করতে পারেন?
nedla2004

@ nedla2004 আমি সাধারণত এগুলি রাখি না, তবে এটি সর্বদা এই স্ক্রিপ্টটির পরিবর্তিত সংস্করণ ।
মার্টিন এন্ডার

40

APL, 22 20 18 বাইট

সত্য এবং মিথ্যা এন্ট্রিগুলি সম্পূর্ণ প্রোগ্রাম এবং অন্য 14 টি ফাংশন। (আদমকে ধন্যবাদ।)

0000 false              0 (complete program)
0001 p and q            ∧
0010 p and not q        >
0011 p                  ⊣
0100 not p and q        <
0101 q                  ⊢
0110 xor                ≠
0111 p or q             ∨
1000 not p and not q    ⍱
1001 eq                 =
1010 not q              ~⊢
1011 p or not q         ≥
1100 not p              ~⊣
1101 not p or q         ≤
1110 not p or not q     ⍲
1111 true               1 (complete program)

এখানে চেষ্টা করুন।


1
+1 এপস ব্যবহারের দুর্দান্ত ব্যবহার! আপনি 0000 এবং 1111 কে ট্রেড-এফএনএস 0এবং এর মাধ্যমে দুটি বাইট সংরক্ষণ করতে পারেন 1
অ্যাডম

Tfns অনুমোদনের জন্য aক্যমত্য রয়েছে, তবে প্রথম লাইনটি গণনা করা হচ্ছে না। এটি সেই প্রোগ্রামের নাম = ফাইলের নাম সহ প্রোগ্রামের ধারক হিসাবে ফাইলগুলি ব্যবহার করে এমন ভাষায় ফাইলের নাম গণনা না করার সাথে সম্পর্কিত not
অ্যাডম


10
জেলি: 19 বাইট। এটি: 18 বাইট এর অর্থ এই নয় যে আপনি ডেনিসকে ছাড়িয়ে গেছেন ? তার জন্য +1।
নন ইনিহির

29

শেষ খেলাতে দাবা / মাঝারি দাবা খেলোয়াড়, 70 টুকরা

সেই ডোমিনো উত্তরের দ্বারা অনুপ্রাণিত হয়ে আমি সিদ্ধান্ত নিয়েছি যে অন্য একটি গেমের এই সম্মান থাকা উচিত।

দ্রষ্টব্য যে টুকরোগুলি কীভাবে সরানো হয় তার জন্য আমি কয়েকটি নিয়ম নিয়েছি। যেহেতু আমি প্রতিটি পরিস্থিতির জন্য সর্বোত্তম পদক্ষেপগুলি অধ্যয়ন করার মতো বোধ করি না, শ্বেতীদের সরানোর নিয়মগুলি সহজ: ততক্ষণ থাকুন না, তিনি যে সর্বোচ্চ র‌্যাঙ্কিং টুকরোটি ঘুরিয়ে নিতে পারেন, যতটা সম্ভব সামান্য উপাদান হারাতে গিয়ে, এবং একটি পয়সা থামান অগ্রাধিকারের ক্রম, প্রচার থেকে। সমান অনুকূলতার সাথে যদি সে দুটি জায়গায় যেতে পারে তবে সে যে কোনও জায়গায় চলে যেতে পারে (অতএব, যদি সে একাধিক বর্গে যেতে পারে তবে সেগুলি একই রঙের)) মনে রাখবেন যে সাদা কিছু ক্যাপচার হয়ে গেলেও তা ক্যাপচার করবে, যদি এটি আঘাত করে তবে যে অংশটি এটি আক্রমণ করছে তার চেয়ে বেশি মূল্য হ'ল। মান এখানে রয়েছে:pawn<knight=bishop<rook<queen

ইনপুটটি হ'ল কোনও রোক উপস্থিত কিনা। নোট করুন যখন ছলগুলি কেবল এ এবং বি নামের সাথে লেবেলযুক্ত থাকে যখন এটি গুরুত্বপূর্ণ: যদি গুরগুলি স্যুইচ করা হয় তখন গেটটি যদি একই আচরণ করে তবে তাদের লেবেল দেওয়া হবে না।

আউটপুটটি বর্গক্ষেত্র সাদা রাজার রঙ শেষ হয়: হোয়াইট = 1, কালো = 0

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

মিথ্যা, 4:

মিথ্যা

এবং, 4:

এখানে চিত্র বর্ণনা লিখুন

এ এবং বি, ৫ নয় (আমার মনে হয় আমি এটিকে তিনটিতে নামিয়ে আনতে পারি, তবে এখনই বোর্ড নেই):

এখানে চিত্র বর্ণনা লিখুন

এ, ৪:

এখানে চিত্র বর্ণনা লিখুন

A এবং B নয়, 5 নয় (আমি মনে করি এটি এটিকে তিনটি করে নামাতে পারি, তবে এখনই বোর্ড নেই):

এখানে চিত্র বর্ণনা লিখুন

বি, 4:

এখানে চিত্র বর্ণনা লিখুন

Xor, 5 (আমি এটি 4 করার একটি উপায় জানি, তবে এখনই আমার বোর্ড নেই):

এখানে চিত্র বর্ণনা লিখুন

বা, 4:

এখানে চিত্র বর্ণনা লিখুন

না, 4:

এখানে চিত্র বর্ণনা লিখুন

এক্সনর, ৫ (এটি 4 করার একটি উপায় আমি জানি, তবে এখনই আমার বোর্ড নেই):

এখানে চিত্র বর্ণনা লিখুন

বি নয়, ৪:

এখানে চিত্র বর্ণনা লিখুন

বি এর দ্বারা এ, ৫ বোঝাচ্ছে (আমি মনে করি এটি এটিকে তিনটি করে নামাতে পারি, তবে এখনই বোর্ড নেই):

এখানে চিত্র বর্ণনা লিখুন

এ, 4 নয়:

এখানে চিত্র বর্ণনা লিখুন

একটি বি, 5 বোঝায় (আমি মনে করি এটি এটিকে তিনটিতে নামিয়ে আনতে পারি, তবে এখনই বোর্ড নেই):

এখানে চিত্র বর্ণনা লিখুন

নন্দ, ৪:

এখানে চিত্র বর্ণনা লিখুন

সত্য, 4:

এখানে চিত্র বর্ণনা লিখুন


1
বাহ, দাবাতে প্রোগ্রামিং সম্ভব যে আমার কোনও ধারণা ছিল না ... আপনি কি এর মধ্যে কয়েকটি ব্যবহার করে একটি ভিডিও / সিমুলেশন পোস্ট করতে পারবেন?
বিটা ক্ষয়

2
হুঁ, আমার বর্তমানে দাবা বোর্ডে অ্যাক্সেস নেই। আমি সম্ভবত বলব যে বাদশাহদের আন্দোলনে পশমের প্রভাবের কারণে এ সূচিত বি / বি বোঝায় একটি / ইত্যাদি বোঝা খুব কঠিন। আমার সম্ভবত এই দুজনের জন্য আরও ভাল ব্যাখ্যা যুক্ত করা উচিত
ধ্বংসাত্মক লেবু

অনুপ্রেরণা পেয়ে খুশি: ডি যদি আমি সঠিকভাবে বুঝতে পারি তবে বোর্ড এবং টুকরা অবস্থানগুলি কোনও প্রোগ্রামের সমান। মুরগিগুলি ইনপুট, তাই যতক্ষণ না এটি সঠিক রঙ হয় ততক্ষণ আমি এগুলি যে কোনও স্কোয়ারে রাখতে পারি?
ননলাইনফর্ট

না, মুরগির ইনপুটটি হ'ল তারা বোর্ড থেকে উপস্থিত বা অনুপস্থিত whether যখন তারা প্রতিসম গেট না থাকে তখন এগুলিকে a এবং b লেবেলযুক্ত করা হয় (যখন এটি পৃথক a এবং b এর বিষয় বিবেচনা করে)। এছাড়াও আমি বুঝতে পেরেছিলাম যে আমি কীভাবে 2 টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো, কিন্তু এখনই আমার বোর্ড নেই। পেইন্ট ব্রাশ অবশ্যই ব্যবহার করতে হবে :)
ধ্বংসাত্মক লেবু

আপনার "এবং" কেস সম্পর্কে, আপনি যদি সঠিক ডালপালা সরিয়ে ফেলেন, তবে বাদশাহকে নীচে (সাদা হয়ে যাওয়া) থামানো কি?
নাথান মেরিল

27

জেলি , 19 বাইট

0 0 0 0 ¤  1 byte  Empty niladic chain. Returns default argument 0.
0 0 0 1 &  1 byte  Bitwise AND.
0 0 1 0 >  1 byte  Greater than.
0 0 1 1    0 bytes Empty link. Returns left argument.
0 1 0 0 <  1 byte  Less than.
0 1 0 1 ị  1 byte  At-index (x,y -> [y][x]). Returns right argument.
0 1 1 0 ^  1 byte  Bitwise XOR.
0 1 1 1 |  1 byte  Bitwise OR.
1 0 0 0 |¬ 2 byte  Logical NOT of bitwise OR.
1 0 0 1 =  1 byte  Equals.
1 0 1 0 ¬} 2 bytes Logical NOT of right argument.
1 0 1 1 *  1 byte  Exponentiation.
1 1 0 0 ¬  1 byte  Logical NOT of left argument.
1 1 0 1 >¬ 2 bytes Logical NOT of greater than.
1 1 1 0 &¬ 2 bytes Logical NOT of bitwise AND.
1 1 1 1 !  1 byte  Factorial.

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


13
আমি 0 বা 1 তে 1 রূপান্তর করতে কারখানাটির ব্যবহার পছন্দ করি
নীল

জেলি কি ইউটিএফ -8? যদি হ্যাঁ হয় ¤এবং ¬2 বাইট হয়, 1 না
vi।

1
@Vi। জেলি ইউটিএফ -8 সমর্থন করে তবে এটি একটি কাস্টম কোড পৃষ্ঠা সমর্থন করে যা 256 টি অক্ষরকে একে একে একক বাইট হিসাবে বোঝে প্রতিটি এনকোড করে। শিরোনামের বাইটস লিঙ্কটি এটিতে ইঙ্গিত করে।
ডেনিস

0 0 1 0 > 1 byte Greater than.দ্বিতীয় ইনপুট নেতিবাচক হলে এটি ব্যর্থ হবে না?
এমডি এক্সএফ

@ এমএফএক্সএফ আমরা কোন সত্যবাদী এবং কোন মিথ্যা মান সমর্থন করি তা চয়ন করতে পারি।
ডেনিস

24

NAND লজিক গেটস - 31 গেট

সৃষ্টিকর্তা হিসেবে মূল সিরিজ এর NAND গেট প্রশ্ন , আমি অন্য লজিক গেট সমস্যা সমাধানের জন্য এই দরজা ব্যবহারের সুযোগ আপ পাস করতে পারেনি।

এখানে চিত্র বর্ণনা লিখুন

এই প্রতিটি ডায়াগ্রামে উপরের ইনপুটটি এ এবং নীচের ইনপুটটি বি হয় is


5
@ এক্সনর এই বিষয়টি জানতে চিত্তাকর্ষক হতে পারে যে তার লজিক গেটটিই ডি তৈরির জন্য সর্বাধিক ন্যান্ড গেটের প্রয়োজন:
জো জেড

আপনি কি কমপক্ষে আপনার কোডটি ফর্ম্যাট করতে লগিসিম ব্যবহার করতে পারেন?
mbomb007

1
@ mbomb007 আমি পরে এটি সম্পাদনা করব। আমি লগিসিমের সাথে এত অভিজ্ঞ নই, তাই এটি কিছুটা সময় নিতে পারে।
জো জেড।

3
তবে আমি হস্তাক্ষরটি আরও ভাল পছন্দ করি।
ফাঁস নুন

1
বিকল্পভাবে আপনি গেটে বা গেটে পরিবর্তন করতে পারেন এবং এটি
রেডস্টোন

22

বিটওয়াইস সাইক্লিক ট্যাগ , 118 বিট = 14.75 বাইট

বিটওয়াইস সাইক্লিক ট্যাগ সম্ভবত সবচেয়ে সহজ টিউরিং-সম্পূর্ণ ভাষা তৈরি করা। একটি প্রোগ্রাম টেপ এবং একটি ডেটা টেপ রয়েছে, উভয় বিটের একটি তালিকা রয়েছে। ডাটা টেপটি খালি না হওয়া পর্যন্ত প্রোগ্রাম টেপটিকে চক্রাকারে ব্যাখ্যা করা হয়:

  • 0: ডেটা টেপ থেকে প্রথম বিটটি মুছুন।
  • 1x: যদি ডেটা টেপের প্রথম বিট 1 হয়, বিটটি xডেটা টেপটিতে যুক্ত করুন।

আমরা দুটি ইনপুট বিট অনুসরণ করে 1 দিয়ে ডেটা টেপ শুরু করি (1 টি প্রয়োজনীয় কারণ 1 টি তৈরি করার কোনও উপায় নেই যদি ডেটা টেপ পুরোপুরি 0s এর সমন্বয়ে থাকে), এবং আমরা গেটের আউটপুট হিসাবে চূড়ান্ত মুছে ফেলা ডেটা বিটটি ব্যবহার করি ।

  • 0,0,0,0 ( false):001
  • 0,0,0,1 ( and):1001001
  • 0,0,1,0 ( A and not B):0110100
  • 0,0,1,1 ( A):1001
  • 0,1,0,0 ( not A and B):0100
  • 0,1,0,1 ( B):0
  • 0,1,1,0 ( xor):0110110010
  • 0,1,1,1 ( or):0110
  • 1,0,0,0 ( nor):1101001000
  • 1,0,0,1 ( xnor):110101001100
  • 1,0,1,0 ( not B):1100100
  • 1,0,1,1 ( B implies A):110101101000
  • 1,1,0,0 ( not A):11010000
  • 1,1,0,1 ( A implies B):11010011001
  • 1,1,1,0 ( nand):10110100100010
  • 1,1,1,1 ( true):1100

অভিনন্দন!
ফাঁস নুন

চিহ্ন আছে কি 1উপর falseপ্রয়োজনীয়?
ক্যালকুলেটরফলাইন

@ ক্যালকুলেটরফলাইন হ্যাঁ, আমাদের টেপটিতে একটি সংযোজন করা দরকার 0যাতে এটি শেষ পর্যন্ত মুছে ফেলা যায়।
অ্যান্ডারস ক্যাসরগ

আহ। সম্পর্কে + মোড়ানো সম্পর্কে ভুলে গেছেন। চতুর!
ক্যালকুলেটরফলাইন

20

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

[].sort
min
int.__rshift__
round
range
{}.get
cmp
max
lambda a,b:a<1>b
lambda a,b:a==b
lambda a,b:b<1
pow
{0:1,1:0}.get
{0:1}.get
lambda a,b:a+b<2
slice

যেমন min(True,False)(বা হিসাবে min(1,0)) ইনপুট নেয় । আউটপুটগুলির কেবলমাত্র সঠিক ট্রুটিয়ালি-ফ্যালসি মান থাকা দরকার তার প্রচুর সুবিধা নেয়। যখনই সম্ভব, ব্যয়বহুল এড়ানোর জন্য বিল্ট-ইন ব্যবহার করুন lambda। আমি বিল্ট-ইনগুলি যে কাজ করে তা অনুসন্ধান করার জন্য কোড ব্যবহার করেছি।

আমার প্রিয় একটি {0:1}.get, যা আমি হাতে হাতে ভেবেছিলাম। অভিধান মানটির {0:1}মূল চাবিকাঠি । এর পদ্ধতিতে একটি কী এবং ডিফল্ট লাগে, কীটির সাথে মেলে মানটি আউটপুট করে বা ডিফল্টরূপে যদি তেমন কোনও কী নেই। সুতরাং, আউটপুট করার একমাত্র উপায় হ'ল কী এবং ডিফল্ট অনুপস্থিত । বিভিন্ন অভিধান সহ অন্য যে কোনও রূপগুলি পেতে পারে তবে কেবল এটিই সবচেয়ে সংক্ষিপ্ত ছিল।01get0{0:1}.get(1,0)10

built_in_names = list(__builtins__) 

object_names = ["int","(0)","(1)"] + \
["True","False","0L","1L","0j","1j"] + \
["str", "''", "'0'","'1'","'a'"] + \
["list", "[]", "[0]", "[1]","['']","[[]]","[{}]"] + \
["set","set()","{0}","{1}","{''}"] + \
["dict","{}","{0:0}","{0:1}","{1:0}","{1:1}","{0:0,1:0}", "{0:0,1:1}","{0:1,1:0}","{0:1,1:1}"] + \
["id"]

object_method_names = [object_name+"."+method_name 
for object_name in object_names 
for method_name in dir(eval(object_name))]

additional_func_names = [
"lambda a,b:0",
"lambda a,b:1",
"lambda a,b:a",
"lambda a,b:b",
"lambda a,b:b<1",
"lambda a,b:a<1",
"lambda a,b:a+b",
"lambda a,b:a*b",
"lambda a,b:a==b",
"lambda a,b:a-b",
"lambda a,b:a<=b",
"lambda a,b:a>=b", 
"lambda a,b:a>b", 
"lambda a,b:a<b", 
"lambda a,b:a<1>b", 
"lambda a,b:a+b<2"]

func_names = built_in_names + object_method_names + additional_func_names

t=True
f=False

cases = [(f,f),(f,t),(t,f),(t,t)]

def signature(func):
    table = [bool(func(x,y)) for x,y in cases]
    table_string = ''.join([str(int(val)) for val in table])
    return table_string

d={}

for func_name in func_names:
    try:
        func = eval(func_name) 
        result = signature(func)
        if result not in d or len(func_name)<len(d[result]):
            d[result]=func_name
    except:
        pass

total_length = sum(len(func) for sig,func in d.items())

print total_length
print

for sig in sorted(d):
    print d[sig]

আপনি কোন int মত বিল্ট-ইন পদ্ধতি ব্যবহার করা যাবে না __lt__বা __eq__? এগুলি আরও বাইট গণনা হ্রাস করবে: int.__gt__পরিবর্তে lambda a,b:b<1, int.__eq__পরিবর্তে lambda a,b:a==bএবং আরও
গ্যাবার ফেকেতে

@ গৌবরফিকেট এগুলি পাইথন ২ তে নেই কারণ intএস অফলোডের সাথে তুলনা করা হচ্ছে cmp। পাইথন 3 এর জন্য আমি এটি চেষ্টা করি নি
xnor

ওহ এখনই দেখছি!
গ্যাবার ফেকেতে

ফাংশন ব্যবহার করে 4 বাইট সংরক্ষণ notজন্য 0001, False- ideone
জনাথন অ্যালান

1
@ জোনাথান অ্যালান এটি চতুর, তবে আমি মনে করি যে এটি notকোনও ফাংশনের প্রয়োজনীয়তা পূরণ করে না কারণ আপনি করতে পারবেন না f=not;f(3,4)। স্ট্রিংটি notকাজ করে কারণ অনুমিত ফাংশন আর্গুমেন্টগুলি একটি টিপলের মতো দেখায় ঠিক যেমনটি 3+কাজ করবে 3+(4)যদিও কোনও ইনপুট হিসাবে 3+নিতে পারে এমন কোনও ফাংশন নয় 4
xnor

20

Go (গেম), 33 টি পাথর, 73 টি ছেদ

যদি ডোমিনো এবং দাবা গ্রহণযোগ্য হয় তবে এটি। এটি পুরো 19x19 গো বোর্ডে খুব গল্ফ হতে পারে না। তাই আমি ছোট ছোট আয়তক্ষেত্রাকার বোর্ড ব্যবহার করেছি। ইনপুটটি 1 এবং 2 চিহ্নিত চিহ্নিত পাথর উপস্থিত কিনা তা। আউটপুটটি কালো জিতছে কিনা। এটি এরিয়া স্কোরিং, 0.5 কোমি, পরিস্থিতিগত সুপারকো, কোনও আত্মহত্যা ব্যবহার করে। খেলতে সব কালো। কিছু একাধিক সমাধান দেওয়া হয়।

সাদা জয় (2, 1x5):

➊━━━➋

1 এবং 2 (3, 2x3):

➊◯➋
┗┷┛

1 এবং 2 নয় (2, 1x5):

╺➊━➁╸

1 (2, 1x5):

╺➊➁━╸ 
╺➊━━➁
➀━➁━╸

1 এবং 2 নয় (2, 1x5):

╺➋━➀╸

2 (2, 1x5):

╺➋➀━╸

1 xor 2 (2, 2x3):

➀┯➁
┗┷┛

1 বা 2 (2, 1x5):

╺➊━➋╸
➀━━━➁

1 বা 2 (2, 1x4):

➊━━➋
╺➀➁╸

1 = 2 (2, 1x7):

╺━➀━➁━╸

2 (2, 1x3) নয়:

➀➁╸

1 বা না 2 (2, 1x4):

➀➁━╸
➀━➁╸
╺➊➁╸
➋➊━╸
➋━➊╸

1 নয় (2, 1x3)

➁➀╸

1 বা 2 নয় (2, 1x4):

➁➀━╸

1 ন্যান্ড 2 (2, 1x3):

➊━➋

কালো জয় (2, 1x3):

➊➋╸
➀━➁
➊━➁

এই পৃষ্ঠাটি আমাকে কিছুটা সহায়তা করেছে: http : //www.mathp Puzzle.com/go.html

1x9 বোর্ডে কেউ 1 এবং 2 এর জন্য 2 টি পাথরের সমাধান খুঁজে পেতে পারে ...


1
আত্মহত্যার জন্য আপনার নিয়ম কী? অননুমোদিত? এবং যখন একটি পক্ষ পুরো বোর্ডটি পূরণ করে তখন কী ঘটে? এটাকে কি আত্মহত্যা বলে বিবেচনা করা হয়?
মার্টিন এন্ডার

নিবন্ধন করুন এবং হ্যাঁ, এটি আত্মহত্যা বলে বিবেচিত।
jimmy23013

1x7 সমাধানটি ভুল বলে মনে হয়েছিল। আমি এটি ঠিক করার চেষ্টা করছি ...
জিমি 23013

15

জাভাস্ক্রিপ্ট ES6, 124 বাইট

a=>0
Math.min
parseInt
a=>a
a=>b=>a<b
a=>b=>b
a=>b=>a^b
Math.max
a=>b=>~a&~b
a=>b=>a==b
a=>b=>~b
Math.pow
a=>~a
a=>b=>a<=b
a=>b=>~a|~b
a=>1

আমি এখনই মারাত্মকভাবে ল্যাম্বডাসকে ঘৃণা করি।


1
যদি আমাকে কিছু প্রোগ্রাম এবং কিছু ফাংশন লেখার অনুমতি দেওয়া হয় ... আমি মনে করি আপনি পরিবর্তন a=>b=>0করতে পারেন a=>0এবং ব্যাকরণটিকে এটি বলছেন (a=>0)(a,b), কেবলমাত্র 4 টি প্রবেশের জন্য।
jimmy23013

ওহ হ্যাঁ, ধন্যবাদ!
মামা ফান রোল

2
Math.minপরিবর্তে a=>b=>a&bMath.maxপরিবর্তে a=>b=>a|bMath.powপরিবর্তে a=>b=>a>=b
কনর ও'ব্রায়ান

1
এছাড়াও, যেহেতু NaN মিথ্যা, তাই আপনি এর parseIntপরিবর্তে এটি করতে পারেন a=>b=>a>b
কনার ও'ব্রায়ান

1
@ অ্যালগমায়ার !NaN=> true, !!NaN=>false
মামা ফান রোল

14

রেটিনা , 62 39 বাইট

23 বাইটস @ মার্টিনইেন্ডারকে ধন্যবাদ !

0000 false              1 byte : 2
0001 p and q            2 bytes: 11
0010 p and not q        2 bytes: 10
0011 p                  2 bytes: ^1
0100 not p and q        2 bytes: 01
0101 q                  2 bytes: 1$
0110 xor                5 bytes: 01|10
0111 p or q             1 byte : 1
1000 not p and not q    2 bytes: 00
1001 xnor               5 bytes: (.)\1
1010 not q              2 bytes: 0$
1011 p or not q         5 bytes: ^1|0$
1100 not p              2 bytes: ^0
1101 not p or q         5 bytes: ^0|1$
1110 not p or not q     1 byte : 0
1111 true               0 bytes: 

হিসাবে ইনপুট লাগে PQ

এর মধ্যে একটি পূর্ণসংখ্যা বের 0করে 30মিথ্যা, অন্যরা সত্যবাদী।

ব্যাখ্যা

তারা সব ঠিক রেজিওসেস

উদাহরণস্বরূপ, 01|10কেবল ম্যাচগুলি 01বা 10

ইন 0000, 2ইনপুটটিতে কখনই থাকবে না, তাই এটি কখনও মেলে না।

ইন 1111, এটি খালি স্ট্রিংয়ের সাথে মেলে, যা রয়েছে 4


^1|0$শুধুমাত্র 1 টি অক্ষরের স্ট্রিংয়ের সাথে মেলে। এখানে কি হচ্ছে?
ক্যালকুলেটরফলাইন

@ ক্যালকুলেটরফলাইন এটি [ 1ইনপুট শুরুতে] বা [ 0ইনপুট শেষে ] মেলে । এটি পেতে আমাকে এক মিনিট সময় নিয়েছে ...
ETH প্রোডাকশনগুলি

অগ্রাধিকার, ছেলেরা ....
লিকি নুন

আমি অনুমান করি এর ^1|0$চেয়ে পড়া শক্ত 1.|.0। মনে হয় সব কঠিন পড়া করতে
l4m2

10

স্ট্যাক বিড়াল , 67 + 64 = 131 বাইট

নোট করুন যে +64 -nmপ্রতিটি প্রোগ্রামে পতাকা প্রয়োগ করা from -nসংখ্যা I / O ইঙ্গিত করে, এবং -mশেষ অক্ষর জুড়ে উত্স কোডটি আয়না করে - সমস্ত জমা দেওয়ার জন্য প্রযুক্তিগতভাবে এই পতাকাগুলির প্রয়োজন হয় না, তবে ধারাবাহিকতা এবং সরলতার জন্য আমি সেগুলি একইভাবে স্কোর করছি।

-2 -2 -3 -3     !I                0 0 0 0     <I!+
-4 -4 -4  1     |!T*I             0 0 0 1     [>I=I_
-4 -4  3 -2     *I*_              0 0 1 0     :I*=I:
-2 -2  3  3     T*I               0 0 1 1     [<!>X
-2  1 -2 -2     _*T*I             0 1 0 0     *|!TI:
-2  1 -3  1     !-|_I             0 1 0 1     <!I!>X
-2  3  3 -2     ^T*I              0 1 1 0     ^:]<_I
-2  3  3  3     -_T*I             0 1 1 1     *I<-I!
 2 -3 -3 -3     -*|_I             1 0 0 0     ^{!:}I_
 2 -3 -3  2     _|*I              1 0 0 1     _|[<I!:
 1 -2  1 -2     :]I*:             1 0 1 0     _!:|]X
 1 -2  1  1     *I\<X             1 0 1 1     *>I>!I
 2  2 -3 -3     -*I               1 1 0 0     I^:!
 2  2 -3  2     _*I_              1 1 0 1     |I|^:!
 1  2  2 -1     |!:^I             1 1 1 0     -I*<*I
 1  1  1  1     *<X               1 1 1 1     +I+

()স্ট্যাক বিড়ালগুলিতে কোনও উপাদানটি ইতিবাচক বা অ-পজিটিভ (যেমন 0 বা negativeণাত্মক) কিনা তা যাচাই করে, তাই আমরা যথাক্রমে সত্য / মিথ্যাচারের জন্য এটি ব্যবহার করছি। দ্বিতীয় কলামটি কেবল আগ্রহের জন্য, এবং 0/ 1গুলি সহ সেরা গেটগুলি আউটপুট হিসাবে তালিকাভুক্ত করে (মোট স্কোর 90)।

ইনপুটটি STDIN এর মাধ্যমে সীমানা-বিচ্ছিন্ন বিট। এটি অনলাইন চেষ্টা করুন!


স্ট্যাক বিড়াল একটি বিপরীতমুখী মূল ভাষা, যেখানে প্রোগ্রামগুলির প্রতিচ্ছবি প্রতিসাম্যতা থাকে। একটি স্নিপেট দেওয়া f(যেমন >[[(!-)/), মিরর চিত্র (উদাঃ \(-!)]]<) বিপরীতমুখী গণনা করে f^-1। যেমন, দৈর্ঘ্যের প্রোগ্রামগুলি কিছুই করে না (বা অসীম লুপে আটকে যায়), এবং কেবলমাত্র অপ্রচলিত প্রোগ্রামগুলির মধ্যে বিজোড় দৈর্ঘ্য রয়েছে, f g f^-1যেখানে gকেন্দ্র অপারেটর রয়েছে কম্পিউটিং ।

যেহেতু অর্ধেক উত্স কোড সর্বদা অপ্রয়োজনীয় তাই এটিকে ছেড়ে দেওয়া যেতে পারে এবং -mপতাকাটি সহ কোডটি চালানো ইঙ্গিত দেয় যে উত্স কোডটি আসল উত্স কোডটি পুনরুদ্ধার করতে শেষ চরিত্রের উপর মিরর করা উচিত। উদাহরণস্বরূপ, প্রোগ্রামটি *<Xআসলে *<X>*, যা প্রতিসম হয়।

স্ট্যাক বিড়ালগুলিতে গল্ফিং অত্যন্ত অনিচ্ছুক, সুতরাং উপরোক্ত প্রোগ্রামগুলি হিংস্র বল দ্বারা সন্ধান করতে হয়েছিল। তাদের বেশিরভাগই আশ্চর্যজনকভাবে জটিল, তবে আমি কয়েকটি ব্যাখ্যা করব এবং সময় পেলে এই উত্তরটি যুক্ত করব। আপাতত, 0/ 1সংস্করণগুলির জন্য কিছু ব্যাখ্যা এবং বিকল্প সমাধানগুলি এখানে গিথুব সংগ্রহস্থলে পাওয়া যাবে


1
Note that the +64 is from applying the -nm flags to each program.3 * 16 = 48 বা 2 * 16 = 32, যেভাবেই হোক
বিড়াল

@ ক্যাট ফ্ল্যাগগুলির জন্য প্রতি প্রোগ্রামে 4 টি খরচ হয়, কারণ আপনার পাশাপাশি জায়গাটিও গণনা করতে হবে।
FryAmTheEggman

@ কেট প্রাসঙ্গিক মেটা পোস্ট: meta.codegolf.stackexchange.com/questions/273/…
মার্টিন এন্ডার

এক বছর কেটে গেছে। আপনার কি এখনও সময় আছে?
ক্যালকুলেটরফলাইন

8

হাস্কেল, 78 76 75 বাইট

  1. _#_=2<1
  2. &&
  3. >
  4. pure
  5. <
  6. _#b=b
  7. /=
  8. ||
  9. (not.).max
  10. ==
  11. _#b=not b
  12. >=
  13. a#_=not a
  14. <=
  15. (not.).min
  16. _#_=1<2

সম্পাদনা করুন: -1 বাইট @ কোল ধন্যবাদ।


আমি শুধু "ডুড, _#_কোনও স্ট্যান্ডার্ড অপারেটর নই!" এবং তখন আমি বুঝতে পারি ... ভাল হয়েছে।
গাণিতিক

4 হতে পারেpure
কোল

@ কোল: ধন্যবাদ বাহ, pureমধ্যে চালু ছিল Prelude2015 ফিরে, তাই এটি এই প্রতিদ্বন্দ্বিতা সময় পাওয়া যায়।
নিমি

6

ব্র্যাচল্যাগ , 36 34 বাইট

0000 false              \     Backtrack (always false)
0001 p and q            1.    Unify input and output with 1
0010 p and not q        >.    Input > Output
0011 p                  1     Unify input with 1
0100 not p and q        <.    Input < Output
0101 q                  ,1.   Unify output with 1
0110 xor                '.    Input and output cannot unify
0111 p or q             1;1.  Unify input with 1 or unify output with 1
1000 not p and not q    0.    Unify input and output with 0
1001 eq                 .     Unify input with output
1010 not q              ,0.   Unify output with 0
1011 p or not q         >=.   Input >= Output
1100 not p              0     Unify input with 0
1101 not p or q         <=.   Input <= Output
1110 not p or not q     0;0.  Unify input with 0 or unify output with 0
1111 true                     Empty program (always true)

এটি 0মিথ্যা মান এবং 1সত্যবাদী মান হিসাবে প্রত্যাশা করে। রিটার্ন trueবা false। p হল Inputএবং q হল Output


আউটপুট আপনি কীভাবে ইনপুট করবেন?
ফাঁস নুন

1
পছন্দ করুন আপনার জিজ্ঞাসার প্রধান প্রিকিটিকে দুটি আর্গুমেন্ট রয়েছে, বলা হয় Inputএবং Outputকনভেনশন অনুসারে, তবে আপনি উভয়কে মান সেট করতে পারেন, বা উভয় থেকে মান ফিরিয়ে দিতে পারেন।
ফ্যাটালাইজ করুন

1
এটি কাজের সঠিক হাতিয়ার: পি
কনর ওব্রায়ান

6

প্রোলোগ, 147 145 বাইট

@ এসকিউবি-তে 2 বাইট পেয়েছে ধন্যবাদ

a(a,a).       % 0000 false
b(1,1).       % 0001 P and Q
c(1,0).       % 0010 P and not Q
d(1,_).       % 0011 P
e(0,1).       % 0100 not P and Q
f(_,1).       % 0101 Q
g(P,Q):-P\=Q. % 0110 P xor Q
h(1,_).       % 0111 P or Q
h(0,1).
i(0,0).       % 1000 not P and not Q
j(P,P).       % 1001 P == Q                 
k(_,0).       % 1010 not Q
m(P,Q):-P>=Q. % 1011 P or not Q
n(0,_).       % 1100 not P              
r(P,Q):-P=<Q. % 1101 not P or Q         
s(0,_).       % 1110 not P or not Q
s(1,0).
t(_,_).       % 1111 true

ক্যোয়ারী x(P,Q).সঙ্গে xউপযুক্ত চিঠি এবং হচ্ছে Pএবং Qপারেন 0 বা 1. সেট
রিটার্নস trueবা false

পরীক্ষা সহ সুইচ উদাহরণ - runTest.চালাতে প্রবেশ করুন।


এটি a(2,2).মিথ্যা সমর্থন করে ?
জিমি 23013

@ জিমি ২৩০১৩ আমি অনুমান করি যে এটি যদি আমি ধরে নিই যে 2 টি মিথ্যা বলে মনে হচ্ছে। নিশ্চিত যে এটি গ্রহণযোগ্য কিনা।
ফ্যাটালাইজ করুন

@ জিমি ২৩০১৩ আসলে, a(a,a).(বা অন্য কোনও চিঠি) খুব কার্যকর এবং aসত্যতার পক্ষে গ্রহণযোগ্য ইনপুট নয়, তাই এটি ভাল। পরামর্শের জন্য ধন্যবাদ.
ফ্যাটালাইজ করুন

6

এনটিএফজে, 86 বাইট

0000 false              ~
0001 p and q            |:|
0010 p and not q        :||:|
0011 p                  $
0100 not p and q        #{:||:|
0101 q                  #{$
0110 xor                :#{:#{:||#}:|||
0111 p or q             :|#{:||
1000 not p and not q    :|#{:||:|
1001 eq                 :#{:#{:||#}:|||:|
1010 not q              #{$:|
1011 p or not q         #{:||
1100 not p              $:|
1101 not p or q         :||
1110 not p or not q     |
1111 true               #

এখানে চেষ্টা করুন! তবে প্রথমে নীচে পড়ুন।

ইনপুট স্ট্যাকের উপর জড়িত। ফলাফল স্ট্যাক করা হয়। (এক 16 বাইট যোগ করুন *প্রতিটি শেষে) যদি তুমি চাও 0x00বা 0x010 এবং 1 এর যোগ করুন একটি অতিরিক্ত 160 বাইট যদি আপনি চান একটি প্রতিনিধিত্বমূলক আউটপুট 0বা 1মুদ্রিত। ( ~~##~~~#{@প্রত্যেকের আগে রাখুন *।)

এনটিএফজে-র একমাত্র বাইনারি অপারেটর ন্যান্ড, সুতরাং এগুলির প্রত্যেকটি ন্যানড আকারে লিখিত।

আসুন তাদের প্রতিটি মাধ্যমে চলুন।

0: মিথ্যা

~

~একটি মিথ্যা বিট প্রতিনিধিত্ব করে। যথেষ্ট সহজ। যেহেতু ইনপুট স্ট্যাকের নীচে অন্তর্নিহিত তাই এটি এর শীর্ষে রেখে দেওয়া হয়েছে।

1: পি এবং কিউ

|:|

এনটিএফজে একটি স্ট্যাকের উপর পরিচালনা করে। :সদৃশ জন্য কমান্ড। মান্য যে p and qnot (p nand q)এবং যে not q = q nand q

Command | Stack
        | p q
   |    | (p nand q)
   :    | (p nand q) (p nand q)
   |    | (p nand q) nand (p nand q)
        | => not (p nand q)
        | => p and q

(নোট, তারপরে, প্রত্যাখ্যান:| বলা যেতে পারে এবং একত্রে বলা যেতে পারে )|:|

2: পি এবং না Q

:||:|

লক্ষ্য করুন যে এটি কেবল একটি প্রত্যাখ্যান :|এবং সংমিশ্রণ |:|

Command | Stack
        | p q
  :|    | p (not q)
  |:|   | p and (not q)

3: পি

$

$স্ট্যাক থেকে একটি আইটেম পপ। তাই হ্যা.

4: পি এবং কিউ নয়

#{:||:|

এটি #{শুরুতে বাদে 2 হিসাবে একই জিনিস । #1 টি (সত্য বিট) ঠেলে এবং {একবারে বাম স্ট্যাকটি ঘোরান। যথেষ্ট সহজ।

5: কিউ

#{$

বামদিকে একবার ঘোরান, ড্রপ করুন।

6: xor

:#{:#{:||#}:|||

পালন:

p xor q = (p and (not q)) or ((not p) and q)                ; by experimentation (trust me)
        = (not ((not p) nand q)) or (not (p nand (not q)))  ; by definition of nand
        = not (((not p) nand q) and (p nand (not q)))       ; by De Morgan's laws
        = ((not p) nand q) nand (p nand (not q))            ; by definition of nand

তবে, স্ট্যাকটি সম্পূর্ণরূপে সদৃশ করার কোনও উপায় নেই। সুতরাং, আমরা প্রতিটি আনতে আছে চলুন p, qশীর্ষে এবং এটি প্রতিলিপি।

Command | Stack
        | p q
   :    | p q q
  #{    | q q p
   :    | q q p p
  #{    | q p p q
  :|    | q p p (not q)
   |    | q p (p nand (not q))
  #}    | (p nand (not q)) q p
  :|    | (p nand (not q)) q (not p)
   |    | (p nand (not q)) (q nand (not p))
   |    | (p nand (not q)) nand (q nand (not p))

এবং এইভাবে, আমরা আমাদের xor আছে।

7: পি বা কিউ

:|#{:||

নেগেট শীর্ষে, নীচে শীর্ষে আনুন, এটিকে উপেক্ষা করুন এবং তাদের একসাথে ন্যানড করুন। মূলত p or q = (not p) nand (not q),।

8: p নয় এবং Q নয়

:|#{:||:|

এটি সহজভাবে 7. এর উপকার।

9: এক

:#{:#{:||#}:|||:|

এটি স্রেফ xnor , না xor নয়। আবার সহজ।

10: কিউ না

#{$:|

নেগেশন 5।

11: পি না কিউ

#{:||

নেগেট পি, নন্দ (not p) nand q = not ((not p) and q) = p or (not q) (by De Morgan's laws)

12: পি না

$:|

ছেড়ে দিন, থামুন এবং অবহেলা করুন।

13: পি বা কিউ নয়

:||

দিনটি বাঁচাতে ডি মরগানের আইন আবারও! 11 হিসাবে একই প্রক্রিয়া, কেবল qপরিবর্তে উপেক্ষা করা p

14: পি বা না Q

|

এটি কেবল একটি নকল নন্দ।

15: সত্য

#

# সত্য বিট।


শুধু কেন ...> _>
21'6

আইডিকি ঠিক কীভাবে এটি কাজ করে তবে এটি বেশ দুর্দান্ত
লাগছে

5 টি খালি প্রোগ্রাম নয়, এবং 10 টি :|কেন?
জোফান

6

মাইনক্রাফ্ট, 89 ব্লক

নিম্নলিখিত সমস্ত ফটোতে নীল ব্লকগুলি ইনপুট এ এবং কমলা ব্লকগুলি ইনপুট বি এর জন্য

16. সত্য গেট - 1 টি ব্লক

এখানে চিত্র বর্ণনা লিখুন

15. নন্দ গেট - 1x2x3 = 6 টি ব্লক

এখানে চিত্র বর্ণনা লিখুন

14. এ => বি - 1x2x3 = 6 টি ব্লকএখানে চিত্র বর্ণনা লিখুন

13. না এ - 2 ব্লক এখানে চিত্র বর্ণনা লিখুন

12. বি => এ - 1x2x3 = 6 টি ব্লকএখানে চিত্র বর্ণনা লিখুন

১১ নয় বি - ২ টি ব্লক এখানে চিত্র বর্ণনা লিখুন

10. এক্সএনওআর - 1x3x4 = 12 টি ব্লক এখানে চিত্র বর্ণনা লিখুন

9. NOR - 1x2x3 = 6 টি ব্লকএখানে চিত্র বর্ণনা লিখুন

8. বা - 1 টি ব্লক এখানে চিত্র বর্ণনা লিখুন

7. এক্সওআর - 1x3x4 = 12 টি ব্লক এখানে চিত্র বর্ণনা লিখুন

6. বি - 1 ব্লক এখানে চিত্র বর্ণনা লিখুন

5.! এএন্ডবি - 1x2x5 = 10 ব্লক এখানে চিত্র বর্ণনা লিখুন

4. এ - 1 ব্লক এখানে চিত্র বর্ণনা লিখুন

3. একটি এবং! বি - 1x2x5 = 10 ব্লক এখানে চিত্র বর্ণনা লিখুন

2. এবং - 2x2x3 = 12 টি ব্লক এখানে চিত্র বর্ণনা লিখুন

1. মিথ্যা- 1 ব্লক এখানে চিত্র বর্ণনা লিখুন


2
দ্বিতীয় থেকে শেষের চিত্রে (এবং) আপনি ব্লকের পিছনে টর্চগুলি উপরে রেখে লিভারের বিপরীতে 6 টি ব্লক সংরক্ষণ করতে পারবেন। টুকরো টুকরো টুকরো করার জন্য মশালটিকে মাঝখানে অদলবদল করুন এবং উপরে ধুলো মুছে ফেলুন এবং এটিকে 1x2x3 = 6 ব্লকে নামিয়ে আনুন।
লুকা এইচ

5

গণিত, 67 বাইট

0>1&
And
#&&!#2&
#&
!#&&#2&
#2&
Xor
Or
Nor
Xnor
!#2&
#||!#2&
!#&
!#||#2&
Nand
1>0&

এগুলির প্রত্যেকটি একটি ফাংশনে মূল্যায়ন করে, যাতে আপনি তাদের মতো ব্যবহার করতে পারেন

#&&!#2&[True, False]
Xor[True, False]

আহা, যদি গাণিতিকায় কেবল পূর্ণসংখ্যাগুলি সত্য / মিথ্যা হত তবে এই চারটি দীর্ঘতরগুলি যথেষ্ট ছোট করা যেত।


যদি পূর্ণসংখ্যাগুলি সত্য / মিথ্যা না হয়, আপনি যখন তাদের একটি বিবৃতিতে রাখেন তখন কি হবে?
কনর ও'ব্রায়েন

3
@ CᴏɴᴏʀO'Bʀɪᴇɴ এটি অপরিবর্তিত রয়েছে।
মার্টিন ইন্ডার

5

এমএটিএল, 34 23 বাইট

আমি আশা করি আমি ঠিক আছে! শূন্য মিথ্যা, শূন্য নয় সত্য। প্রতিটি ফাংশন দুটি অন্তর্ভুক্ত ইনপুট লাগে (যদিও এটি কিছু ইনপুট উপেক্ষা করতে পারে)। প্রথম ইনপুট, এবং দ্বিতীয় বি হল আপনি ইনপুট 0/ 1সত্য / মিথ্যা, বা T/ F

পরীক্ষার কেস 3 এর জন্য এখানে ট্রাইআইটঅনলাইন উদাহরণ।

ব্যবহার করে 4 বাইট সংরক্ষিত *জন্য andব্যবহার করার মাধ্যমে অন্যদের 4, এবং >/ <পরিবর্তে ~wY&/ w~Y&পর আমি ডেনিস 'উত্তর দেখেছি!

1.  0,0,0,0 0 (ignores input, just returns a zero)
2.  0,0,0,1 * (and)
3.  0,0,1,0 < (not-A and B)
4.  0,0,1,1 D (A)
5.  0,1,0,0 > (not-B and A)
6.  0,1,0,1 xD (discard A, display B)
7.  0,1,1,0 Y~ (xor)
8.  0,1,1,1 + (or)
9.  1,0,0,0 +~ (not-or)
10. 1,0,0,1 = (A=B)
11. 1,0,1,0 x~ (not-B)
12. 1,0,1,1 <~ (not-B or A)
13. 1,1,0,0 ~ (not-A)
14. 1,1,0,1 ~+ (not-A or B)
15. 1,1,1,0 *~ (not(A and B))
16. 1,1,1,1 1 (just returns 1)

10
ছয় নম্বর এটি মজাদার মনে করে।
কনর ওব্রায়ান

@ সিও'বিʀɪᴇɴ 6 নম্বরটি সেরা, আমি 12 নম্বরও পছন্দ করি! xD!
ডেভিড

আপনার "অসম" ফাংশন নেই?
ফাঁস নুন

না (আমি কমপক্ষে এটি মনে করি না)
ডেভিড

2
@ ডেভিড আমার ধারণা 7 নম্বরটি প্রতিস্থাপন করা যাবে-
লুইস মেন্ডো

5

ডিসি, 37 বাইট

dc("ডেস্ক ক্যালকুলেটর") হ'ল একটি মানক ইউনিক্স কমান্ড, স্ট্যাক-ভিত্তিক পোস্টফিক্স ক্যালকুলেটর। এটিতে বিট অপারেশনগুলির অভাব রয়েছে এবং তুলনা অপারেটরগুলি কেবল ম্যাক্রোগুলি কার্যকর করতে ব্যবহৃত হতে পারে (যা বাইটগুলির পক্ষে মূল্য নয়)। পূর্ণসংখ্যা বিভাগ যে কিছু জন্য আপ আপ।

এই স্ক্রিপ্টগুলি স্ট্যাকের উপর প্রত্যাশা করে 0এবং 1মান দেয় এবং ফলাফলটি স্ট্যাকের উপরে ছেড়ে দেয়।

0,0,0,0 (false)              0
0,0,0,1 (and)                *         a*b
0,0,1,0                      -1+2/     (a-b+1)/2
0,0,1,1 (A)                  r         reverse a, b: a now on top
0,1,0,0                      -1-2/     (a-b-1)/2
0,1,0,1 (B)                            (0 bytes) do nothing: b on top
0,1,1,0 (xor)                -         a-b
0,1,1,1 (or)                 +         a+b                  
1,0,0,0 (nor)                +v1-      sqrt(a+b) -1
1,0,0,1 (xnor)               +1-       a+b-1
1,0,1,0 (not B)              1-        b-1
1,0,1,1 (if B then A)        -1+       a-b+1
1,1,0,0 (not A)              r1-       a-1
1,1,0,1 (if A then B)        -1-       a-b-1            
1,1,1,0 (nand)               *1-       a*b - 1
1,1,1,1 (true)               1

5

ভোল্টেজ , 85 বাইট

2 বাইট সংরক্ষণের জন্য Sp3000 ধন্যবাদ।

!@
??&!@
??~&!@
?!@
?~?&!@
??!@
??$!@
??|!@
??|#$!@
??$#$!@
?#?$!@
?#?$|!@
?#$!@
?#$?|!@
??&#$!@
1!@

এগুলি সমস্ত সম্পূর্ণ প্রোগ্রাম, দুটি পূর্ণসংখ্যা পড়া 0বা 1এসটিডিআইএন (কোনও অ-অঙ্ক বিভাজক ব্যবহার করে) থেকে এবং ফলাফলটি মুদ্রণ হিসাবে 0বা এসটিডিআউটতে প্রিন্ট করা 1

এটি অনলাইন চেষ্টা করুন!(কোনও পরীক্ষার স্যুট নয়, তাই আপনাকে ম্যানুয়ালি বিভিন্ন প্রোগ্রাম এবং ইনপুট চেষ্টা করতে হবে))

ব্যাখ্যা হিসাবে, এই সব বরং সোজা। সমস্ত প্রোগ্রাম লিনিয়ার, এবং ব্যবহৃত কমান্ডগুলি নিম্নলিখিতটি করে:

?   Read integer from STDIN and push.
!   Pop integer and write to STDOUT.
@   Terminate program.
&   Bitwise AND of top two stack items.
|   Bitwise OR of top two stack items.
$   Bitwise XOR of top two stack items.
~   Bitwise NOT of top stack item.
#   Push stack depth (which is always 1 when I use it in the above programs).
1   On an empty stack, this pushes 1.

নোট করুন যে আমি ব্যবহার করছি #সর্বদা এটির সাথে একত্রিত করতে ব্যবহৃত হয় $, অর্থাত গণনা করতে XOR 1, বা অন্য কথায় যৌক্তিক অবহেলার জন্য। শুধু কয়েক ক্ষেত্রেই আমি সক্ষম ব্যবহার করতে ছিল ~, পরিবর্তে কারণ পরবর্তী &ফল থেকে সব অবাঞ্ছিত বিট পরিত্যাগ -1বা -2


5

আইএ -32 মেশিন কোড, 63 বাইট

বিচ্ছিন্নতার সাথে কোডের হেক্সডাম্প:

0000  33 c0     xor eax, eax;
      c3        ret;

0001  91        xchg eax, ecx;
      23 c2     and eax, edx;
      c3        ret;

0010  3b d1     cmp edx, ecx;
      d6        _emit 0xd6;
      c3        ret;

0011  91        xchg eax, ecx;
      c3        ret;

0100  3b ca     cmp ecx, edx;
      d6        _emit 0xd6;
      c3        ret;

0101  92        xchg eax, edx;
      c3        ret;

0110  91        xchg eax, ecx;
      33 c2     xor eax, edx;
      c3        ret;

0111  8d 04 11  lea eax, [ecx + edx];
      c3        ret;

1000  91        xchg eax, ecx; // code provided by l4m2
      09 d0     or eax, edx;
      48        dec eax;
      c3        ret;

1001  3b ca     cmp ecx, edx;
      0f 94 c0  sete al;
      c3        ret;

1010  92        xchg eax, edx;
      48        dec eax;
      c3        ret;

1011  39 d1     cmp ecx, edx; // code provided by l4m2
      d6        _emit 0xd6;
      40        inc aex;
      c3        ret;

1100  91        xchg eax, ecx;
      48        dec eax;
      c3        ret;

1101  3b d1     cmp edx, ecx; // code inspired by l4m2
      d6        _emit 0xd6;
      40        inc aex;
      c3        ret;

1110  8d 44 11 fe   lea eax, [ecx+edx-2] // code provided by l4m2
      c3        ret;

1111  91        xchg eax, ecx;
      40        inc eax;
      c3        ret;

কোডটি এটির চেয়ে দীর্ঘতর, কারণ এটি একটি স্ট্যান্ডার্ড কোডিং কনভেনশন ব্যবহার করে: ইনপুট ইন ecxএবং edx, এবং আউটপুট ইন al। এটি সি হিসাবে প্রকাশ করা যেতে পারে

unsigned char __fastcall func(int, int);

দেখে মনে হচ্ছে এমএস ভিজ্যুয়াল স্টুডিও অননুমোদিত SALCঅপকোড বুঝতে পারে না , সুতরাং নামটির পরিবর্তে আমাকে এর কোডটি ব্যবহার করতে হয়েছিল।

কিছু কোড নমুনা উন্নত করার জন্য আপনাকে ধন্যবাদ l4m2 !


1
1110 8D4411FE LEA EAX, [ECX+EDX-2]
l4m2

5

সি 34 বাইট

#define g(n,a,b)((n-1)>>3-b-2*a)&1

যেখানে এন হ'ল ফাংশন নম্বরটি ব্যবহার করা হবে তবে আমি মনে করি এটি অস্বীকার করা হবে তাই আমি এই অন্যটিটির প্রস্তাব দিই:

সি 244 বাইট (স্মৃতি ব্যবহার করে)

typedef int z[2][2];
z a={0,0,0,0};
z b={0,0,0,1};
z c={0,0,1,0};
z d={0,0,1,1};
z e={0,1,0,0};
z f={0,1,0,1};
z g={0,1,1,0};
z h={0,1,1,1};
z i={1,0,0,0};
z j={1,0,0,1};
z k={1,0,1,0};
z l={1,0,1,1};
z m={1,1,0,0};
z n={1,1,0,1};
z o={1,1,1,0};
z p={1,1,1,1};

এটি ডাবল ইনডেক্সড অ্যারে ব্যবহার করে। n[0][1]হয়(A implies B)(0,1)

138 বাইট পিছনে

আমি সবেমাত্র ফোর্থ শিখলাম। আমি অনুমান করি যে এটি আনসি ফোর্থটি সামঞ্জস্যপূর্ণ কারণ এটি জিফোতেও চালিত হয়।

: z create dup , 1+ does> @ -rot 3 swap - swap 2* - rshift 1 and ; 
0 
z a z b z c z d z e z f z g z h z i z j z k z l z m z n z o z p 
drop

ফাংশন z সরবরাহ করা নাম সহ একটি নতুন ফাংশন তৈরি করে তারপরে যুক্তির গেট নম্বরটি স্ট্যাকের শীর্ষ থেকে নতুন ফাংশন ঠিকানায় রাখুন। এটি পরবর্তী ঘোষণার জন্য স্ট্যাকের পরবর্তী (n + 1) লজিক গেট ফাংশনটি ছেড়ে দেয়।

আপনি এটি পরীক্ষা করতে পারেন:
এবং এবি

0 0 b . cr 
0 1 b . cr
1 0 b . cr 
1 1 b . cr   

("।" স্ট্যাকের "মুদ্রণ শীর্ষ" ক্রু "ক্যারিয়ার রিটার্ন)


আপনাকে প্রতিটি ফাংশনের জন্য কোডের স্নিপেট সরবরাহ করতে হবে।
ক্যালকুলেটরফলাইন

4

সি, 268 বাইট

#define c(a,b)0      // 0000 
#define d(a,b)a&b    // 0001 
#define e(a,b)a>b    // 0010 
#define f(a,b)a      // 0011 
#define g(a,b)a<b    // 0100 
#define h(a,b)b      // 0101 
#define i(a,b)a^b    // 0110 
#define j(a,b)a|b    // 0111 
#define k(a,b)!b>a   // 1000 
#define l(a,b)a==b   // 1001 
#define m(a,b)!b     // 1010 
#define n(a,b)!b|a   // 1011 
#define o(a,b)!a     // 1100 
#define p(a,b)!a|b   // 1101 
#define q(a,b)!b|!a  // 1110 
#define r(a,b)1      // 1111 

ম্যাক্রোগুলি ফাংশনের চেয়ে কম মনে হয়।


4

ব্রায়ান ও চক , 183 বাইট

4 টি বাইট সংরক্ষণের জন্য Sp3000 ধন্যবাদ।

কিছু প্রোগ্রামের মধ্যে একটি ছাপানো অক্ষর থাকে। বিশেষত, প্রত্যেককে (0x01) নিয়ন্ত্রণের অক্ষর \x01দিয়ে প্রতিস্থাপন করা উচিত <SOH>:

0000
?
#>.
0001
,-?,-?>?\x01
#}>.
0010
,-?,?>?\x01
#}>.
0011
,?\x01+?
#>.
0100
,?,-?>?\x01
#}>.
0101
,,?\x01+?
#>.
0110
,?>},?>?_\x01
#}+{>?_}>.
0111
,\x01?,?>?
#{>.
1000
,?,?>?\x01
#}>.
1001
,-?>},?>?_\x01
#}+{>>?_}>.
1010
,,-?\x01+?
#>.
1011
,\x01?,-?>?
#{>.
1100
,-?\x01+?
#>.
1101
,\x01-?,?>?
#{>.
1110
,\x01-?,-?>?
#{>.
1111
?
#>+.

ইনপুট এবং আউটপুট বাইট মান ব্যবহার করে , সুতরাং ইনপুট দুটি 0x00 বা 0x01 বাইট (বিভাজক ব্যতীত) হওয়া উচিত এবং আউটপুট এমন একটি বাইট হবে। এটি বি ও সি এর জন্য সত্যবাদিতা / মিথ্যাচারের সবচেয়ে বোধগম্য সংজ্ঞাও কারণ একমাত্র নিয়ন্ত্রণ প্রবাহ কমান্ড? শূন্যকে মিথ্যাবাদী এবং সমস্ত কিছুর সত্যবাদী হিসাবে বিবেচনা করে।

ব্যাখ্যা

প্রথমে একটি দ্রুত বি অ্যান্ড সি প্রাইমার:

  • প্রতিটি প্রোগ্রামে দুটি ব্রেইনফাক-এর মতো দৃষ্টান্ত থাকে যা প্রতিটি নিজস্ব লাইনে লেখা। আমরা প্রথমটিকে ব্রায়ান এবং দ্বিতীয়টিকে চক বলি । ব্রায়ান থেকে ফাঁসি কার্যকর হয়।
  • প্রতিটি প্রোগ্রামের টেপ হ'ল অন্যান্য প্রোগ্রামের উত্স কোড এবং প্রতিটি প্রোগ্রামের নির্দেশ পয়েন্টারটি অন্য প্রোগ্রামের টেপ শিরোনাম।
  • কেবল ব্রায়ান ,(ইনপুট বাইট) কমান্ড ব্যবহার করতে পারে এবং কেবল চক .(আউটপুট বাইট) কমান্ড ব্যবহার করতে পারে ।
  • ব্রেনফাকের []লুপের অস্তিত্ব নেই। পরিবর্তে, আপনার একমাত্র নিয়ন্ত্রণ প্রবাহ হ'ল ?যদি টেপ মাথার নীচে বর্তমান মানটি ননজারো হয় তবে অন্য উদাহরণে নিয়ন্ত্রণ স্যুইচ করে।
  • এর পাশাপাশি >এবং <রয়েছে {এবং }যা মূলত ব্রেইনফাক স্নিপেটের সমতুল্য [<]এবং [>], তারা টেপ মাথাটি সেই দিকের পরবর্তী শূন্য অবস্থানে নিয়ে যায়। মূল পার্থক্যটি হ'ল {টেপটির বাম প্রান্তে এটির মূল্য নির্বিশেষে বন্ধ করা যায়।
  • সুবিধার জন্য, _সোর্স কোডের যে কোনও গুলি নাল-বাইট দ্বারা প্রতিস্থাপিত হয় (যেহেতু এটি ধরা {এবং ধরার জন্য নন্ট্রাইভিয়াল প্রোগ্রামগুলিতে খুব দরকারী })।

নোট করুন যে সমস্ত প্রোগ্রামে, চকের টেপ একটি দিয়ে শুরু হয় #। এটি সত্যিই কিছু হতে পারে। ?এ জাতীয় কাজ করে যে টেপ হেড এক্সিকিউশন শুরুর আগে একটি কক্ষ সরিয়ে নিয়ে যায় (যাতে এটি বৈধ কমান্ড হওয়ার কারণে শর্তটি নিজেই কার্যকর করা হয় না)। সুতরাং আমরা কখনই কোডের জন্য চকের প্রথম সেলটি ব্যবহার করতে পারি না।

এখানে পাঁচটি শ্রেণীর প্রোগ্রাম রয়েছে, যা আমি পরে বিস্তারিতভাবে ব্যাখ্যা করব। আপাতত আমি ক্রমবর্ধমান জটিলতার জন্য তাদের এখানে তালিকাবদ্ধ করছি।

0000, 1111: ক্রমাগত ফাংশন

?
#>.
?
#>+.

এগুলি খুব সাধারণ। আমরা নিঃশর্ত চক এ স্যুইচ করি। চক টেপ মাথাটি অব্যবহৃত ঘরে ডানদিকে সরায় এবং হয় এটি সরাসরি প্রিন্ট করে, বা প্রিন্ট করার জন্য প্রথমে বৃদ্ধি করে1

0011, 0101, 1010, 1100: কার্যাবলী শুধুমাত্র একটি ইনপুট উপর নির্ভর করে

,?\x01+?
#>.
,,?\x01+?
#>.
,,-?\x01+?
#>.
,-?\x01+?
#>.

আমরা দিয়ে শুরু কিনা উপর নির্ভর করে ,বা ,,আমরা কাজ করছি Aবা B। আসুন প্রথম উদাহরণটি 0011(যেমন A) দেখুন। মানটি পড়ার পরে, আমরা ?সেই মানটির শর্তসাপেক্ষ হিসাবে ব্যবহার করি । যদি A = 1, তবে এটি চকের দিকে চলে যায়, যিনি টেপ মাথাটি ডানদিকে নিয়ে যান এবং আক্ষরিক 1এমবেডড-বাইট প্রিন্ট করেন । অন্যথায়, নিয়ন্ত্রণ ব্রায়ানের উপর থেকে যায়। এখানে, 1-বাইটটি কোনও অপ-অপশন। তারপরে আমরা ইনপুটটি ভালভাবে বৃদ্ধি +করব এটি শূন্য নয় তা নিশ্চিত করতে এবং তারপরে চকের সাথে স্যুইচ করুন ?। এবার, >একটি অব্যবহৃত কক্ষে ডানে সরানো হবে যা পরে মুদ্রিত হবে 0

মানগুলির একটির অবহেলা করার জন্য আমরা এটির সাথে কেবল এটি হ্রাস করি -। এটি 1রূপান্তরিত হয় 0এবং 0রূপান্তরিত হয় -1, যা শূন্য নয় এবং তাই যথাসম্ভব সত্যই ?

0001, 0010, 0100, 1000: এক truthy ফলাফল নিয়ে বাইনারি ফাংশন

,-?,-?>?\x01
#}>.
,-?,?>?\x01
#}>.
,?,-?>?\x01
#}>.
,?,?>?\x01
#}>.

দুটি ইনপুট দিয়ে কাজ করার জন্য এটি পূর্বের ধারণার একটি এক্সটেনশন। আসুন 1000(এনওআর) এর উদাহরণটি দেখুন । আমরা (সম্ভাব্য) উভয় ইনপুট দিয়ে পড়ি ,?। এর মধ্যে যদি হয় 1তবে ?চকের দিকে স্যুইচ করে। তিনি }(ব্রায়ানের কোডের পরে খালি ঘরে) দিয়ে টেপের মাথাটি প্রান্তে সরান, >( অন্যটি শূন্য) দিয়ে অন্য একটি ঘর সরিয়ে নিয়ে মুদ্রণ করেন .

তবে, উভয় ইনপুট যদি শূন্য হয়, তবে নিয়ন্ত্রণটি এখনও ব্রায়ানের কাছে রয়েছে। >তারপরে টেপ মাথাটি }এমনভাবে সরানো হয় যখন আমরা চকের সাথে স্যুইচ করিলে এই আদেশটি কার্যকর হয় না? । এখন চকের >.যা কিছু করা হয় তা কেবলমাত্র 1সেল-এর দিকে চলে যায় এবং এটি মুদ্রণ করে।

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

0111, 1011, 1101, 1110: সঙ্গে তিন truthy ফলাফল বাইনারি ফাংশন

,\x01?,?>?
#{>.
,\x01?,-?>?
#{>.
,\x01-?,?>?
#{>.
,\x01-?,-?>?
#{>.

অর্ডার অস্বীকার করার পূর্ববর্তী ধারণা একটি অপ্রধান পরিমার্জন ফলাফলের (অর্থাত মুদ্রণ 0যখন আমরা ও ব্রায়ান সব মাধ্যমে গৃহীত থাকেন 1অন্যথায়)। 0111উদাহরণস্বরূপ (ওআর) তাকান । মনে রাখবেন যে 1এমবেডড-বাইটটি কোনও অপ-অপশন, তাই এটি এখনও শুরু হয় ,?,?। উভয়ই যদি ইনপুট হয় তবে 1আমরা চকের দিকে স্যুইচ করি, যিনি টেপের মাথাটি আবার শুরুতে সরিয়ে নিয়ে যান {>.টেপ মাথাটি যে- 1বেটে চলে যায় এবং মুদ্রণ করে।

যদি উভয় ইনপুট শূন্য হয় তবে আমরা ব্রায়ানের সাথেই থাকি, টেপ মাথাটি {এড়িয়ে চলুন এবং তারপরে চকের দিকে স্যুইচ করুন। তিনি যখন >.এই সময় কার্যকর করেন তিনি ব্রায়ানের কোডের পরে খালি ঘরে প্রবেশ করেন এবং প্রিন্ট করেন 0

আবার, আমরা সহজেই একটি বা উভয় ইনপুট উপেক্ষা করে অন্যান্য ক্রিয়াগুলি অর্জন করি।

0110, 1001: দুটি সত্য ফলাফলের সাথে বাইনারি ফাংশন

,?>},?>?_\x01
#}+{>?_}>.
,-?>},?>?_\x01
#}+{>>?_}>.

এটি একটি সামান্য কৌশলযুক্ত। পূর্ববর্তী ফাংশনগুলি যুক্তিসঙ্গতভাবে সহজ ছিল কারণ এগুলি সংক্ষিপ্ত-প্রচারিত হতে পারে - প্রথম ইনপুটটির মান আউটপুট সিদ্ধান্ত নিতে পারে, এবং যদি এটি না হয় তবে আমরা অন্য ইনপুটটির দিকে তাকাব। এই দুটি ফাংশনের জন্য, আমাদের সর্বদা উভয় ইনপুটগুলি তাকাতে হবে।

মৌলিক ধারণা কিনা দ্বিতীয় ইনপুট মধ্যে নির্বাচন সিদ্ধান্ত নিতে প্রথম ইনপুট ব্যবহার হয় 0এবং 1বা মধ্যবর্তী 1এবং 00110উদাহরণস্বরূপ (XOR) নেওয়া যাক :

বিবেচনা করুন A = 0। এই ক্ষেত্রে আমরা Bযেমন আউটপুট করতে চান । ,পড়ে A, ?কিছুই করে না >পরবর্তী (ননজারো) ঘরে সরে যায় যাতে চক অন }করে আমাদের কাছে নিয়ে আসে _। এখানে, আমরা পড়েছি Bসঙ্গে ,এবং ব্যবহার ?আবার। তাহলে Bছিল 0পাশাপাশি, আমরা করছি এখনও ব্রায়ান উপর। চকের উপর >এড়িয়ে যায় }এবং ?স্যুইচ করে যাতে ব্রায়ানের উত্স কোডটিতে এম্বেড থাকা >.প্রিন্ট করে 0। তাহলে Bছিল 1অন্য দিকে, চাক চালানো নেই }যা চলে আসে _ইতিমধ্যে ব্রায়ান এর কোড, তাই >.তারপর ছাপে 1-byte পরিবর্তে।

যদি A = 1, তবে আমরা এখনই চকের সাথে স্যুইচ করি, কে কার্যকর করবে }+{>?। এটি যা করে তা _ব্রায়ানের সোর্স কোড-এ সরানো হয় , এটিকে এটিকে 1পাশাপাশি রূপান্তরিত করে +, আবার শুরুতে ফিরে যায় {এবং ব্রায়ানকে তার কাছে নিয়ন্ত্রণ হস্তান্তর ?করার >আগে একটি কক্ষে ডান দিকে নিয়ে যায়। এবার, ব্রায়ান পড়ার পরে B, যদি B = 0, এবং চক >.ব্রায়ানের পাশের ঘরটি ব্যবহার করে ?তার 1পরিবর্তে হবে 0। এছাড়াও, যখন B = 1, চকের }ফাঁক হিসাবে কী ব্যবহৃত হবে ঠিক তখনই এড়িয়ে যায় এবং টেপের শেষের দিকে চলে যায়, যাতে >.পরিবর্তে শূন্য প্রিন্ট হয়। এইভাবে আমরা মুদ্রণ করছি not B

সমতুল্যতা বাস্তবায়নের জন্য, আমরা Aএটি শর্ত হিসাবে ব্যবহারের আগে কেবল তুচ্ছ করেছিলাম । নোট করুন যে এর কারণে আমাদের আবারও শুরুতে ফিরে যাওয়ার সময় >তা এড়াতে চকের সাথে আরও একটি যোগ করা দরকার -


4

ClojureScript, 88 84 76 74 বাইট

nilএবং falseমিথ্যা, অন্য সমস্ত মান সত্যবাদী। বুলিয়ানগণ পাটিগণিত এবং অসমতার জন্য 0/1 তে জোর করে। ফাংশনগুলি আর্গুমেন্টের ভুল নম্বর নিতে পারে।

0000   nil?            ; previously: (fn[]nil)
0001   and
0010   <
0011   true?           ; previously: (fn[x]x)
0100   >
0101   (fn[x y]y)
0110   not=
0111   or
1000   #(= 0(+ % %2))
1001   =
1010   #(not %2)
1011   <=
1100   not
1101   >=
1110   #(= 0(* % %2))
1111   /               ; previously: (fn[]4), inc

0মিথ্যা নয় ?
ফাঁস নুন

2
ক্লোজার স্ক্রিপ্টে নেই।
ম্যাটপুটনাম

@ লেকিউন বেশিরভাগ এলআইএসপি বা কার্যকরী প্রোগ্রামিং ভাষায় নেই, যা ক্লোজার অবশ্যই স্পষ্টভাবে রয়েছে
বিড়াল

বেশিরভাগ কার্যকরী প্রোগ্রামিং ভাষায় @ ক্যাট হ্যাঁ ! পাইথন উদাহরণস্বরূপ, এটি মূল্যায়ন not not(0)করে Falseযা মিথ্যা মান।
এরিক আউটগল্ফার

3
@ ইগি এর ... পাইথন খাঁটিভাবেই কার্যকরী নয় বা আমি যে ধরনের কার্যকরী ভাষা নিয়ে কথা বলছি তা নয়। পাইথন বেশিরভাগ ক্ষেত্রেই প্রয়োজনীয় এবং কিছু ছোট (দুর্বলভাবে কার্যকর করা) কার্যকরী দিকগুলি সহ। Erlang, Haskell, (আমার ধারণা), কমন পাতার মর্মর, Clojure, কোলাহল, প্রকল্প, ফ্যাক্টর স্ট্যান্ডার্ড এমএল, উদ্দেশ্য CAML, ইত্যাদি 0 শুধু আরেকটি মান এবং truthy ফলে, এবং মিথ্যা (জন্য প্রতীক #f, f, false, ইত্যাদি) হয় মিথ্যা। অন্যান্য সমস্ত মান বেশিরভাগ কার্যকরী ভাষায় সত্য।
বিড়াল

4

ব্রেইনফাক , 184 178 174 বাইট

ইনপুট / আউটপুট ইউ +0000 এবং ইউ + 0001 ব্যবহার করে।

0000 .
0001 ,[,[->+<]]>.
0010 ,[,-[+>+<]]>.
0011 ,.
0100 ,-[,[->+<]]>.
0101 ,,.
0110 ,>,[-<->]<[>>+<]>.
0111 ,-[,-[+>-<]]>+.
1000 ,-[,-[+>+<]]>.
1001 ,>,[-<->]<[>>-<]>+.
1010 ,,-[+>+<]>.
1011 ,-[,[->-<]]>+.
1100 ,-[+>+<]>.
1101 ,[,-[+>-<]]>+.
1110 ,[,[->-<]]>+.
1111 +.

আপনার শর্তাধীন দ্বিতীয় ইনপুটটি ব্যয়বহুল দেখাচ্ছে। উদাহরণস্বরূপ 0001আপনি ঠিক করতে পারেন নি ,[,>]<.(এমন একজন দোভাষী দিয়েছেন যা আপনাকে প্রারম্ভিক কক্ষের বামে যেতে দেয়)?
মার্টিন ইন্ডার

@ মার্টিনএন্ডার আমি অনুভব করেছি যে আমি এখানে ডেনিসের উত্তরটি অনুলিপি করব না।
লিকি নুন

4

ব্রেন-ফ্লাক , 418 , 316 বাইট tes

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

প্রোগ্রামের শুরুতে ইনপুটগুলি স্ট্যাকের শীর্ষ দুটি নম্বর হতে হবে (সত্যের জন্য মিথ্যা একের জন্য শূন্য) এবং আউটপুটটি প্রোগ্রামের শেষে স্ট্যাকের শীর্ষে থাকুক (সত্যের জন্য অন্যথায় মিথ্যা শূন্য)।

মিথ্যা, 4 বাইট ( লিকি নুনের সৌজন্যে )

(<>)

এবং, 36 বাইট

(({}{}[(())()])){{}{}(((<{}>)))}{}{}

এ এবং বি নয়, 40 বাইট

((({}){}{}[(())()])){{}{}(((<{}>)))}{}{}

এ, 6 বাইট

({}<>)

এ এবং বি নয়, 38 বাইট

((({}){}{}[(())])){{}{}(((<{}>)))}{}{}

বি, 2 বাইট

{}

xor, 34 বাইট

(({}{}[(())])){{}{}(((<{}>)))}{}{}

বা, 6 বাইট

({}{})

না, 34 বাইট

(({}{}<(())>)){{}{}(((<{}>)))}{}{}

xnor, 10 বাইট

({}{}[()])

বি, 34 বাইট না

{}(({}<(())>)){{}{}(((<{}>)))}{}{}

বি দ্বারা A, 14 বাইট বোঝায়

(({}){}{}[()])

এ, 34 বাইট না

(({}<{}(())>)){{}{}(((<{}>)))}{}{}

একটি বি, 16 বাইট বোঝায়

(({}){}{}[()()])

নান্দ, 12 বাইট

({}{}[()()])

সত্য, 6 বাইট

<>(())

ব্যাখ্যা

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

প্রথমত গেটগুলি একই মানের তিনটি (যেমন 2, 3, 5, 8, 9, 12, 14 এবং 15) ফেরত দেয়। এগুলি একই প্যাটার্ন অনুসরণ করে। প্রথমে আপনি ইনপুটটিকে দুটি বিট সংখ্যায় দ্বিগুণ স্থান এবং বি হিসাবে দুটিতে রূপান্তর করেন। এই স্নিপেট দিয়ে এটি করা হয় (({}){}{})। তারপরে আপনি যে বিট ইনপুটকে আলাদা করতে চান তার মানটি বিয়োগ করুন ({}[value])। (আসল কোডে বাইটস সংরক্ষণে এক পদক্ষেপে বিয়োগ এবং রূপান্তর সম্পন্ন করা হয়)। এই না সঙ্গে মিলিত হতে পারে যদি প্রয়োজন: (({}<(())>)){{}{}(((<{}>)))}{}{}

পরবর্তী: এবং, বা, বা, xor, এবং xnor। এগুলি উপরেরগুলির সাথে একইভাবে কাজ করে। প্রকৃতপক্ষে এগুলির কয়েকটি উপরে অন্তর্ভুক্ত রয়েছে তবে এই পদ্ধতিটি সংক্ষিপ্ত। আমি এখানে যে কৌশলটি ব্যবহার করেছি তা হ'ল এগুলি প্রতিটি এ বি এর যোগফলের সাথে মিলে যায় eg প্রথমে আপনি AB যুক্ত করুন এবং প্রাসঙ্গিক পরিমাণটি বিয়োগ করুন। হিসাবে প্রকাশিত ({}{}[0,1,2 or 3])। তারপরে প্রয়োজনে একটি পরিচালনা করুন

পরবর্তী: এ, বি, এ নয় এবং বি নয় এগুলি বেশ স্ব স্ব ব্যাখ্যামূলক। আমরা অপ্রয়োজনীয় মান সরিয়ে শুরু করি এবং তারপরে আমরা হয় অবহেলা করি বা শেষ করি।

শেষ পর্যন্ত দুটি সিলেটলেট: সত্য এবং মিথ্যা। এগুলির জন্য আমরা অফ স্ট্যাকের সঠিক মানটি চাপি। <>Nilad আয় শূন্য তাই আমরা শূন্য মান হিসাবে সুইচ ব্যবহার করে দুই বাইট সংরক্ষণ করতে পারবেন।

সেখান থেকে সর্বাধিক দক্ষ সমাধান নয় (সম্ভবত মস্তিষ্ক-ফ্লাকের মধ্যে সবচেয়ে দক্ষ), তবে এগুলি লিখতে আমার বেশ ভাল মজা হয়েছে এবং এগুলি সংক্ষিপ্ত করার চেষ্টা করার জন্য আমি আপনাকে অনুরোধ করছি।


(<>)জন্য যথেষ্ট false; এছাড়াও, (<{}{}>)8 বাইট হয়
লিকি নুন

বাহ আমার চ্যালেঞ্জটির আরও কঠোর সংজ্ঞা ছিল। ধন্যবাদ. আমি এটি ব্যাপকভাবে হ্রাস করব
গম উইজার্ড

আপনি কি বোঝাতে চেয়েছেন?
ফাঁস নুন

আমি ভেবেছিলাম যে আমাকে বিদ্যমান ইনপুটগুলি সরিয়ে ফেলতে হবে এবং ফলাফলটিকে তার জায়গায় রাখতে হবে। (<>)ইনপুট ছেড়ে এবং অন্য স্ট্যাকের শূন্য রাখবে।
গম উইজার্ড

1
অন্তর্নিহিত শূন্যের কারণে <>যথেষ্ট নয় false? এছাড়াও, আমি মনে করি aখালি প্রোগ্রাম হতে পারে। trueহতে পারে <>[][](বাইট সংরক্ষণ করে না, তবে দুর্দান্ত দেখাচ্ছে: পি)।
ক্যালকুলেটরফলাইন

4

প্রগ্রেফকে , 18.5 17.5 বাইট

प्रोगাফকের নির্দেশাবলী যেমন নিবলগুলিতে নির্দিষ্ট করা আছে, নীচের কোডটি হেক্সাডেসিমালে, প্রতি লাইনটিতে একটি লজিক গেট এবং বাইটগুলির মধ্যে ফাঁকা স্থান সহ দেওয়া হবে।

3
E1
DE 2D
<empty>
DE 1
1
E3
E2
E2 D
E3 D
1D
DE 2
D
DE 1D
E1 D
4

ব্যাখ্যা

प्रोगাফকে একটি টেপ-ভিত্তিক ইসল্যাং (ব্রেইনফাকের অনুরূপ) যেখানে প্রতিটি ঘর কিছুটা থাকে এবং নিবল (4 বাইট) হিসাবে নির্দেশনা দেওয়া হয়। নির্দেশিকা নির্দেশক দ্বারা নির্দেশিত কক্ষে নির্দেশাবলী পরিচালনা করে। প্রথম এবং দ্বিতীয় কোষগুলিতে ইনপুট দেওয়া হয় ( যথাক্রমে প্রথম এবং দ্বিতীয় কোষ সহ Aএবং Bথাকে), এবং নির্দেশ পয়েন্টারটি প্রথম কক্ষে শুরু হয়। আউটপুট প্রথম কক্ষে সংরক্ষণ করা হয়।

ব্যবহৃত প্রতিটি নির্দেশ নীচে ব্যাখ্যা করা হয়।

1   Increment the instruction pointer.
2   Decrement the instruction pointer.
3   Set the current bit to 0.
4   Set the current bit to 1.
D   Perform a NOT on the current bit.
E   The next instruction is an extended instruction.

Extended instructions:
1   Set the current bit to the current bit AND the next bit.
2   Set the current bit to the current bit OR the next bit.
3   Set the current bit to the current bit XOR the next bit.
6   Swap the current bit and the next bit.

@ লিকিউনকে একটি বাইট সংরক্ষণ করে!


4

আসলে, 24 বাইট

এই প্রোগ্রামগুলি ইনপুট নেয় A\nB( \nএকটি নতুন লাইনের প্রতিনিধিত্ব করে), যা নীচে এ সহ স্ট্যাকের উপরে বি ছেড়ে দেয়। Falseদ্বারা প্রতিনিধিত্ব করা হয় 0, এবং Trueকোনও ধনাত্মক পূর্ণসংখ্যার দ্বারা প্রতিনিধিত্ব করা হয়।

é0  (false: clear stack, push 0)
*   (and: multiply)
<   (A and not B: less-than)
X   (A: discard B)
>   (B and not A: greater-than)
@X  (B: discard A)
^   (A xor B: xor)
|   (A or B: or)
|Y  (A nor B: or, boolean negate)
=   (A xnor B: equals)
@XY (not B: discard A, boolean negate B)
≤   (if B then A: less-than-or-equal)
XY  (not A: discard B, boolean negate)
≥   (if A then B: greater-than-or-equal)
*Y  (A nand B: multiply, boolean negate)
é1  (true: clear stack, push 1)

লিকি নুনকে 3 বাইটের জন্য ধন্যবাদ

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