এক্সওআর সমাধানের জন্য কিছু প্রয়োজনীয় অনুপ্রেরণার জন্য 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
: না
) \
! # ?
@ {
এই অনুসন্ধানে এটি আমার প্রিয় প্রোগ্রাম হতে পারে। দুর্দান্ত জিনিসটি হ'ল এই বাস্তবায়নটি nor
5 টি পর্যন্ত ইনপুটগুলির জন্য কাজ করে। এটির ব্যাখ্যা দেওয়ার জন্য আমাকে মেমরির মডেলটির বিশদটি পেতে হবে। দ্রুত রিফ্রেশার হিসাবে, হেক্সাগনির মেমরির মডেলটি একটি পৃথক ষড়ভুজ গ্রিড, যেখানে প্রতিটি প্রান্তটি একটি পূর্ণসংখ্যার মান (প্রাথমিকভাবে সমস্ত শূন্য) ধারণ করে। এখানে একটি মেমরি পয়েন্টার (এমপি) রয়েছে যা প্রান্তটি এবং একটি প্রান্তটি নির্দেশ করে (যেমন বর্তমান ধারার সামনে এবং পিছনে দুটি প্রতিবেশী প্রান্ত রয়েছে, অর্থপূর্ণ বাম এবং ডান প্রতিবেশী রয়েছে)। আমরা যে প্রান্তগুলি ব্যবহার করব তার একটি ডায়াগ্রাম এখানে দেওয়া হয়েছে, এমপিটি লাল হিসাবে দেখানো শুরু করা সহ:
উভয় ইনপুটগুলি সেই ক্ষেত্রে বিবেচনা করা যাক 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 ।