ডুডিয়াডিক টাইলগুলি বিভিন্ন ধরণের স্কোয়ার ফাংশন ব্লক যা দুটি ইনপুট নেয়, একটি তাদের উপরের দিক থেকে এবং একটি বাম দিক থেকে এবং দুটি আউটপুট থাকে, একটি তার ডানদিকে এবং একটি নীচের দিকে থাকে। তাদের প্রতিটি আউটপুট তাদের উভয় ইনপুটগুলির একটি পৃথক ফাংশন।
উদাহরণস্বরূপ, যদি #
একটি জেনেরিক টালি প্রতিনিধিত্ব করে, ডান আউটপুট R
একটি ফাংশন f
ইনপুট T
এবং L
, এবং নীচে আউটপুট B
অন্য ফাংশন g
এর T
এবং L
:
T
L#R R = f(T, L)
B B = g(T, L)
(দুটি ফাংশন হওয়ায় টাইলসটিকে "দ্বৈত" এবং উভয় ফাংশন থেকেই "ডায়াডিক" বলা হয় দুটি যুক্তি রয়েছে বলে ।)
টাইলসটি তখন গ্রিডে এক সাথে রচনা করা যায়, এক টাইলের আউটপুটগুলি প্রতিবেশীদের সরাসরি টাইলগুলির ইনপুটগুলিতে যায়। এখানে উদাহরণস্বরূপ, বামের ডান আউটপুট ডানদিকে বাম #
ইনপুটটিতে যায় #
:
AB D = f(f(A, C), B)
C##D E = g(A, C)
EF F = g(f(A, C), B)
আপনি কল্পনা করতে পারেন যে duodyadic টাইলস একটি সেট দেওয়া, নির্দিষ্ট কার্যকারিতা, জটিল (এবং সম্ভাব্য দরকারী) রচনা সঙ্গে প্রতিটি তৈরি করা যেতে পারে।
এই চ্যালেঞ্জে আমরা কেবলমাত্র দশটি লজিক ভিত্তিক ডুডিয়াডিক টাইলের চিরাচরিত সেট নিয়ে উদ্বিগ্ন থাকব, যেখানে সমস্ত ইনপুট এবং আউটপুটগুলি একক বিট বাইনারি সংখ্যা (শূন্য বা একক) হয়। প্রতিটি ধরণের টাইল বোঝাতে আমরা একটি পৃথক ASCII অক্ষর ব্যবহার করব।
টাইল অক্ষর এবং তাদের ইনপুট-আউটপুট সম্পর্কগুলি নিম্নরূপ:
( T
শীর্ষের ইনপুট L
জন্য, বাম ইনপুট R
জন্য, ডান আউটপুট জন্য,B
নীচে আউটপুট।)
- শূন্য:
0
বা(স্থান)
R = 0
,B = 0
- এক:
1
→R = 1
,B = 1
- ক্রস:
+
→R = L
,B = T
- আয়না:
\
→R = T
,B = L
- কেবল শীর্ষ:
U
→R = T
,B = T
- কেবলমাত্র বাম:
)
→R = L
,B = L
- নয়:
!
→R = not L
,B = not T
- এবং:
&
→R = L and T
,B = L and T
- বা:
|
→R = L or T
,B = L or T
- জোর:
^
→R = L xor T
,B = L xor T
চ্যালেঞ্জ
এমন একটি প্রোগ্রাম বা ফাংশন লিখুন 0 1+\U)!&|^
যা দশটি লজিক ভিত্তিক ডুডিয়াডিক টাইলস ব্যবহার করে তৈরি করা "সার্কিট" উপস্থাপন করে এমন অক্ষরগুলির একটি আয়তক্ষেত্রাকার গ্রিড গ্রহণ করে । এছাড়াও আপনি দুটি স্ট্রিং গ্রহণ করা প্রয়োজন 0
's এবং 1
এর; একটি হ'ল বাম ইনপুট কলাম এবং অন্যটি শীর্ষ ইনপুট সারি হবে। আপনার প্রোগ্রাম / ফাংশনটি নীচের আউটপুট সারি এবং ডান আউটপুট কলামটি ( 0
'এর এবং এর মধ্যেও 1
) মুদ্রণ / ফিরিয়ে আনতে হবে ।
উদাহরণস্বরূপ, এই গ্রিডে
+++
+++
সমস্ত ইনপুট সরাসরি গ্রিড জুড়ে আউটপুটগুলিতে প্রবাহিত হয়
ABC
D+++D
E+++E
ABC
সুতরাং 010
/ এর একটি ইনপুট 01
আউটপুট 010
/ হবে 01
:
010
0+++0
1+++1
010
আপনার প্রোগ্রাম সঠিক আউটপুট হবে [bottom output row]\n[right output column]
বা [bottom output row]/[right output column]
:
010
01
অথবা
010/01
যদি আপনি কোনও ফাংশন লিখে থাকেন তবে আপনি দুটি স্ট্রিং একটি টিপল বা তালিকায় (বা এখনও এগুলি মুদ্রণ করতে পারেন) ফেরত দিতে পারেন।
বিস্তারিত
- স্ট্রিং হিসাবে যেকোন যুক্তিসঙ্গত উপায়ে তিনটি ইনপুট নিন (সাধারণত অর্ডার গ্রিডে, শীর্ষ সারিতে, বাম কলামে): কমান্ড লাইন, পাঠ্য ফাইল, এসডিটিন, ফাংশন আর্গ।
- আপনি ধরে নিতে পারেন ইনপুট সারি এবং কলামের দৈর্ঘ্য গ্রিডের মাত্রাগুলির সাথে মিলবে এবং কেবলমাত্র
0
'গুলি এবং1
' গুলি থাকবে। - আপনার গ্রিডে অবশ্যই যথাযথ অক্ষর ব্যবহার করা উচিত (
0 1+\U)!&|^
)। এটি মনে রাখবেন0
এবংএকই জিনিসটি বোঝান।
পরীক্ষার মামলা
(I / O হিসাবে top
/ left
→ bottom
/ right
। পড়ুন)
নন্দ:
&!
00
/ 0
→ 01
/ 1
00
/ 1
→ 01
/ 1
10
/ 0
→ 01
/ 1
10
/ 1
→ 11
/0
সমস্তগুলি:
1111
1\+\
1+\+
1\+\
কোন ইনপুট ফলে উচিত 1111
/ 1111
।
নন্দ থেকে জোর: (স্থানের স্থানের কলামটি নোট করুন)
\)+\
U&!&
+! !
\&!&
!
00000
/ 00000
→ 00000
/ 00000
00000
/ 10000
→ 00010
/ 00000
10000
/ 00000
→ 00010
/ 00000
10000
/ 10000
→ 00000
/00000
জিগ জাগ:
+++\00000000
000\!!!!\000
00000000\+++
বাম ইনপুটটির প্রথম বিটটি ডান আউটপুটের শেষ বিট হয়ে যায়। আর সব কিছু0
।
000000000000
/ 000
→ 000000000000
/ 000
000000000000
/ 100
→ 000000000000
/001
প্রসারণ:
)))
UUU
U+U
U+U
UUU
বাম ইনপুটটির প্রথম বিট সমস্ত আউটপুটগুলিতে যায়।
000
/ 00000
→ 000
/ 00000
000
/ 10000
→ 111
/11111
সমস্ত 1 × 1 গ্রিড পরীক্ষার কেসগুলির একটি পেস্টবিন এখানে।
স্কোরিং
বাইটস মধ্যে সংক্ষিপ্ততম জমা জয়।
বোনাস: আপনি কোন দুর্দান্ত "সার্কিট" তৈরি করতে পারেন?
পিএস গুগলিংকে "ডুডিয়াডিক টাইলস" বিরক্ত করবেন না। আমি গতকাল এগুলি তৈরি করেছি; ডি
আপনি যদি এই ধারণাটিকে একটি পূর্ণাঙ্গ প্রোগ্রামিং ভাষায় প্রসারিত করতে চান তবে এই চ্যাটরুমে আসুন ।