বর্ধিত ওয়েচসলার ফর্ম্যাটটি ডিক্রিপ্ট করুন


18

এই চ্যালেঞ্জটি ব্যবহারকারী ৪৮৮৮৩ এর একটি স্যান্ডবক্স পোস্টের উপর ভিত্তি করে । যেহেতু তিনি এই সাইটে আর সক্রিয় নেই, তাই আমি এই চ্যালেঞ্জটি গ্রহণ করেছি।


এপজিসার্ক , কনওয়ের গেম অফ লাইফ এবং অনুসন্ধান ফলাফলের ডাটাবেসের জন্য বিতরণ করা স্যুপ অনুসন্ধানের প্রোগ্রাম, ক্যাটগলু নিবন্ধগুলিকে শ্রেণিবদ্ধকরণ এবং নির্দেশিত করতে apgcodes ব্যবহার করে। এপিগোডগুলি নিজেরাই বর্ধিত ওয়েচসলার ফর্ম্যাটটি ব্যবহার করে , 1992 সালে অ্যালান ওয়েচসলার দ্বারা বিকাশিত প্যাটার্ন স্বরলিপিটির একটি এক্সটেনশন।

নিম্নলিখিত উদাহরণ এবং চিত্রগুলি লাইফউইকি থেকে নেওয়া হয়েছে ।

  1. রেজেক্সের সাথে মিলে যাওয়া সেটগুলিতে এন অক্ষরের একটি স্ট্রিং [0-9a-v]পাঁচটি সারি, এন কলাম প্রশস্ত প্রস্থের একটি স্ট্রিপকে বোঝায় । প্রতিটি চরিত্র bitstrings সংশ্লিষ্ট একটি উল্লম্ব কলামে পাঁচ কোষ উল্লেখ করে [ 00000, 10000, 01000... 00010, 10010, 01010, 11010... 11111]।

    উদাহরণস্বরূপ, 27deee6একটি হেভিওয়েট স্পেসশিপের সাথে সঙ্গতিপূর্ণ :

27deee6

[01100001101111011111100111100000000]
  1. চরিত্রটি zপাঁচটি-সারি সংলগ্ন স্ট্রিপগুলি পৃথক করে।

    উদাহরণস্বরূপ, 0ca178b96z69d1d9631-বিট স্থির জীবনের সাথে সঙ্গতিপূর্ণ:

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

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

[000110110001010101010010001011001110000000000011111000100000100101010100011011000000000000]
  1. অক্ষর wএবং xসংক্ষেপে 00এবং 000যথাক্রমে ব্যবহৃত হয়।

    সুতরাং w33z8kqrqk8zzzx33একটি সাথে সঙ্গতিপূর্ণ ট্রান্স-রাণী মৌমাছি শাটল :

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

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

(10 টি ফাঁকা সারি বাদ দেওয়া হয়েছে)

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

[0011000001100000000000000000000000000010000011100010001010111010111110000000000000000000000000000000000000000000000000000000000000000000000000011000001100000000000000000000000]
  1. অবশেষে, রেজেক্সের y[0-9a-z]সাথে মিলে যাওয়া প্রতীকগুলি টানা 4 এবং 39 এর মধ্যে রানের সাথে মিলে যায় 0

    একটি ভাল উদাহরণ 31a08zy0123cko, একটি সংশ্লিষ্ট quadpole উপর জাহাজ :

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

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

[1100000000101000000000000000000010100000000000000000001010000000011000000000011000000001010000000011]

The Challenge

Write a program or a function to parse a string of the extended Wechsler format, defined above, and print (or return) the pattern corresponding to this string.

You may assume that the string is nonempty, and does not start or end with z.

You may use any reasonable output format, e.g., a string, a matrix, a 2d array. You may use any two values to represent 0 and 1, given that you declare them in the answer.

আপনি আউটপুটে পিছনের জিরোস লাইনগুলি বাদ দিতে পারেন বা অতিরিক্ত ট্রেলিং শূন্য লাইন যুক্ত করতে পারেন। যতক্ষণ না আউটপুটে সমস্ত লাইনের দৈর্ঘ্য একই থাকে ততক্ষণ আপনি প্রতিটি লাইনে ট্রেলিং জিরো যুক্ত / বাদ দিতে পারেন।

আপনি যদি অ্যারে স্থানান্তর করতে পারেন তবে এটি যদি আরও সুবিধাজনক হয়।

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

পরীক্ষার মামলা

153 => [[1, 1, 1], [0, 0, 1], [0, 1, 0], [0, 0, 0], [0, 0, 0]]
27deee6 => [[0, 1, 1, 0, 0, 0, 0], [1, 1, 0, 1, 1, 1, 1], [0, 1, 1, 1, 1, 1, 1], [0, 0, 1, 1, 1, 1, 0], [0, 0, 0, 0, 0, 0, 0]]
0ca178b96z69d1d96 => [[0, 0, 0, 1, 1, 0, 1, 1, 0], [0, 0, 1, 0, 1, 0, 1, 0, 1], [0, 1, 0, 0, 1, 0, 0, 0, 1], [0, 1, 1, 0, 0, 1, 1, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 1, 1, 1, 1, 0, 0, 0], [1, 0, 0, 0, 0, 0, 1, 0, 0], [1, 0, 1, 0, 1, 0, 1, 0, 0], [0, 1, 1, 0, 1, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]]
w33z8kqrqk8zzzx33 => [[0, 0, 1, 1, 0, 0, 0], [0, 0, 1, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0], [0, 0, 1, 1, 1, 0, 0], [0, 1, 0, 0, 0, 1, 0], [1, 0, 1, 1, 1, 0, 1], [0, 1, 1, 1, 1, 1, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 1, 0, 0], [0, 0, 0, 1, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]]
31a08zy0123cko => [[1, 1, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 1, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1, 1, 0], [0, 0, 0, 0, 0, 0, 0, 1, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 1, 1]]
o5995ozes88sezw33 => [[0, 1, 1, 1, 1, 0], [0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 1, 0], [1, 0, 1, 1, 0, 1], [1, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 1], [1, 1, 0, 0, 1, 1], [1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 1, 0], [0, 0, 1, 1, 0, 0], [0, 0, 1, 1, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]]
y3343x6bacy6cab6x343zkk8yy8kkzgo8gywg8ogz0123yw321zzgo4syws4ogzgh1yy1hgz221yy122zy3c2cx6d53y635d6xc2c => [[0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0], [1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1], [0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0], [0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0], [0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0], [1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1], [0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

হবে zকি কখনো খুব প্রারম্ভে ঘটে?
মিস্টার এক্সকোডার

@ মিঃ এক্সকোডার দ্য লাইফউইকি পৃষ্ঠায় সে সম্পর্কে কিছুই বলা যায় না। তবে আপনি এখানে ধরে নিতে পারেন যে স্ট্রিংটি শুরু হয় না বা শেষ হয় না z
আলেফাল্ফ

3
সত্যিই গেম অফ লাইফ প্যাটার্ন নয়, কেবল মজাদার জন্য:vv99f60vv99f60uv11320uv19rqz33y133y11322310132231
আর্নল্ড

1
"আপনি অ্যারের ট্রান্সপোজ ফিরিয়ে দিতে পারেন" - যদি তা ঠিক থাকে তবে অন্যান্য প্রতিসাম্যগুলির মতো যেমন উলটা-ডাউন ইত্যাদি ...?
জোনাথন অ্যালান

1
প্রথম তিন দুটি উত্তরের এগুলির কিছু ব্যর্থ: 1yx1, 1yy1, 1yw1এবং 1yz1। হতে পারে তাদের পরীক্ষা করা উচিত।
জোনাথন অ্যালান

উত্তর:


2

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

UB0≔⁺⭆χιββFS¿υ×0⁺⊟υ⌕βι≡ιz×⸿⁵y⊞υ⁴x×0³w¦00«P↓⮌⍘⌕βι²→

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যবহার 1এবং 0। ব্যাখ্যা:

UB0

ব্যাকগ্রাউন্ড সেট করুন, আউটপুটকে ঘিরে থাকা আয়তক্ষেত্রের যেকোনো অপরিশোধিত ঘর, তে 0

≔⁺⭆χιββ

পূর্বনির্ধারিত লোয়ার কেস বর্ণমালায় অঙ্কগুলি উপসর্গ করুন।

FS

ইনপুট স্ট্রিং উপর লুপ।

¿υ

পূর্বনির্ধারিত খালি তালিকাটি যদি খালি না হয় ...

×0⁺⊟υ⌕βι

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

≡ι

বর্তমানের চরিত্রটির উপরে স্যুইচ করুন।

z×⸿⁵

যদি এটি একটি zপরবর্তী আউটপুট 5 গাড়ি বহন করে, পরের আউটপুট স্ট্রিপে নিয়ে যায়।

y⊞υ⁴

যদি এটি একটি হয় y, তবে 4পূর্বনির্ধারিত খালি তালিকায় চাপ দিন, এর ফলে 4+n 0পরের বার আউটপুট হবে।

x×0³

যদি এটি হয় xতবে 3 0টি আউটপুট । (আক্ষরিক বা নিম্নলিখিত আক্ষরিক 0স্পর্শ এড়ানোর জন্য এটি পুনরাবৃত্তির মাধ্যমে করা হয় x))

w¦00

যদি এটি একটি wতবে আউটপুট 2 0গুলি। ( ¦দুটি স্ট্রিং আক্ষরিক পৃথক করার জন্য এটি প্রয়োজন))

«P↓⮌⍘⌕βι²→

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


6

জাভাস্ক্রিপ্ট (ইএস 8), 197 বাইট

স্ট্রিং হিসাবে ইনপুট নেয়। '#' এবং স্পেস সহ স্ট্রিংগুলির একটি অ্যারে ফেরত দেয়। আউটপুটটিতে প্রতিটি লাইনের অতিরিক্ত (তবে ধারাবাহিক) ট্রেলিং স্পেস অন্তর্ভুক্ত থাকতে পারে।

s=>[x='x',...s.replace(/w|x|y./g,s=>''.padEnd(s<x?2:s>x?P(s[1],36)+4:3),P=parseInt)].map(c=>[!++w,1,2,3,4].map(i=>c<x?o[y+i-5]+=' #'[P(c,36)>>i&1]:o=[...++y&&o,'']),w=y=o=[])&&o.map(r=>r.padEnd(w))

এটি অনলাইন চেষ্টা করুন! (পূর্বনির্ধারিত আউটপুট)

কিভাবে?

গ্লোবাল ভেরিয়েবল

  • চরিত্রটি "x"বেশ কয়েকবার ব্যবহৃত হয়, সুতরাং এটি ভেরিয়েবল এক্স-এ সংরক্ষণ করার উপযুক্ত ।
  • ফাংশনটি parseIntদু'বার ব্যবহৃত হয়, সুতরাং এটি ভেরিয়েবল পি-তে সংরক্ষণ করার উপযুক্ত ।
  • y হল সারি সূচক, 0 থেকে আরম্ভ করা ।
  • w প্রস্থের উপরের সীমানা ট্র্যাক করে যা চূড়ান্ত আউটপুট প্যাড করতে ব্যবহৃত হয়।
  • o [] হ'ল আউটপুট অ্যারে, প্রথমদিকে খালি।

পুনরাবৃত্তি শূন্যগুলির প্রাক প্রক্রিয়াজাতকরণ

আমরা প্রথম সমস্ত নিদর্শন প্রতিস্থাপন "w", "x"এবং "yX"স্পেস যথাযথ নম্বর দিয়ে ইনপুট স্ট্রিং। এই স্পেসগুলি পরে ব্যাখ্যা করা হবে "0"

s.replace(
  /w|x|y./g,
  s => ''.padEnd(
    // w --> 2
    s < x ? 2 :
    // yX --> value of X + 4
    s > x ? P(s[1], 36) + 4 :
    // x --> 3
    3
  )
)

গঠনের কথা মাথায় রেখে

আমরা ফলে স্ট্রিং বিভক্ত, শুরুতে যোগ ইনিশিয়াল "x"এবং বারবার 5 বার (সঙ্গে আমি = 0 থেকে 4 ) প্রতিটি অক্ষর উপর :

  • যদি সি এর চেয়ে কম হয় তবে "x"আমরা পরবর্তী 5 টি সারিতে সংশ্লিষ্ট প্যাটার্নটি যুক্ত করব।

    o[y + i - 5] += ' #'[P(c, 36) >> i & 1]
  • যদি সি এর চেয়ে বড় বা তার সমান হয় "x", আমরা o [] এ 5 টি নতুন খালি স্ট্রিং বরাদ্দ করি এবং 5 থেকে y যোগ করি । এটি "x"স্ট্রিংয়ের শুরুতে যুক্ত হওয়া প্রাথমিক দ্বারা বা "z"মূল বিষয়বস্তুতে যে কোনও দ্বারা ট্রিগার করা হয় ।

    o = [...++y && o, '']

প্যাডিং

অবশেষে, আমরা প্রতিটি স্ট্রিংকে ফাঁকা জায়গায় [[] এ প্যাড করি যাতে সেগুলির সকলের ডাব্লু অক্ষর থাকে।

o.map(r => r.padEnd(w))

6

05 এ বি 1 ই , 148 132 98 বাইট

আমি একজন হাইস্কুলের ছাত্র এবং গল্ফিং এবং 05 এএবি 1 ই উভয়ের ব্যবহারের জন্য এটি আমার প্রথম সময়, তাই মন্তব্যে প্রশংসা করা হয়েছে!

„YY¾38×:'Yð:žLRDUsð«#εNĀiDнXsk4+s¦sú]'W¾2×:'X¾3×:J'Z¶:.Bð¾:vNUyvDykDNX‚Š32VY‹iY+b¦RX_i¶ì}‚ˆ]¯{€¦˜J

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

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

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

বড় হাতের হিসাবে ইনপুট নেয় এবং ট্রান্সপোজড ম্যাট্রিক্সকে 1 ও 0 এর একাধিক আউটপুট লাইন হিসাবে আউটপুট দেয়। অতিরিক্ত জিরো যুক্ত করতে পারে।

আপনি যদি ছোট হাতের স্ট্রিং দিয়ে পরীক্ষা করতে চান uতবে টিআইও হেডার যুক্ত করুন।

আপনি যদি সুন্দর-মুদ্রিত আউটপুট চান '1'█:'0'.:তবে টিআইও পাদলেখ যুক্ত করুন।

ব্যাখ্যা

(আমি আপনার প্রত্যাশার বিপরীতে "সারি" এবং "কলামগুলি" বলছি কারণ এটি ট্রান্সপোজড ম্যাট্রিক্স উত্পন্ন করে)

প্রাথমিক অ্যালগরিদম হ'ল:

  1. 38 ys এর সাথে "yy" প্রতিস্থাপন করুন
  2. "Y" এ ভাগ করুন এবং 0-রান প্রসারিত করুন।
  3. "ডাব্লু" এবং "এক্স" প্রতিস্থাপন করুন
  4. দীর্ঘতম কলামটি (যা z এর মধ্যে দীর্ঘতম স্ট্রিং) বের করুন এবং অন্যান্য সমস্ত কলামগুলিকে প্যাড করুন যাতে সেগুলি দৈর্ঘ্য। (নীচের অ্যালগরিদম কীভাবে কাজ করে তার কারণে এটি প্রয়োজনীয়)
  5. জেড উপর বিভক্ত
  6. এই মুহুর্তে, ইনপুট স্ট্রিংটি কলামগুলির একটি অ্যারে যেখানে প্রতিটি কলামটি [0-9A-V] এর একটি স্ট্রিং, যেখানে প্রতিটি কলাম একই দৈর্ঘ্যের।
  7. এটিকে আউটপুট বিন্যাসে পেতে আলগোরিদিমটি হল
    1. একটি অনুসন্ধানের স্ট্রিং-এ indexOf ব্যবহার করে অক্ষরগুলিকে সংখ্যায় রূপান্তর করুন
    2. অক্ষরগুলিকে বাইনারি রূপান্তর করুন এবং তারপরে দৈর্ঘ্য 5 এ প্যাড করুন
    3. এটি যদি প্রথম কলাম হয় তবে বাইনারি সংখ্যার আগে একটি লাইন ব্রেক যুক্ত করুন
    4. বাইনারি স্ট্রিংয়ের শুরুতে একটি উপসর্গ যুক্ত করুন যা সারি এবং তারপরে অক্ষরের কলামটি সঞ্চয় করে।
    5. 05AB1E এর "গ্লোবাল অ্যারে" রেজিস্টার / ভেরিয়েবলের প্রিফিক্স সহ বাইনারি স্ট্রিং পুশ করুন
  8. গ্লোবাল অ্যারে বাছাই করুন। প্রিফিক্স স্ট্রিং, যা সাজানোর ক্রম নির্ধারণ করে তা নিশ্চিত করবে যে সবকিছু সঠিক ক্রমে শেষ হয়েছে এবং লাইনব্র্যাকগুলি সঠিক জায়গায় রয়েছে।
  9. গ্লোবাল অ্যারের প্রতিটি উপাদান থেকে উপসর্গ স্ট্রিং সরান
  10. "" দিয়ে অ্যারে যোগ দিন এবং এটি মুদ্রণ করুন।

আরও কিছু ছোট ছোট বিবরণ রয়েছে যা আপনি বর্ধিত কোডটিতে নীচে দেখতে পারবেন। একটি লাইনের শেষে ট্যাবগুলির পরে সমস্ত কিছুই একটি মন্তব্য এবং এড়ানো যায়। (এই মন্তব্য স্কীমটি 05AB1E এর অংশ নয়, যাইহোক, এটি দেখতে ভাল লাগছিল কারণ এটি ভাল লাগছিল) "লাইনগুলি" @ "দিয়ে শুরু হওয়া ডিবাগিং উদ্দেশ্যে রয়েছে এবং চূড়ান্ত আউটপুট পরিবর্তন না করে বাদ দেওয়া যেতে পারে।

„YY¾38×:                                        Replace "YY" with 38 0's. (y is the 34th character in the index, so need to add 34+4 = 38). ¾ is initialized to zero, which saves one byte from typing '038
'Yð:                                            Replace "Y" with " "                                
"Replaced input Stage1 = "?D,                   @DEBUG

žLR                                             Pushes [0-9A-Za-z]
DU                                              Set X to [0-9A-Za-z] and leave [0-9A-Za-z] on the stack.
s                                               Swap top two elements. Now the stack is [0-9A-Za-z],input

ð«                                              Append a space so the below splitter works even if there are no other spaces.
#                                               Split input on " ", which "Y" has been replaced with
ε                                               Map. This map replaces the y runs
    "Element = "?D,                             @DEBUG
    "N = "?N,                                   @DEBUG
    NĀi                                         If N != 0   
        "Replacing!",                           @DEBUG
        Dн                                      Get the first letter
        X                                       Push X
        s                                       Swap
        k                                       X (which is [0-9A-Za-z]) .indexOf(firstLetter)
        "indexOf run token = "?D,               @DEBUG
        4+                                      Add 4 to the index, now becoming the number of zeros to add
        s                                       Swap. Now top is the string between runs
        ¦                                       Remove the first character
        s                                       Swap again. Now the top is the number of zeros to add.
        ú                                       Add that many spaces (will be replaced with zeros later) to the start of the element.
        "Element Replaced = "?D,                @DEBUG
]
'W¾2×:                                          Need to do this replacement after the Y replacement so stuff like YW gets parsed properly. Again, ¾ is zero.
'X¾3×:
J                                               Join with ""
"Replaced input Stage2 = "?D,                   @DEBUG
'Z¶:                                            Replace "Z" with "¶".
.B                                              "Squarify" command. Splits on \n and appends spaces to the end of each element so each is the same length. In this case, that is equivalent to adding zeros to the end of each column, which is what we want.
ð¾:                                             Replace spaces (which we used for padding above) with zeros.
"Replaced input Stage3 = "?D,                   @DEBUG
"0 Stack top = "?D,                             @SDEBUG
"0 Stack top-1 = "?sD,s                         @SDEBUG
v                                               pop and loop over top element, which is array of column code
    NU                                          Store the column number in X
    yv                                          Loop over each character in the column              
        "1 Stack top = "?D,                     @SDEBUG
        "1 Stack top = "?D,                     @SDEBUG
        D                                       Duplicate top element (which is now [0-9A-Za-z])
        y                                       Push y (special loop variable)
        "Character = "?D,                       @DEBUG
        k                                       Push indexOf y in [0-9A-Za-z]
        "Index = "?D,                           @DEBUG
        "2.1 Stack top = "?D,                   @SDEBUG
        "2.1 Stack top-1 = "?sD,s               @SDEBUG
        D                                       Duplicate index.
        NX‚                                     Push [rowNumber,columnNumber]. This result is used for sorting.
        Š                                       Triple swap. The top of the stack is now sortPrefix, index, index
        32V                                     Set Y to 32
        Y‹i                                     index < 32. This uses up one copy of index
            Y+                                  Add 32 to the index
            b                                   Push the index in binary. This uses the second copy of index. 
            ¦                                   Remove the first character, which will be a 1 because we added 32. The result is now a padded binary string of length 5
            "Binary = "?D,                      @SDEBUG
            R                                   Reverse the binary string. This gives the proper transposed output. 
            X_i                                 This will only run if X (which is set to the column number) == 0. (Runs !X)
                ¶ì                              Stick a linebreak at the beginning of the binary string
            }
            "2.5 Stack top = "?D,               @SDEBUG
            "2.5 Stack top-1 = "?sD,s           @SDEBUG         
            ‚                                   At this point the top of the stack is sortPrefix,binaryString. This will combine the two into a list.
            "Pushing '"?D?"'",                  @DEBUG
            ˆ                                   Push [[rowNumber,columnNumber],binaryString] to global array
            "2.6 Stack top = "?D,               @SDEBUG
            "2.6 Stack top-1 = "?sD,s           @SDEBUG
        ]                                       Close all blocks
¯                                               Push global array

{                                               Sort global array. 
"Sorted Data = "?D,                             @DEBUG
€¦                                              Remove the sort prefix              
˜                                               Flatten. Before doing this, the array is in the format [[<binary string>],[<binary string>],[<binary string>],...]
J                                               Join with ""
'1'█:'0'.:                                      @DEBUG pretty print 

1
হ্যালো এবং পিপিসিজিতে আপনাকে স্বাগতম; খুব সুন্দর প্রথম পোস্ট! আপনার বাইট গণনা সম্পর্কে: আপনি ঠিক বলেছেন। টিআইও এমনকি সহজেই প্রদর্শন করে যে 148 টি অক্ষর 0581E কোড পৃষ্ঠা ব্যবহার করে 148 বাইট দ্বারা প্রতিনিধিত্ব করে।
জোনাথন ফ্রেচ

একটি ছোট নোট: বেশিরভাগ গল্ফিং ভাষা অন্তর্নিহিত মুদ্রণ প্রয়োগ করে; আমি মনে করি আপনি আপনার শেষটি বাদ দিতে পারেন ,
জোনাথন ফ্রেচ

আমি এটি সন্ধান করেছি এবং কিছু উন্নতি করেছি। 1000 টিরও বেশি সারি বা কলামযুক্ত জিনিসগুলির জন্য আচরণটি কেবল পৃথক (তাত্ত্বিকভাবে) হবে, সেই সময়ে ছোট প্রোগ্রামটি অপ্রত্যাশিতভাবে কিছু করবে।
করউইজি

শুরু করা সবচেয়ে সহজ চ্যালেঞ্জ নয়! খুব ভাল কাজ, আমি কল্পনা করি যে 05 এএবি 1 ই স্টালোয়ার্ট যখন কিছু আসে তখন তারা কিছু সহজ পয়েন্টার দেয়।
জনাথন অ্যালান

1
পিপিসিজি এবং 05AB1E এর বিশ্বে আপনাকে স্বাগতম। আমার এখনই এতটা সময় নেই, এবং আমি কয়েক মাস আগে কেবল 05AB1E ব্যবহার শুরু করেছি, তবে আমি এখনও কোনও প্রো এর বেশি নই, তবে এখানে গল্ফের জন্য কিছু ছোট জিনিস রয়েছে: "yy"হতে পারে „yy(05 এএবি 1 ই আছে) উভয় একটি 2-চর এবং 3-চর স্ট্রিং অন্তর্নির্মিত)। >≠হতে পারে Ā(সত্যায়িত, মূলত 0অবশেষ 0এবং সমস্ত কিছু হয়ে যায় 1)। }}হতে পারে ](সমস্ত লুপ এবং যদি-এলেসগুলি বন্ধ করুন)। আমি নিশ্চিত যে 05 এ বি 1 ই প্রো গল্ফাররা আমার চেয়ে আরও বেশি কিছু গল্ফ করতে সক্ষম, সম্ভবত এমনকি বাইট-কাউন্টও অর্ধেক করে দিতে পারে I'm
কেভিন ক্রুইজসেন

4

এপিএল (ডায়ালগ ইউনিকোড) , 87 80 77 67 63 বাইট

7 বাইট সংরক্ষণ করার জন্য এইচ.পি.উইজকে ধন্যবাদ এবং আরও 13 17 এর জন্য এনএনজি ।

a←⎕D,⎕A⋄,⍉↓⊖(5/2)⊤↑35(≠⊆⊢)a'Y.|W|X'R{'0'/⍨30 36|a2↑⍵.Match}⍞

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

এনবি: ইনপুটটিকে একটি বড় হাতের স্ট্রিং হিসাবে নিয়ে যায়।

সুন্দর মুদ্রিত আউটপুট সহ

ব্যাখ্যা

a←⎕D,⎕Aএকটি স্ট্রিং '0123...89ABCD...XYZ'
'Y.|W|X'⎕R{'0'/⍨+/30 36|a⍳2↑⍵.Match}সংশ্লিষ্ট নম্বর দিয়ে XW এবং Yx প্রতিস্থাপন '0'গুলি (আরো নীচে ব্যাখ্যা) 35(≠⊆⊢)a⍳মধ্যে indecies এর ভেক্টর মধ্যে স্ট্রিং পরিবর্তিত aএবং টুকরা 35(বড়) 'Z'একটি নেস্টেড ভেক্টর তৈরি
একটি ম্যাট্রিক্স প্যাডিং প্রান্ত রূপান্তরিত করে নেস্টেড ভেক্টর দিয়ে 0গুলি
(5/2)⊤প্রতিটি পরিবর্তন করে বাইনারি ভেক্টরে সংখ্যার ফলস্বরূপ বাইনারি ভেক্টরগুলির সাথে ত্রি-মাত্রিক ম্যাট্রিক্সের ফলে প্রাথমিক অক্ষের
সাথে প্রাথমিক অক্ষের বিপরীতে
ম্যাট্রিক্সের র‌্যাঙ্ক হ্রাস হয় সুতরাং এটি দ্বি-মাত্রিক
,⍉যথাযথ ফলাফলকে পুনরায় আকার দেয়

'Y.|W|X'R{'0'/⍨30 36|a2↑⍵.Match}
'Y.|W|X'R                          Regular expression replace. mathing the string.
                        2↑⍵.Match   Takes matching string (either 'X' 'W' or 'Y.') and pads with spaces to length 2
                      a            Returns the indecies of each charactor in a. on the spaces this is 36 (length of a)
                30 36|              Takes the remainders of the indecies when divided by 30 and 36 respectively. Overall 'W' -> 'W ' -> 32 36 -> 2 0, 'Y2' -> 'Y2' -> 34 2 -> 4 2.
           '0'/⍨                    Make vector of repeating '0's with length equal to the sum of the result. '0'/⍨4 2  '000000'

এখানে 7 বাইট সংরক্ষণ হল: a←⎕D,⎕A⋄,↓↑{⊖(5/2)⊤a⍳⍵}¨'Z'(≠⊆⊢)('Y.|W|X'⎕R{'0'/⍨{0::2+'WX'⍳⍵⋄4+a⍳1⊃⍵}⍵.Match})⍞। ত্রুটি ধরাটি খুব চটজলদি বলে মনে হয় না
এইচ.পি.উইজ

ধন্যবাদ @ এইচ.পি.উইজ। হ্যাঁ আমি ত্রুটিটি ধরা ধরা পছন্দ করি না তবে অন্যথায় আমি দুটি রেজেক্স প্রতিস্থাপন ব্যবহার করছিলাম।
jslip

@jslip চারপাশের প্রথম বন্ধনী ⎕Rএবং এর ক্রিয়াকলাপগুলি অপ্রয়োজনীয়
এনজিএন

2+'WX'⍳⍵->2+'X'=⍵
এনজিএন

{0::2+'X'=⍵⋄4+a⍳1⊃⍵}⍵.Match->30 36|a⍳2↑⍵.Match
ngn

3

পার্ল 6 ,156 142 বাইট

14 বাইট জো কিংকে ধন্যবাদ রক্ষা করেছে। (এছাড়াও পার্স করার সাথে একটি সামান্য বাগ সংশোধন করে yএকটি প্রাক্টেটিফায়ার যুক্ত করা হয়েছে))

এর বাগি পার্সিং স্থির করে y[wxy]

{s:g/y(.)/000{0 x:36(~$0)}/;s:g/x/w0/;s:g/w/00/;s/$/z/;map {
.flatmap:{:32($_).fmt("%05b").flip.comb}},[Z] .split("z").map: (*~0 x.chars).comb}

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

পাঠ্যটিকে স্ক্রিনে ফিট করার জন্য লাইন ব্রেক রয়েছে। এটি প্রোগ্রামের অংশ নয়।

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

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

ইনপুট স্ট্রিংটি ভেরিয়েবলের মধ্যে আসে $_। বিভিন্ন সংখ্যক শূন্যের জন্য সেই সমস্ত শর্টহ্যান্ড থেকে পরিত্রাণ পেতে আমরা এর উপরে একাধিক বিকল্প প্রতিবেদন ব্যবহার করে শুরু করি। প্রথমত, আমরা বাছা প্রয়োজন yকারণ ক্ষেত্রে, yxবা yw, w(অথবা x) নিজে একটি সাঁটে লেখার গঠন করে না। আমরা অনুসন্ধান করি y(.)( yএবং একটি চরিত্র, যা এটি মনে রাখে) এবং এটিকে দ্বারা প্রতিস্থাপন করুন 000{"0"x:36(~$0)}: তিনটি শূন্যটি অনুলিপি করা হয় ভারব্যাটিয়াম, তারপরে আমরা পরবর্তী অক্ষরটিকে বেস ৩ from থেকে বেস ১০ ( :36(~$0)) রূপান্তর করি এবং আরও অনেক শূন্য যোগ করি। এর পরে, আমরা প্রতিস্থাপন w'ব্যবহার গুলি s:g/w/00/, এবং x' s ব্যবহার s:g/x/000/। অবশেষে, এর সাথে s/$/z/, আমরা একটি যুক্ত করবzশেষের দিকে, নীচে খালি লাইনগুলির একটি সম্পূর্ণ যোগ করুন। (আমরা কারণটি পরে দেখব।)

বাকিটি কেবল একটি বড় মানচিত্রের বিবৃতি। আমরা ম্যাপিং করছি .split("z").map: (*~0 x.chars).comb}), যা ইনপুট স্ট্রিং (শূন্য শর্টহ্যান্ড ব্যতীত) লাইনগুলিতে বিভক্ত হয়ে zপ্রতিটি লাইনটি প্রথমে প্যাডযুক্ত 0 x.chars(টন জিরো , যথা ইনপুট স্ট্রিংয়ের মোট দৈর্ঘ্য যতগুলি) এবং তারপরে স্বতন্ত্র অক্ষরগুলির তালিকা ( .comb) ( অবশেষে, আমরা এটিকে স্থানান্তরিত করি [Z](জিপ দিয়ে হ্রাস করুন)। সংক্ষিপ্ত তালিকাটি হ্রাস হওয়ার সাথে সাথে জিপিং শেষ হয়, যার ফলস্বরূপ সমস্ত লাইনের সমান দৈর্ঘ্য রয়েছে। (ডানদিকে অপ্রয়োজনীয় ট্রেলিং শূন্যের সংখ্যা সবচেয়ে ছোট লাইনের দৈর্ঘ্যের সমান Also এছাড়াও, এই স্থানান্তর ট্রিকটি শুধুমাত্র একটি সারি সহ "ম্যাট্রিক্স" এর জন্য ব্যর্থ হয় That's এজন্য আমরা আগে জোর করে অন্য সারি যুক্ত করেছি))

এখন, আমরা কেবল সারিগুলিতে ম্যাপ করব (মূল ম্যাট্রিক্সের কলামগুলি) এবং প্রতিটি অক্ষরকে সংশ্লিষ্ট 5 টি বিট দিয়ে প্রতিস্থাপন করব। এটি :32($_)(বেস 32 থেকে বেস 10 পর্যন্ত) .fmt("%05b")(জিরো দিয়ে প্যাডযুক্ত প্রস্থ 5 এর বিটস্ট্রিং হিসাবে ফর্ম্যাট ) ব্যবহার করে করা হয় ( .flipস্ট্রিংটি বিপরীত করুন, কারণ এলএসবি নীচে নয় শীর্ষ সারিতে রয়েছে) .comb(একটি স্ট্রিংকে তালিকায় বিভক্ত করুন চরিত্র). আমরা ব্যবহার করেছি .flatmap, যা ফলাফলের তালিকাটিকে সমতল করে তোলে (অন্যথায় আমরা প্রতিটি কলামে তালিকার একটি তালিকা পেতে পারি)। ফলাফলটি স্থানান্তরিত করার পরে স্পষ্টতই ফিরে আসে।

(এত শক্ত জিরো পেরিয়ে যাওয়ার সম্ভাবনাটি অপব্যবহারের কারণে আমি কিছুটা খারাপ অনুভব করছি But



@ জোকিং - ওহ হ্যাঁ, আপনাকে অনেক ধন্যবাদ!
রামিলিজ

1yx1এবং এর জন্য ব্যর্থ1yw1
জোনাথন অ্যালান

@ জোনাথান অ্যালান, আপনি ঠিক বলেছেন, ধন্যবাদ আমি এক মুহুর্তে এটি ঠিক করব। (আমি প্রথম কোনও কারণেই ভেবেছিলাম যে কেবল সেখানেই হতে পারে y[0-9a-v]এবং যখন আমি জানতে পারি যে এটি ঘটেনি, তখন আমি কেবল একটি দ্রুত (এবং ভুল) সংশোধন করেছি))
রমিলিস

আপনি 000y প্রতিস্থাপনে এর সাথে প্রতিস্থাপন করতে পারেনx
জো কিং

2

জেলি , 66 বাইট

Yowza!

ØBiⱮ+
Œuœṣ⁾YYj38Żṣ”YµḢç3;)Fṣ”Wj2ṣ”Xj3”0ẋ$¹OƑ?€Fṣ”Zµȯ”0ç31BḊ€UZ)Ẏz0

একটি মোনাডিক লিঙ্ক যা তালিকার তালিকার হিসাবে ট্রান্সপোজোজিত সংস্করণ দেয় Zback ( ফিরে স্থানান্তর করতে শেষে যুক্ত করুন )।

এটি অনলাইন চেষ্টা করুন! অথবা পরীক্ষা-স্যুটটি দেখুন (বেশিরভাগ মুদ্রিত আউটপুট সহ)।


2

রেটিনা , 203 বাইট

y(.)
#$1
{`#
0#
#0
000
)T`dl`_dl`#.
w
000
x
00
z
¶
%(`.+
$&¶$&¶$&¶$&¶$&
T`g-v`#`.+$
T`dl` `.+$
T`g-v`dl
T`89l`#`.+¶.+$
T`d` `.+¶.+$
T`89l`d
T`d`    #`.+¶.+¶.+$
T`4-7`d
T`d`  #`.+¶.+¶.+¶.+$
)T`d` # #
P`.+

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। বিকল্প সমাধান, এছাড়াও 203 বাইট:

y(.)
#$1
{`#
0#
#0
000
)T`dl`_dl`#.
w
000
x
00
z
¶
%(`.+
$&¶$&
T`g-v`#`¶.+
T`dl` `¶.+
T`g-v`dl
^.+
$&¶$&
T`89l`#`¶.+
T`d` `¶.+
T`89l`d
^.+
$&¶$&
T`d`    #`¶.+
T`4-7`d
^.+
$&¶$&
T`d`  #`¶.+
)T`d` # #
P`.+

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। ব্যাখ্যা:

y(.)
#$1

প্রথমে yকমান্ডের বিশ্রী মামলাটি পরিচালনা করুন । দুঃখের বিষয় হচ্ছে এর পরের চিঠিটি একটি yবা এমনকি একটি হওয়ার অনুমতি দেওয়া হয়েছে z, সুতরাং আমাদের এখানে সাবধানতা অবলম্বন করতে হবে। সমস্ত ম্যাজিক yগুলি প্রথমে এস-এ পরিণত হয় #

{`#
0#
#0
000
)T`dl`_dl`#.

একটি লুপ তারপরে প্রসেস করে #। প্রথমত, 0একটিতে সংশোধন করা হয় #। এটি যদি #0এমন হয় তবে এতে পরিবর্তন করা হয় 000যা অপারেশন সম্পূর্ণ করে, অন্যথায় এর পরে অক্ষর #হ্রাস হয়ে যায় এবং লুপটির পুনরায় পুনরায় পুনঃস্থাপন করা হয় যতক্ষণ না সমস্তগুলি #প্রক্রিয়া করা হয়।

w
000
x
00

ঠিক ws এবং xগুলি।

z
¶

নতুন লাইনে বিভক্ত। ( S`zএকই বাইট গণনা জন্য কাজ করে।)

%(`.+
$&¶$&¶$&¶$&¶$&
T`g-v`#`.+$
T`dl` `.+$
T`g-v`dl
T`89l`#`.+¶.+$
T`d` `.+¶.+$
T`89l`d
T`d`    #`.+¶.+¶.+$
T`4-7`d
T`d`  #`.+¶.+¶.+¶.+$
)T`d` # #

প্রতিটি লাইনের 5 টি অনুলিপি তৈরি করুন, তারপরে যথাযথ বিট দিয়ে অক্ষরগুলি ম্যাপিং করে #সেই বিটটি সাফ করে বাইনারি রূপান্তর সম্পাদন করুন , অন্য অক্ষরগুলি ফাঁক হয়ে যায়। বিটগুলি 16, 8, 4, 2 ক্রমে প্রক্রিয়া করা হয় এবং তারপরে শেষ অনুবাদটি 2বিটটি সাফ 1করে একই সাথে বিটকে রূপান্তর করে । (বিকল্প সংস্করণ প্রতিটি অনুলিপি পৃথকভাবে তৈরি করে যার জন্য আরও বেশি বাইট খরচ হয় তবে সেগুলি সংরক্ষণ করা হয় কারণ বিট হ্যান্ডলিংটি সরল করা হয়েছে))

P`.+

সমস্ত লাইন একই দৈর্ঘ্যে প্যাড করুন।


1

পাইথন 2 , 249 244 বাইট

def f(s,Z='0'):
 while'y'in s:i=s.find('y');s=s[:i]+4*Z+Z*int(s[i+1],36)+s[i+2:]
 t=s.replace('w',2*Z).replace('x',3*Z).split('z');return map(''.join,zip(*[[(Z*5+bin(int(c,32))[2:])[:-6:-1]for c in r]+[Z*5]*(max(map(len,t))-len(r))for r in t]))

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

জোনাথন ফ্রেচের 5 টি বাইট সংরক্ষণ করেছেন ।


একটি অতিরিক্ত অতিরিক্ত স্থান আছে while 'y'in। আমি মনে করি সাবস্ক্রিপ্টটি [-5:][::-1]গল্ফ করা যেতে পারে [:-6:-1]। রিটার্নের স্টেটমেন্টটি আগের লাইনে রাখা যেতে পারে।
জোনাথন ফ্রেচ 6'18

1

জাভাস্ক্রিপ্ট (ES8), 192 বাইট

s=>[...s,"z"].map(c=>{h=parseInt(c,36);k="wxy".search(c)+1;y?k=h-y--:h-35?y=h>33:m=m.map(P,z+=5,i=k--);for(h=k?0:h;~k--;m[i]=h.toString(2)+P(m[i++]||""));},P=d=>d.padStart(z,0),m=[i=z=y=0])&&m

ট্রান্সপোজ ফিরিয়ে দেয় ... যা তখন উলম্ব অক্ষ জুড়ে প্রতিফলিত হয়; যদি এই এন্ট্রিটিকে অবৈধ করে দেয় তবে আমাকে জানান। আউটপুট হ'ল 0এস এবং গুলিযুক্ত স্ট্রিংগুলির একটি অ্যারে 1

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

ব্যাখ্যা

প্রতিটি চরিত্রের জন্য c, k+1সংশোধন করার জন্য সারিগুলির সংখ্যাটি মূল্যায়ন করে। k = "wxy".search(c) + 1;, যেখানে searchপদ্ধতিটি সূচকটি দেয় বা -1kতখন এটি হ্রাস করা হয় যতক্ষণ না এটি সত্য সত্যের জন্য -1পরীক্ষা করে পৌঁছায় ~k--

যদি বর্তমান অক্ষরটি "y" হয়, একটি পতাকা সেট করুন যাতে পরবর্তী অক্ষরের বেস -36 মান - 1 এর মান হয়ে যায় k

একটি "জেড" এর মুখোমুখি হওয়ার পরে, বামদিকে প্যাড স্ট্রিংগুলি, প্যাডের পরিমাণ বাড়িয়ে দিন 5এবং অ্যারে সূচকটি পুনরায় সেট করুন 0

s =>
    [...s, "z"].map(c => {                  // append a "z" to ensure final output is properly padded
        h = parseInt(c, 36);
        k = "wxy".search(c) + 1;            // note that "y" -> 4 zeroes
        y                                   // if previous char is "y"...
            ? k = h - y--                   //      decrement y after subtracting y=1 since k is decremented to -1 and the previous y already pushed 4 zeroes
        : h - 35                            // else if current char is not "z"...
            ? y = h > 33                    //      set y if current char = "y"
        : m = m.map(P, z += 5, i = k--);    // else if current char is "z", pad
        for (
            h = k ? 0 : h;                  // if k is truthy, push zeroes
            ~k--;
            m[i] = h.toString(2)            // convert to boolean representation
                + P(m[i++] || "")           // prepend to row or to a newly padded row
        );
    },
        P = d => d.padStart(z, 0),
        m = [i = z = y = 0]                 // the logical OR 4 lines above replaces this value with ""
    ) &&
    m

আমি মনে করি ইনপুটটির ট্রান্সপোজ ফিরিয়ে না দেওয়া আরও অর্থবোধ করবে।
mbomb007

1

হাস্কেল, 399 বাইট

splitপ্যাকেজ ইনস্টল করুন :cabal install split

import Data.Char
import Data.List.Split
import Data.List
p=map
r=replicate
a c|47<c&&c<58=c-48|96<c&&c<123=c-87
o=a.ord
m l n|l==0=[]|True=(mod n 2):m(l-1)(div n 2)
t a=p(\l->l++r((maximum$p length a)-length l)'0')a
y s|length s==0=""|h=='y'=(r(4+(o$s!!1))'0')++y(drop 2 s)|h=='w'="00"++y t|h=='x'="000"++y t|True=h:y t where h=head s;t=tail s
w=(p concat).transpose.(p$p$(m 5).o).t.(splitOn "z").y
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.