উত্তর:
যেহেতু এটি 05AB1E এর গিটহাব পৃষ্ঠাগুলিতে উইকির অংশ ছিল না (আমার মনে হয় এটি হওয়া উচিত), আমি এখন এটি এখানে যুক্ত করব যে আমি নিজেই এটি আরও ভাল করে বুঝতে পারি।
05AB1E এর নীচে নিম্নলিখিত শব্দগুলি রয়েছে ex ডেক্সার অভিধান ফাইলটি এটির সমস্ত শব্দ ধারণ করে। তবে কীভাবে আমরা এই অভিধানে শব্দগুলি অ্যাক্সেস করব? শব্দটি "testing"
উদাহরণ হিসাবে নেওয়া যাক :
"testing"
অভিধান ফাইলের 1453 সারিতে পাওয়া যাবে। যেহেতু প্রথম দুটি লাইন শব্দ নয়, এবং আমাদের 0-সূচক শব্দটি প্রয়োজন,
তাই আমরা 3 টি বিয়োগ করি So সুতরাং, এখন আমাদের সূচক ( 1450
) রয়েছে, তবে কীভাবে এটি ব্যবহার করবেন?
আমরা খুলুন এবং সঙ্গে একটি সংকুচিত স্ট্রিং শুরু “
† । তারপরে আমরা info.txt ফাইলের দ্বিতীয় কলামটি দেখি । (তাই €
00 হয়; ‚
01 হয়; ইত্যাদি)
ক্ষেত্রে "testing"
এর মানে î
(14) এবং »
(50)।
সংক্ষিপ্ত স্ট্রিং এর জন্য "testing"
: “
এটি অনলাইনে চেষ্টা করে দেখুন। কোডের প্রায় সমস্ত 05AB1E টুকরাগুলির মতো, “
আপনি যদি স্ট্রিংটিতে অ্যাক্সেস না করেন তবে অনুকরণটি optionচ্ছিক , সুতরাং এই ক্ষেত্রে কাজ না করে ।
কিছু বিষয় লক্ষণীয়:
সমস্ত অক্ষর যাদের ইনফটেক্সট ফাইলটিতে কোনও সূচক নেই সেগুলি ব্যবহার করা যেতে পারে। এটি s
একবচনের শব্দের পরিবর্তে বহুবচন আউটপুট যুক্ত করতে বা ,.?!
উদাহরণস্বরূপ বিরামচিহ্ন ব্যবহার করার জন্য দরকারী ।
ÿ
(স্ট্রিং-ইন্টারপোলেশন) আপনি যখন স্ট্রিংয়ের মধ্যে স্ট্যাক থেকে মান সন্নিবেশ করতে চান তখনও ব্যবহার করা যেতে পারে।
দ্রষ্টব্য: প্রতিটি looseিলে .ালা চরিত্রের যে তথ্য.টেক্সট ফাইলটিতে কোনও সূচক নেই তার নীচে সংক্ষেপণের জন্য শব্দ হিসাবে গণনা করা হয়।
† বিভিন্ন ধরণের সংক্ষেপিত স্ট্রিং আপনি ব্যবহার করতে পারেন:
'
: একটি একক সংকুচিত শব্দটি যেমন নিন (কোনও অনুসরণের '
প্রয়োজন নেই) - 'î»
: "পরীক্ষা"„
: স্পেস ডিলিমিটার দিয়ে দুটি সংকুচিত শব্দ নেয় (কোনও অনুমানের „
প্রয়োজন নেই) - „î»î»
: "টেস্টিং টেস্টিং"…
: স্পেস ডিলিমিটার দিয়ে তিনটি সংকুচিত শব্দ নেয় (কোনও অনুমানের …
প্রয়োজন নেই) - …î»î»î»
: "টেস্টিং টেস্টিং টেস্টিং"“
: স্পেস ডিলিমিটার দিয়ে সংকুচিত স্ট্রিং নিন - “î»î»“
: "টেস্টিং টেস্টিং"’
: সংকুচিত স্ট্রিংটি অন্তর্ভুক্ত স্থান ছাড়াই যেমন নিন - ’î»î»’
: "টেস্টিং টেস্টিং"”
: স্পেস ডিলিমিটার সহ শিরোনাম-ক্ষেত্রে সংকুচিত স্ট্রিং নিন - ”î»î»”
: "টেস্টিং টেস্টিং"‘
: ‘î»î»‘
স্প্রেস ডিলিমিটার সহ কমপ্রেস স্ট্রিংকে পুরো বড় হাতের অক্ষরে নিয়ে যান - : "টেস্টিং টেস্টিং"শব্দের স্পেস-সীমাবদ্ধ ইনপুটটির উপর ভিত্তি করে সংকুচিত স্ট্রিংটি পেতে এখানে একটি কার্যকর প্রোগ্রাম:
'“? lAð«Ã#¸˜ vyU "€‚ƒ„…†‡ˆ‰Š‹ŒŽ•–—™š›œžŸ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîï" Dâ vy"“ÿ“".V XlQi y?1#] '“,
এই প্রোগ্রামটি করবে:
lAð«Ã#
) দ্বারা শব্দগুলি বিভক্ত করুন বা কেবলমাত্র একটি শব্দ শব্দের ইনপুট করা থাকলে তালিকায় শব্দগুলি গুটিয়ে রাখুন ( ¸˜
)vyU
)"€...ï"Dâvy
) থেকে প্রতিটি সংকুচিত শব্দের উপর একটি অভ্যন্তরীণ লুপ রয়েছে যা এটি 05AB1E প্রোগ্রাম হিসাবে চালানোর চেষ্টা করবে ( "“ÿ“".V
)XlQiy?1#
একটি ইনপুট সঙ্গে good bye world
আউটপুট তাই হবে “‚¿Þ¡‚ï“
। এটি অনলাইনে চেষ্টা করুন।
দ্রষ্টব্য: আপনাকে এখনও দেখতে হবে যে এই জেনারেটরের কাজ করার জন্য অভিধানে শব্দটি বিদ্যমান রয়েছে কিনা এবং এটি কোনও বিশেষ অক্ষর বা বহুবচন শব্দগুলিকে উপেক্ষা করবে। অভিধানে ঠিক একই শব্দগুলি পাওয়া যাবে words
এখানে একটি উদাহরণ যেখানে আমি …Ÿ™‚ï!
"হ্যালো ওয়ার্ল্ড!" স্ট্রিংয়ের জন্য ব্যবহার করি ! এবং ’‚¿Þ¡ ÿ ‚ï!’
"বিদায় ÿ বিশ্ব!" স্ট্রিংয়ের জন্য। স্পেস এবং বিস্ময়কর চিহ্নটি কীভাবে ব্যবহৃত হয় তা নোট করুন, কারণ তথ্য.টিএসটিএসএস ফাইলে তাদের সূচক নেই। এছাড়াও, এটি ÿ
"নিষ্ঠুর" cruelোকাতে ব্যবহার করে যা স্ট্যাকের শীর্ষে ছিল, যা দুর্ভাগ্যক্রমে অভিধানের অংশ ছিল না (তবে এখনও নীচের অংশে পদ্ধতিটি ব্যবহার করে সংকুচিত হয়েছিল)।
যদিও ওয়ার্ডস.এক্স ডিকশনারি ফাইলটি বেশ বড় (10,000 শব্দগুলি হুবহু হতে পারে), এমনটি হতে পারে যে আপনার এমন একটি শব্দ প্রয়োজন যা এটির অংশ নয়, বা একটি স্ট্রিং যা কেবল প্লেইন গিব্বারিশ। সুতরাং তাদের পাশাপাশি সংকোচনের একটি উপায় আছে?
অবশ্যই এটি ব্যবহার করে রয়েছে .•
যা একটি সংকুচিত বেস -২৫৫ বর্ণমালা ভিত্তিক স্ট্রিং। দ্রষ্টব্য: এই পদ্ধতিটি কেবল ছোট বর্ণমালা এবং স্পেসগুলির অক্ষরের জন্য ব্যবহার করা যেতে পারে।
একটি শব্দ / স্ট্রিংকে সংকুচিত বেস -255 বর্ণমালা ভিত্তিক স্ট্রিংয়ে রূপান্তর করতে এখানে একটি কার্যকর প্রোগ্রাম রয়েছে:
vAyk})> 27β 255B ".•ÿ•"
এই প্রোগ্রামটি উপরে যা করে তা হ'ল:
vAyk})>
: ইনপুটটির স্বতন্ত্র বর্ণগুলির 1-সূচিযুক্ত বর্ণমালা সূচকগুলি নিন, শূন্যস্থানগুলি 0 0 হয়ে উঠবে27β
: এই সূচকগুলিকে বেস 27 থেকে একক সংখ্যায় রূপান্তর করুন255B
: 05AB1E এর নিজস্ব কোড পৃষ্ঠা ব্যবহার করে এই সংখ্যাটি বেস -255 এ রূপান্তর করুন".•ÿ•"
: এই সংকুচিত স্ট্রিংয়ের আগে একটি অগ্রণী .•
এবং পিছনে স্থান দেয়•
এখানে একটি উদাহরণ উত্তর যেখানে @ কলডো.•zíΘ•
"হংস" শব্দটি সংক্ষেপে ব্যবহার করতে ব্যবহার করেছেন ।
ধরা যাক আমরা কোনও কিছুর জন্য খুব বড় সংখ্যা ব্যবহার করতে চাই, তবে এটি পাউ-গণনা দ্বারা সত্যই পুনরুদ্ধার করা যায় না। উদাহরণস্বরূপ, আসুন আমরা যাক 18238098189071058293
যে কারণেই বৃহত সংখ্যায় অ্যাক্সেস করতে চাই ।
এই ক্ষেত্রে আমরা •
বিন্যাসে সংখ্যার সংকোচনের জন্য নেতৃস্থানীয় এবং অনুসরণযোগ্য উভয়টি ব্যবহার করতে পারি [1-9][0-9]+
।
উপরের উদাহরণ নম্বর হয়ে যাবে •15Y₁Ò'Θpc•
। এটি অনলাইনে চেষ্টা করুন। আবার, সংকুচিত অভিধানের স্ট্রিংয়ের মতোই, অনুসরণটি optionচ্ছিকভাবে •
সরানো যেতে পারে ।
Allyচ্ছিকভাবে, যখন পূর্ণসংখ্যাটি যথেষ্ট ছোট হয় তাই কেবলমাত্র 2 টি সংক্ষেপিত অক্ষর ব্যবহার করতে হয়, আমরা Ž
পরিবর্তে ব্যবহার করতে পারি , এক্ষেত্রে এটি বন্ধ করার জন্য আমাদের একটি ট্রেইলিং বাইটের প্রয়োজন হবে না এবং 4 এর পরিবর্তে পূর্ণসংখ্যা 3 বাইটে সংকুচিত করা হয় For উদাহরণস্বরূপ, পূর্ণসংখ্যার 13562
ফলাফল হতে পারে •rl•
তবে এটি কেবল দুটি অক্ষর ব্যবহার করে, এটি Žrl
পরিবর্তে হতে পারে ।
এছাড়াও, পরিসরের নম্বরগুলি [101, 355]
2 বাইটে আরও সংক্ষিপ্ত করা যেতে পারে Ƶ
05AB1E এর কোডপেজ থেকে অতিরিক্ত অক্ষর ব্যবহার করে । উদাহরণস্বরূপ, Ƶ–
পূর্ণসংখ্যার জন্য ব্যবহার করা যেতে পারে 250
। এখানে সমস্ত উপলব্ধ সংখ্যার একটি ওভারভিউ। এই অক্ষরগুলি বেস -255 থেকে বেস -10 এ রূপান্তরিত হয় এবং তারপরে 101 যোগ করা হয় (যেহেতু পরিসরে সংখ্যাটি [0,100]
ইতিমধ্যে 1 বা 2 বাইট)।
কীভাবে এই হয় 15Y₁Ò'Θpc
এবং rl
কে সৃষ্টি করেছে? খুব সাধারণ, 05AB1E এর নিজস্ব কোডপেজ ব্যবহার করে নম্বরটি বেস -255 তে রূপান্তরিত হয়। সুতরাং আপনি নিম্নলিখিত প্রোগ্রাম ব্যবহার করতে পারেন সংকুচিত সংখ্যা, যার জন্য তখন ব্যবহার করবে পেতে Ƶ.
, Ž..
অথবা •...•
সংকুচিত পূর্ণসংখ্যা আকারের উপর নির্ভর করে:
101 355Ÿså i 101-255B"Ƶÿ" ë 255B Dg2Qi "Žÿ" ë "•ÿ•"
এখানে একটি উদাহরণ উত্তর যেখানে @Emigna ব্যবহার •3Èñ•
পূর্ণসংখ্যা জন্য 246060
।
কখনও কখনও আপনি একক সংখ্যার পরিবর্তে পূর্ণসংখ্যার একটি সম্পূর্ণ তালিকা সংকোচিত করতে চান। উদাহরণস্বরূপ, আসুন আমরা [5,93,17,83,4,44,32,19,4,45,83,90,0,14,3,17,17,81]
যেকোন কারণে তালিকাটি চাই বলে মনে করি । এই ক্ষেত্রে, আমরা পরিবর্তে নিম্নলিখিতটি ব্যবহার করতে পারি: •4βŸ{©£MG]q‡dZΘp•94в
এটি অনলাইনে চেষ্টা করুন।
এই সংক্ষিপ্ত নম্বর এবং বেসটি আমরা রূপান্তর করতে চাই উভয়ই তৈরি করতে এখানে একটি কার্যকর প্রোগ্রাম:
Z>© β 255B ®s"•ÿ•ÿв"
এই প্রোগ্রামটি উপরে যা করে তা হ'ল:
Z>
: ইনপুট-তালিকার সর্বাধিক নম্বর 1 পান ( ©
এবং এটি রেজিস্টারে সংরক্ষণ করুন)β
: ইনপুট তালিকাটি বেস max+1
থেকে একক সংখ্যায় রূপান্তর করুন255B
: এই একক সংখ্যাটি সংকুচিত করুন (যেমনটি আমরা উপরের বিভাগে করেছি)®s"•ÿ•ÿв"
: ফর্ম্যাটে ফলাফলটি ফিরে আসে: শীর্ষস্থানীয় •
, সংকুচিত সংখ্যা •
, সর্বোচ্চ + 1, পিছনেв
এখানে একটি উদাহরণের উত্তর যেখানে আমি •4Œ”dóŒfÝŸĀTUÕáOyÖOÀÁàu¼6¹₆Žr‡_›y³eß₂©ǝ²ƶ"SAÎAñ'¡û†Ø(•91в
তালিকাটি সংক্ষেপে ব্যবহার করি [85,30,29,39,28,37,33,88,31,40,34,89,35,41,32,90,36,38,42,43,44,60,45,61,46,62,47,63,48,64,49,65,81,50,66,51,67,52,68,53,69,86,54,70,87,55,71,56,72,82,57,73,79,80,58,74,59,75,76,77,78,83,84]
।
পিএস: এই উত্তরে •6j|eDEJÞó(ÍêΓλùÄÞKüzHÇ-ø`JδŠ₂+Öηôî®À8†6/ðÎ6ùøΓ°ÓĆ;ˆ©Ā•2ô
একটি সমান-বাইট (57) বিকল্প, যেহেতু সমস্ত সংখ্যার ঠিক দুটি অঙ্ক থাকে। কিছু ক্ষেত্রে (বিশেষত ছোট তালিকা) এটি একটি সংক্ষিপ্ত বিকল্প হতে পারে।
পূর্ণসংখ্যার সংক্ষেপণ বনাম পূর্ণসংখ্যা তালিকা সংক্ষেপণ:
এই দুটি দিয়ে এটি যে কোনও পথে যেতে পারে। কখনও কখনও একটি সঙ্কোচিত তালিকাটি সংক্ষিপ্ত, কখনও কখনও সংক্ষেপিত পূর্ণসংখ্যা, কখনও কখনও সম্পূর্ণ ভিন্ন বিকল্পটি সংক্ষিপ্ত হয়। সুতরাং উপরের জেনারেটরগুলিতে সম্পূর্ণরূপে নির্ভর করার পরিবর্তে সর্বদা আপনার নিজস্ব রায় এবং গল্ফিং দক্ষতাগুলি সম্ভবত গল্ফ জিনিসগুলিতে আরও ব্যবহার করুন। এখানে কয়েকটি উদাহরণ:
[44, 59]
( @ এমিগানার এই উত্তরে ব্যবহৃত ):
•A–•60в
7 বাইট (সংকুচিত পূর্ণসংখ্যার তালিকা জেনারেটর দ্বারা উত্পাদিত) হয়•H|•2ô
বা •H|•2ä
হার্ডকোডযুক্ত 44 59‚
সমস্ত 6 বাইটŽH|2ô
বা ŽH|2ä
উভয় 5 বাইট হয়„,;Ç
4 বাইট সহ সেরা বিকল্প হবে (অক্ষরের কোডপয়েন্ট ',' এবং ';')[2,4,6,0]
( @ এমিগানার এই উত্তরে ব্যবহৃত ):
•3ā•7в
6 বাইট (সংকুচিত পূর্ণসংখ্যা তালিকা জেনারেটর দ্বারা উত্পাদিত) হয়Ž3ā7в
5 বাইট হয়Ž9¦S
এক্ষেত্রে 4 বাইট সহ সেরা বিকল্প হবে (সংখ্যার একটি সংখ্যায় 2460 সংকুচিত)10101001100101001
( আমার এই উত্তরে ব্যবহৃত ):
•a½₄Ƶ6®í•
9 টি বাইট (সংকুচিত বড় পূর্ণসংখ্যার জেনারেটর দ্বারা উত্পাদিত) হয়•1∊}•2вJ
8 বাইট (সংযুক্ত সংযুক্ত সংক্ষিপ্ত পূর্ণসংখ্যার তালিকা জেনারেটর দ্বারা উত্পাদিত) হয়•1∊}•b
6 বাইট সহ সেরা বিকল্প হবে (সংকোচিত পূর্ণসংখ্যার তালিকার পরিবর্তে একটি টু বাইনারি2в
, যা স্পষ্টভাবে যোগ দেয়)[85,30,29,39,28,37,33,88,31,40,34,89,35,41,32,90,36,38,42,43,44,60,45,61,46,62,47,63,48,64,49,65,81,50,66,51,67,52,68,53,69,86,54,70,87,55,71,56,72,82,57,73,79,80,58,74,59,75,76,77,78,83,84]
( আমার এই উত্তরে ব্যবহৃত ):
•4Œ”dóŒfÝŸĀTUÕáOyÖOÀÁàu¼6¹₆Žr‡_›y³eß₂©ǝ²ƶ"SAÎAñ'¡û†Ø(•91в
57 বাইট (সংক্ষিপ্ত পূর্ণসংখ্যার তালিকা জেনারেটর দ্বারা উত্পাদিত) হয়•6j|eDEJÞó(ÍêΓλùÄÞKüzHÇ-ø
JδŠ₂ + Öηôî®À8 † 6 / ðÎ6ùøΓ ° ÓĆ; ˆ © Ā • 2ô` এছাড়াও 57 বাইট (সংকীর্ণ পূর্ণসংখ্যা, আকার 2 এর অংশে বিভক্ত)•Bšā¿ÑáζΔÕæ₅"®GÙ₂®°ƶío"§óÏ4¸bćÔ!₃ùZFúÐìŸ
,λ₂ϦP(Ì•65в₂+
তবে 2 প্রতিটি মান 26 নিম্ন সঙ্গে তালিকা খাটো বাইট, কম্প্রেশন দ্বারা, এবং তারপর '₂ + + পরে যে যোগ ` । পরে সিঙ্গল-বাইট মান যুক্ত করার এই কৌশলটি প্রায়শই সংক্ষেপিত তালিকায় বাইট সংরক্ষণ করতে ব্যবহার করা যেতে পারে।যে দিনগুলিতে 05AB1E প্রকাশিত হয়েছিল, অন্তর্নিহিত ইনপুটটি বেশ নতুন এবং অভিনব ছিল। আজকাল অন্যান্য প্রতিযোগিতামূলক ভাষার (যেমন জেলি, এমএটিএল, পাইথ ইত্যাদি) সাথে নজর রাখার জন্য এটি প্রয়োজনীয় বলে মনে হচ্ছে।
উদাহরণস্বরূপ, আপনি যখন দুটি সংখ্যা যুক্ত করতে চান, আপনি এটি করতে পারেন II+
:
I # Input_1.
I # Input_2.
+ # Add them up.
তবে, অন্তর্নিহিত ইনপুট ব্যবহার করে আমরা কেবলমাত্র 1 বাইটে সংক্ষিপ্ত করতে পারি, যথা +
:
+ # Take two numbers implicitly and add them up.
এটি তখনই ঘটে যখন স্ট্যাকের দৈর্ঘ্য অপারেটরের শালীনতার চেয়ে ছোট হয়। একটি শেষ উদাহরণ 3+
। +
অপারেটরের আরটিটি 2 হয় যখন স্ট্যাকের মধ্যে কেবল 1 টি উপাদান থাকে:
3 # Push the number 3 on top of the stack.
+ # Request implicit input and add to the 3.
£
b
স্ট্রিংয়ের প্রথম অক্ষর নেওয়ার কমান্ড a
।
উদা: "hello_world"5£
->
"hello"
তবে b
সূচকগুলির একটি তালিকা থাকলে এটি পরিবর্তে স্ট্রিংগুলি সেই আকারগুলির (অবধি) অংশে বিভক্ত করে।
উদা: "hello_world"5L£
->
['h', 'el', 'lo_', 'worl', 'd']
তারা 05AB1E এ কিছুটা লুকিয়ে রয়েছে। এখানে সমস্ত পূর্বনির্ধারিত ভেরিয়েবলের একটি তালিকা রয়েছে:
¾
, 0
এই কমান্ডের আগে কাউন্টার_ভেরিয়েবল পরিবর্তন না করা হলে ধাক্কা দেয় ।X
, 1
এই কমান্ডটি ব্যবহার করার আগে ভেরিয়েবল এক্স পরিবর্তন না করা হলে ধাক্কা দেয় U
।Y
, 2
এই কমান্ডটি ব্যবহার করার আগে ভেরিয়েবল Y পরিবর্তন না করা হলে ধাক্কা দেয় V
।®
, -1
এই কমান্ডটি দিয়ে রেজিস্টার পরিবর্তন না করা হলে ধাক্কা দেয় ©
।¯
, []
এই কমান্ডের আগে গ্লোবাল_আরে কিছু যুক্ত না করা হলে (খালি অ্যারে) পুশ করে।¸
, [""]
কোনও ইনপুট না থাকলে খালি স্ট্যাকের দিকে ধাক্কা দেয় । (এটি খুঁজে পাওয়ার জন্য আপনাকে @ এমিগানাকে ধন্যবাদ))¾
পাহাড় জমে 0 => যে অ-স্মৃতিসম্বন্ধীয় এটি পায় হিসাবে সম্পর্কে এর
¾
পাহাড় জমে একটি পাল্টা পরিবর্তনশীল যা 0. যেমন সক্রিয়া করা হয় আপনি শুধুমাত্র ধাক্কা 0 চান, 0 কোর্সের আরো প্রাকৃতিক হয়, কিন্তু আপনি যদি ধাক্কা চান 5,0,7
, 5¾7
2 চেয়ে খাটো বাইট 5 0 7
।
print(3 / 4)
পাইথন 2 আমাকে দেয় 0
।
M
ধাক্কা দেয় -Inf
।
Λ
বা .Λ
) ব্যবহার করেযেহেতু এটি দস্তাবেজের অংশ ছিল না, এবং @ আদনান এটি লেখার জন্য বর্তমানে কিছুটা ব্যস্ত, তাই আমি আপাতত এটিকে টিপ হিসাবে যুক্ত করার অনুমতি চেয়েছিলাম।
ক্যানভাস ফাংশন ( Λ
বা .Λ
) স্ক্রিনে ASCII- রেখা আঁকতে ব্যবহার করা যেতে পারে। এটির জন্য তিনটি প্রয়োজনীয় প্যারামিটার রয়েছে:
[0,7]
দিকনির্দেশের জন্যসংখ্যা রয়েছে, যার জন্য আমরা একটি বা একাধিক ব্যবহার করতে পারি। এছাড়াও কিছু বিশেষ বিকল্প রয়েছে যাগুলির জন্য একটি নির্দিষ্ট চরিত্রের প্রয়োজন হয় (এটি সম্পর্কে আরও পরে)।[0,7]
নীচের দিকের দিকনির্দেশ-অঙ্কগুলি মানচিত্র:
7 0 1
↖ ↑ ↗
6 ← X → 2
↙ ↓ ↘
5 4 3
কিছু উদাহরণ 05AB1E উত্তর দেয় যেখানে ক্যানভাস ব্যবহার করা হয়:
আসুন আমরা শেষের মতো কিছু করব, সুতরাং ধরে নেওয়া যাক আমরা Λ
নিম্নলিখিত তিনটি পরামিতি সহ ক্যানভাস ফাংশনটি ব্যবহার করি :
[3,3,5,5,7,7,9,9]
!@#
[0,2,4,6]
এটি নিম্নলিখিত আউটপুট দেবে:
!@#!@#!
# @
@ #!@ #
! @ # !
# ! ! @
@ @ #
!#@!# !
@
@!#@!#@!#
সুতরাং কিভাবে এটি কাজ করে? ভাল, উপরে এই ইনপুটগুলি সহ পদক্ষেপগুলি এখানে রয়েছে:
3
অক্ষর আঁকুন ( !@#
) উপরের দিকে (দিকনির্দেশ 0
)3-1
অক্ষর ( !@
(দিকবিন্যাস ডান দিকে) 2
)5-1
অক্ষর আঁকুন ( #!@#
) নিচের দিকে (দিকনির্দেশ 4
)5-1
অক্ষর আঁকুন!@#!
6
7-1
অক্ষর আঁকুন ( @#!@#!
) উপরের দিকে (দিকনির্দেশ 0
)7-1
অক্ষর ( @#!@#!
(দিকবিন্যাস ডান দিকে) 2
)9-1
অক্ষর আঁকুন ( @#!@#!@#
) নিচের দিকে (দিকনির্দেশ 4
)9-1
অক্ষর আঁকুন!@#!@#!@
6
-1
কারণ লাইন ওভারল্যাপ আছে। সুতরাং প্রথম দুটি পদক্ষেপ হল:
#
@
!
এবং
!@
যা মিলিত:
#!@
@
!
কিছু ছোট ছোট নোট:
[0,7]
কয়েকটি সুনির্দিষ্ট বিকল্প উপলব্ধ রয়েছে যা মূলত একটি নির্দিষ্ট দিকনির্দেশ অনুসারে অনুবাদ করে।
+
( '+
ইনলাইন) প্যাটার্নে অনুবাদ করে 04402662
, যা +
প্রদত্ত দৈর্ঘ্যের বাহু সহ একটি ক্রস তৈরি করে । এটি কর্মে দেখুন।×
( '×
ইনলাইন) প্যাটার্নে অনুবাদ করে 15513773
, যা X
প্রদত্ত দৈর্ঘ্যের বাহু সহ একটি ক্রস তৈরি করে । এটি কর্মে দেখুন।8
আমরা যেখান থেকে অঙ্কন শুরু করেছি তার উত্সে ফিরে আসে। এটিকে অ্যাকশনে দেখুন এবং ছাড়া পার্থক্য দেখতে8
।Λ
ইচ্ছা আউটপুট অবিলম্বে, এবং .Λ
একটি স্ট্রিং, যাতে স্ট্যাকের, যা আমরা এখনো পুনরায় ব্যবহার, পরিবর্তন করতে পারেন, এবং যে আমরা চাই চাই কিছু করতে push করা হয় ফলাফল। কিছু উদাহরণ:
+×8
আমি প্রকৃতপক্ষে উত্স কোডটি দেখেছি For
অন্যান্য স্ট্যাক-ভিত্তিক ভাষাগুলির মতো, 05AB1E এর ফাংশনগুলি সাধারণত তাদের ইনপুটগুলি স্ট্যাক থেকে পপ করে (গ্রাস করে) এবং তাদের আউটপুটগুলি স্ট্যাকের দিকে ঠেলে দেয়।
যাইহোক, কিছু ফাংশন পেতে তাদের গ্রাসকারী ছাড়া স্ট্যাক থেকে তাদের ইনপুট। একটি উদাহরণ head
ফাংশন, ¬
যা ইনপুট তালিকা থেকে প্রথম উপাদান উত্পাদন করে produces একটি উদাহরণ প্রোগ্রাম এখানে দেখুন: ¬+
। এটি তালিকার প্রতিটি সংখ্যায় ইনপুট তালিকার প্রথম সংখ্যা যুক্ত করে।
কোন ফাংশনগুলি পপ হয় এবং কোনটি পায় তা জানতে ফাংশন তথ্য ফাইলে সংশ্লিষ্ট কলামটি দেখুন ।
লুপস এবং কন্ডিশনালগুলি কোনও প্রোগ্রামের শেষে স্বয়ংক্রিয়ভাবে বন্ধ বন্ধনীগুলি গ্রহণ করে, সুতরাং আপনাকে লুপের / শর্তসাপেক্ষে বাইরে কোনও কিছুর প্রয়োজন হলে কেবলমাত্র সেগুলিতে কোড যুক্ত করতে হবে।
উদাহরণস্বরূপ, প্রথম (প্রাথমিক) n
সংখ্যাগুলির তালিকা তৈরি করার জন্য এই (অরোগল্ডড) প্রোগ্রামটির বন্ধনী বন্ধনী প্রয়োজন নেই।
[¹¾Q#NpiNˆ¼
তবে আমরা যদি ফলাফলের তালিকায় কিছু অপারেশন করতে চাইতাম, উদাহরণস্বরূপ ডেল্টা গ্রহণ করা আমাদের প্রথমে লুপটি বন্ধ করা দরকার।
[¹¾Q#NpiNˆ¼]¯¥
পথে চলতে শিখেছি এমন ছোট গল্ফিং টিপসের সাহায্যে এটি প্রসারিত করবে। (কেবলমাত্র ব্যক্তিগতভাবে কেবল 05AB1E শুরু হয়েছে))
D
(ডুপ্লিকেট) এবং Ð
(ট্রিপলিকেট) সাথে s
(অদলবদল) এবং Š
(ট্রিপল-সোয়াপ a,b,c
টু c,a,b
) এর মিশ্রণগুলি লুপের অভ্যন্তরে ( গ্লোবাল_ভেরিয়েবলে©
সংরক্ষণ করুন ) এবং ( গ্লোবাল_ভেরিয়েবল ধাক্কা ) ব্যবহারের চেয়ে সাধারণত ছোট হয় । এই আমার এই উত্তরে একটি বাইট সংরক্ষিত মধ্যে, সেইসাথে দুই আমার এই উত্তরের ।®
½
(যদি 1 হয়, তবে 1 টির সাথে পাল্টে_ পরিবর্তনশীল বৃদ্ধি করুন ) একটি শেষে µ
(যখন পাল্টে পরিবর্তনযোগ্য ! = ক, কর ...) প্রয়োজনীয় নয়, যেহেতু এটি স্পষ্টভাবে সম্পন্ন হয়েছে ( আমার এই উত্তরটিতে একটি বাইট সংরক্ষণ করেছে )।.B
স্পষ্টতই নতুন লাইনে বিভক্ত হয়। আমার এই উত্তরটিতে এটি কার্যকর হয়েছিল যখন আমরা ¡
খালি আইটেম রাখার সময় (বিভক্ত) বিকল্পের সন্ধান করছিলাম (দ্রষ্টব্য: বিভাজনের পরে উপাদানগুলি যখন পিছনে স্থান রাখে তখন লিঙ্কিত উত্তরের সমাধান কার্যকর হয় না -) আশা করি একটি বিল্টিন বিভক্তিতে যোগ করা হবে তবে ভবিষ্যতে খালি লাইন রাখুন।SÖ
(ইনপুট-পূর্ণসংখ্যার কোন অঙ্কটি সমানভাবে ইনপুট-পূর্ণসংখ্যাকে বিভক্ত করতে পারে) অঙ্কগুলির জন্য নিজেই সংখ্যাটি অন্তর্ভুক্ত করবে 0
(বিভাজন দ্বারা শূন্য ত্রুটির পরিবর্তে)। উদাহরণস্বরূপ, 1053
ফলাফল হবে[1,1053,0,1]
(1053 1 এবং 3 দ্বারা বিভাজ্য; 5 দ্বারা বিভাজ্য নয়; এবং 0 এর জন্য বিভাগ দ্বারা বাই শূন্য ত্রুটি দেয়)। এই তালিকাটির ক্ষমতা গ্রহণ করে আমার এই উত্তরে এটি বেশ কার্যকর ছিল , যেহেতু কেবলমাত্র 1
05AB1E এ সত্যবাদী এবং অন্য সব কিছু মিথ্যা। SÖP
সত্যবাদী ( 1
) এর ফলস্বরূপ এর অর্থ একটি ইনপুট-পূর্ণসংখ্যা তার প্রতিটি অঙ্ক দ্বারা সমানভাবে বিভাজ্য।û
(একটি প্রদত্ত স্ট্রিংকে প্যালেন্ড্রোমাইজ করুন ) আমি অবাক হয়ে গেলাম সেখানে একটি_পালিন্ড্রোম বিল্টিন নেই । তবে পরে আমি বুঝতে পেরেছিলাম যে এটি সম্পাদন করার জন্য মাত্র 2 বাইটের প্রয়োজন, যা ÂQ
(যেখানে Â
দ্বিখণ্ডিত হয় যা সংক্ষেপে DR
: সদৃশ এবং বিপরীত অনুলিপি; এবং Q
স্ট্যাকের উপরের দুটি মান সমান কিনা তা পরীক্ষা করে দেখার জন্য)।Ds*
(ডুপ্লিকেট, অদলবদল, লজিক্যাল-এন্ড হিসাবে কাজ করার জন্য গুণিত) বনাম }ʒ
(প্রথম ফিল্টারটি বন্ধ করুন, আবারও ফিল্টার করুন) যখন আপনি দুটি ফিল্টার ব্যবহার করেন তখন আপনার প্রয়োজন হবে। উদাহরণস্বরূপ: এই চ্যালেঞ্জে আমাদের চার সংখ্যার দীর্ঘ সমস্ত সংখ্যার তালিকা করতে হবে, কমপক্ষে একটি 0
এবং সমান সংখ্যার সমষ্টি সহ 9
। একটি ব্যাপ্তি ব্যবহার করা [1000,10000]
দীর্ঘ চার অঙ্কের সংখ্যাটি কভার করে, তবে তারপরে আপনাকে আরও দুটি ফিল্টার রেখে দেওয়া হবে। প্রথমদিকে আমি ₄4°ŸʒD0åsSO9Q*
(14 বাইট) ব্যবহার করেছি, তবে দুটি ফিল্টার ব্যবহার করে একটি বাইট সংরক্ষণ করা যায়: ₄4°Ÿʒ0å}ʒSO9Q
(13 বাইট) (যা পরে গ্রিমি ₄4°ŸεW°ö9Q
দ্বারা (10 বাইট) গল্ফড হয়েছিল।)0
ফিলার হিসাবে পূর্ণসংখ্যার সাথে জিপ করতে চাইলে আপনি ব্যবহার করতে পারেন 0ζ
। তবে এর সাথে একটি সমস্যা হ'ল ফিলারটি 0
একটি স্ট্রিং হয়ে যাবে "0"
, সুতরাং আপনি যদি পরে মিশ্র স্ট্রিং এবং পূর্ণসংখ্যার সাথে বাছাই করার চেষ্টা করেন তবে এটি সম্ভবত আপনি চান ফলাফলটি দেবেন না। কিভাবে এটা জিপ করা ভেতরের তালিকা সাজাতে হবে একটি উদাহরণ এখানে: 0ζ€{
। এই int- এ একটি সুনির্দিষ্ট ঢালাই (যোগ করে সংশোধন করা হয়েছে করা যেতে পারে ï
) জিপ পর, এবং শুধুমাত্র তারপর করুনঃ: 0ζï€{
। যাইহোক, জিপ-ফিলার সহ ¾
ধ্রুবক হিসাবে এটি ব্যবহার করার 0
ফলে এটি জিপ চলাকালীন স্ট্রিংয়ের পরিবর্তে পূর্ণসংখ্যায় থেকে যাবে। সুতরাং ¾ζ€{
এখানে একটি বাইট সংরক্ষণ করা হবে। এই ডগা দ্বারা সরবরাহ করা হয়েছিল @ Mr.Xcoder একটি বাইট সংরক্ষণ করতে আমার এই উত্তরে ।€SO
। খাটো তবে ব্যবহার করছে 1ö
যা স্বয়ংক্রিয়ভাবে ভেক্টরাইজ হয় izes এই ডগা দ্বারা সরবরাহ করা হয়েছিল @Grimy করার একটি বাইট এখানে সংরক্ষণ (এবং 2 এখানে বাইট )।2‹
। তবে, !
(ফ্যাকটোরিয়াল) ব্যবহারের ফলে কেবল 1 টি (সত্যবাদী) হবে 0
এবং এর জন্য এবং 1
অন্যান্য সমস্ত মান উচ্চতর কিছুতে (এবং এইভাবে মিথ্যা হবে, যেহেতু কেবলমাত্র 1
05AB1E-তে সত্যবাদী)। এই টিপটি এখানে একটি বাইট সংরক্ষণ করতে @ গ্রিমি সরবরাহ করেছিলেন ।নোট করুন যে 05AB1E-তে কিছু অপারেটর অ্যারেতে স্বয়ংক্রিয়ভাবে ভেক্টরাইজ হয়। উদাহরণস্বরূপ, কোডটি 5L3+
, যা নিম্নলিখিত সিউডোকোডে বিচ্ছিন্ন হয়েছে:
[1, 2, 3, 4, 5] + 3
হবে:
[4, 5, 6, 7, 8]
যদি এটি স্বয়ংক্রিয়ভাবে ভেক্টরাইজ না হয় তবে আপনি €
অপারেটরটিও ব্যবহার করতে পারেন । এটি একটি একক অক্ষরের কমান্ড নেয় এবং প্রতিটি উপাদানটিতে এটি (মোনাডিক) অপারেটর সম্পাদন করে। প্রতিটি উপাদানকে বিভক্ত করার একটি উদাহরণ নিম্নলিখিত কোড ( এটি এখানে চেষ্টা করুন ):
€S
যদিও সাধারণ S
অপারেটর প্রতিটি উপাদানকে অ্যারেতে বিভক্ত করে একক অ্যারে রূপান্তরিত করে ( এটি এখানে চেষ্টা করুন )।
ñ
এর মান অনুসারে তালিকাগুলি মার্জ করুন n
। tio.run/nexus/05ab1e#@2/iw2XiE2Tio81ldHjj//8A
আপনি যে আদেশটি ইনপুটটি নিয়েছেন তা আপনার কোডের উপর কঠোর প্রভাব ফেলতে পারে এবং প্রায়শই যদি আপনি s
স্ট্যাকের পরবর্তী শীর্ষ জিনিসটি দিয়ে স্ট্যাকের শীর্ষটি স্যুপ ব্যবহার করতে থাকেন তবে আপনি সমস্যাটি সঠিকভাবে ভাবছেন না। ইনপুটগুলি পুনরায় অর্ডার করার চেষ্টা করুন এবং আপনি আগে থেকে ইনপুটগুলি অদলবদল করে, এটি স্ট্যাকের সাথে আগে যোগ করে বা কোথাও সদৃশ করে অদলবদলের প্রয়োজন থেকে মুক্তি পেতে পারেন কিনা তা দেখুন। সর্বাধিক সুস্পষ্ট I&O সর্বনিম্ন সফল 05AB1E উত্তর হতে পারে।
নীচের কোডটি কাস্টম বেস রূপান্তর ব্যবহার করে ASCII-art 05AB1E এ রূপান্তর করতে সহায়তা করে।
|»©ÐÙSDŠ¢øΣθ}R€н¬®sÅ?iD2£RDŠKsì}J©žLR‡®gö₅B®s"•ÿ•“ÿ“ÅвJ"
এটি দ্বারা সম্পাদিত:
0-9A-Za-z
সেই ক্রমে , প্রতিটি স্বতন্ত্র অক্ষর প্রতিস্থাপন না করা অবধি প্রতিটি পৃথক অক্ষর তার নিজস্ব ম্যাপিং-চরিত্র পাবে।•<compressed_integer>•“<sorted_distinct_characters>“ÅвJ
।“
এছাড়াও কম্প্রেস স্ট্রিং-কোট আপনি করতে পারবেন "
; দ্যÅв
এই স্ট্রিং ব্যবহার করবে উত্পন্ন পূর্ণসংখ্যা কাস্টম বেস হিসাবে স্ট্রিং ব্যবহার করে বেস-রূপান্তর; এবং J
এই সমস্ত অক্ষরের সাথে একক স্ট্রিংয়ে যোগ দেবে, যা স্পষ্টভাবে আউটপুট।
ASCII- শিল্পের পক্ষে ভাল এবং 62 টি স্বতন্ত্র অক্ষর সহ নিদর্শনগুলি গ্রহণ করে।
অনন্য অক্ষরের পরিমাণ কম, সংক্ষেপণ তত ভাল।
এক্সএনওর ডিজিটাল টাইমিং ডায়াগ্রাম আঁকার উদাহরণস্বরূপ আউটপুট (214 বাইট, 9 অনন্য অক্ষর):
┌─┐ ┌─┐ ┌─────┐ ┌─┐ ┌─┐ ┌───┐
A ──┘ └─┘ └─┘ └─┘ └─┘ └─┘ └──
┌───┐ ┌───┐ ┌─┐ ┌─────┐ ┌─┐ ┌─┐
B ┘ └─┘ └─┘ └─┘ └───┘ └─┘ └
┌─────┐ ┌─┐ ┌─┐ ┌───┐
X ──┘ └───┘ └───┘ └───┘ └────
হবে:
•I£.µ*:]ó±øqaµb₄ΘYQmœ¹µû₄p´ζÂĆ_5ŠKÑ×ðòË|₄#¹¶úôÂ-Í|¯ε¼É₂ïδ&é–9»ÞFò1î×HÃBjý2ĆÉ≠FYÂÂèC j‘£Å₅Œ•“─ └┘┐┌
XBA“ÅвJ
(106/214) * 100 = 49.53% আসল ASCII- আর্ট স্ট্রিংয়ের আকার।
যা 05AB1E (উত্তরাধিকার) এর চ্যালেঞ্জের জন্য আমার আসল জমা হিসাবে একই বাইট-গণনা ।
দ্রষ্টব্য: কোড একেবারে গল্ফ হয় না। এটি ASCII আর্টকে সবচেয়ে দক্ষ সংকোচনে রূপান্তর করতে দ্রুত লেখা হয়েছে, সুতরাং এটি বেশ কুৎসিত এবং দীর্ঘ ...
|» # Take multi-line input
© # Store it in the register to reuse later
ÐÙS # Only leave unique characters (as list)
DŠ¢ø # Map it with the count for each of those characters
Σθ}R # Sort it based on that count (highest to lowest)
€н # Remove the count again, so the sorted characters remain
¬®sÅ?i # If the input starts with the most occurring character:
D2£RDŠKsì} # Swap the first two characters in the list
J© # Join everything together, and store it in the register to reuse later
žLR‡ # Map each character to [0-9A-Za-z]
®gö # Get the amount of unique characters, and convert it to that Base
₅B # And then convert that to Base-255
®s # Push the string and swap so the compressed integer is at the top again
"•ÿ•“ÿ“ÅвJ" # Insert it in the correct output format
# `•<compressed_integer>•“<sorted_distinct_characters>“ÅвJ`
"•ÿ•" # (after which the result is output implicitly with trailing newline)
<str><compr_int><int>вèJ
পরিবর্তে আপনার ব্যবহার <compr_int><int>BžLR<str>‡
; এবং স্ট্রিং-কোটস হিসাবে “
পরিবর্তে ব্যবহার করা "
, সুতরাং "
ইনপুট অংশ হতে পারে।
সকলেই এমন কিছু নয় যেটির সাথে একমত হয়, তবে এটি কার্যকর হয়।
নিম্নলিখিত দুটি প্রোগ্রাম বিবেচনা করুন:
4 5+
"4""5"+
তারা উভয় ফলাফল 9 । কারণ প্রতিটি মান প্রথমে মূল্যায়ন করা হয় (সহ)ast.literal_eval
)। এজন্য, আমরা ইনটগুলিতে সমস্ত স্ট্রিং ম্যানিপুলেশন অপারেটর এবং স্ট্রিংগুলিতে সমস্ত ইন ম্যানিপুলেশন অপারেটরগুলি সম্পাদন করতে পারি।
উদাহরণস্বরূপ, 12345û
সংখ্যাটি প্যালিনড্রোমাইজ করে 12345
, ফলস্বরূপ 123454321
। এর পরে, আমরা এই সংখ্যাটিতে নিয়মিত গণিত করতে পারি।
12345û50000-
এর ফলস্বরূপ: 123404321 ।
05AB1E এ নিম্নলিখিত স্বাভাবিক লুপ এবং পুনরুক্তি রয়েছে:
F
, যা 0 .. n-1 এর মাধ্যমে পুনরাবৃত্তি হয় ।G
, যা 1 এর মাধ্যমে পুনরাবৃত্তি হয় .. n-1 ।ƒ
, যা 0 .. n এর মাধ্যমে পুনরাবৃত্তি হয় ।v
, যা প্রতিটি উপাদানকে [0], এস [1], .., এস [এন] এর উপরে পুনরাবৃত্তি করে ।ʒ
, যা হুবহু লুপ নয়, তবে ফিল্টার-বাই কমান্ড। প্রতিটি উপাদান দিয়ে লুপিংয়ের অনিচ্ছাকৃত আচরণের জন্য আমরা এই আদেশটি অপব্যবহার করি।এই লুপগুলি ব্যবহার করে, আমরা নিম্নলিখিত লুকানো লুপগুলি অর্জন করতে পারি :
gF
, আপনি ব্যবহার করতে পারেন v
যা একটি আছেN
অন-ইনডেক্সও ব্যবহার করা যেতে পারে।vy -> ʒ
প্রতিস্থাপন একটি বিট আরো চতুর হল:
y
এই ধরণের লুপগুলিতে চালনা সম্ভব নয়।[
, µ
এবং ε
এছাড়াও স্বাভাবিক লুপ / পুনরাবৃত্তিও অংশ?
y
কয়েকটি দিয়ে এখনই অনুরোধ করা সম্ভব।