আমি যখন ডকুমেন্টেশন, মন্তব্য ইত্যাদি লিখি তখন আমি ASCII টেবিল বানাতে পছন্দ করি। এগুলি সাধারণত বেশ ভাল দেখায়, তবে আমি সর্বদা অনুভব করি যে তারা আরও ভাল দেখতে পারে - বিশেষত যেহেতু ইউটিএফ -8 / ইউনিকোডে বক্স অঙ্কনের অক্ষর রয়েছে । যাইহোক, এই অক্ষরগুলি ব্যবহার করা খুব ভারী ens তোমার কাজ? এমন একটি প্রোগ্রাম বা একটি ফাংশন লিখুন যা ASCII টেবিলগুলি স্বয়ংক্রিয়ভাবে ইউটিএফ -8 / ইউনিকোড সমতুল্যে রূপান্তর করতে পারে।
এই চ্যালেঞ্জটি স্যান্ডবক্সযুক্ত ছিল ।
চ্যালেঞ্জ
একটি প্রোগ্রাম লিখুন, যা ইনপুট স্ট্রিং হিসাবে কোনও ASCII টেবিল দেয়, ইউনিকোড / ইউটিএফ -8 বক্স অঙ্কনের অক্ষরগুলির সাথে টেবিলটিকে আবার রঙ করে। বিশেষত, টেবিলের একটি অংশ এমন অক্ষরগুলি অনুবাদ করা উচিত:
(Unicode, 3 bytes each in UTF-8)
- to ─ (\u2500)
| to │ (\u2502)
= to ═ (\u2550)
and + to one of:
┌ (\u250C), ┐ (\u2510), └ (\u2514), ┘ (\u2518),
├ (\u251C), ┤ (\u2524), ┬ (\u252C), ┴ (\u2534),
┼ (\u253C)
or, if '=' on either side:
╒ (\u2552), ╕ (\u2555), ╘ (\u2558), ╛ (\u255D),
╞ (\u255E), ╡ (\u2561), ╤ (\u2564), ╧ (\u2567),
╪ (\u256A)
বিস্তারিত
ইনপুট / আউটপুট:
- ডিফল্ট আই / ও অনুমোদিত
- স্ট্রিং হিসাবে টেবিল বা টেবিলযুক্ত কোনও ফাইলের পথ সহ আপনি যেকোন যুক্তিসঙ্গত বিন্যাসে ইনপুট নিতে পারেন।
- আপনি কোনও ফাইলে আউটপুট দিতে পারেন এবং অতিরিক্ত যুক্তি হিসাবে ফাইলটির নাম নিতে পারেন।
- তবে আপনি ইনপুট ফাইলটি পরিবর্তন করতে পারবেন না । (এটি ভবিষ্যতের সম্পাদনা সহজ করার জন্য বজায় রাখা উচিত)
ইনপুট:
- আপনি ধরে নিতে পারেন যে ইনপুটটির প্রতিটি সারি একই দৈর্ঘ্যের জন্য প্যাড করা হয়েছে
। - আপনি ধরে নিতে পারেন না যে একটি নতুন লাইনের পরে প্রথম অক্ষরটি টেবিলের সীমানার অংশ (যেমন এটি সাদা অংশ হতে পারে)।
- ইনপুটটিকে বৈধ সারণী হিসাবে বিবেচনা করা হয় যদি সমস্ত অক্ষর (যা টেবিলের একটি অংশ)
-=|ঠিক দুটি অক্ষরের+সাথে সংযুক্ত থাকে এবং কমপক্ষে একটি অক্ষরের সাথে অনুভূমিক এবং উল্লম্বভাবে সংযুক্ত থাকে। - আপনার প্রোগ্রামটি বৈধ ইনপুটগুলির সাথে কোনও ত্রুটি তৈরি করতে পারে না।
- যদি ইনপুটটি বৈধ না হয় তবে আচরণটি সংজ্ঞায়িত এবং আপনি কোনও আউটপুট উত্পাদন করতে পারেন।
- ইনপুটটিতে বাক্স অঙ্কনের অক্ষরগুলি সহ যে কোনও ইউটিএফ -8 অক্ষর থাকতে পারে।
আউটপুট:
-=|+সারণীর অংশ নয় এমন যে কোনও অক্ষর যেমন রয়েছে তেমনি রেখে দেওয়া উচিত ।- একইভাবে, অন্য কোনও অক্ষর যেমন রয়েছে তেমনি রেখে দেওয়া উচিত।
- একটি একক শীর্ষস্থানীয় এবং / অথবা নতুন লাইন অনুমোদিত।
অন্য:
- স্ট্যান্ডার্ড লুফোলগুলি যথারীতি নিষিদ্ধ।
- যদি আপনার পছন্দের ভাষার কোনও বিল্ট-ইন থাকে যা এই সমস্যাটি সমাধান করে, আপনি এটি ব্যবহার করতে পারবেন না।
- এর অর্থ এমন প্রোগ্রাম, ফাংশন, সাবরুটাইন বা নির্দেশাবলী যা এই চ্যালেঞ্জের জন্য কোনও সংযোজন ছাড়াই বৈধ সাবমিশন হবে।
- এই চ্যালেঞ্জটিতে প্রয়োজনীয় প্রতিটি অক্ষর তিনটি বাইট দীর্ঘ হয় যখন তারা ইউটিএফ -8 এ এনকোড থাকে।
সংযুক্ত অক্ষর :
একটি চরিত্র অন্যটির সাথে সংযুক্ত থাকে, যদি:
- এটি
|সরাসরি এবং উপরে বা নীচে+বা|; - এটি
-সরাসরি এবং আগে বা পরে+বা পরে-; - এটি
=সরাসরি এবং আগে বা পরে+বা পরে=; - এটা
+সরাসরি উপরে অথবা নিচে|বা+, বা আগে বা পরে সরাসরি-,=বা+।
একটি অক্ষরকে টেবিলের একটি অংশ হিসাবে বিবেচনা করা হয়, যদি এটি কোনও চরিত্রের সাথে সংযুক্ত থাকে যা টেবিলের একটি অংশ। সংজ্ঞা অনুসারে, +ইনপুটটিতে প্রথমটি সারণির একটি অংশ।
উদাহরণ
একটি অনুলিপি-গতযোগ্য সংস্করণ হিসাবে এখানে উদাহরণ উপলব্ধ ।
Input: Output:
+------------------+ ┌──────────────────┐
| Hello+World! | │ Hello+World! │
+==================+ ╞══════════════════╡
| This is+my first | -> │ This is+my first │
|+-+ code|golf +-+| │+-+ code|golf +-+│
|+-+chall|enge! +-+| │+-+chall|enge! +-+│
+------------------+ └──────────────────┘
+===+===+===+ ╒═══╤═══╤═══╕
| 1 | 2 | 3 | │ 1 │ 2 │ 3 │
+---+===+===+===+ ┌───╪═══╪═══╪═══╡
| 1 | 1 | 2 | 3 | │ 1 │ 1 │ 2 │ 3 │
+---+---+---+---+ -> ├───┼───┼───┼───┤
| 2 | 2 | 4 | 6 | │ 2 │ 2 │ 4 │ 6 │
+---+---+---+---+ ├───┼───┼───┼───┤
|-3 |-3 |-6 |-9 | │-3 │-3 │-6 │-9 │
+===+---+---+---+ ╘═══╧───┴───┴───┘
+-----+ -> <Undefined>
+-----+ -> ┌─────┐
+-----+ └─────┘
+-----------------+
| Hello, World! |
| This is invalid | -> <Undefined>
| input |
-----------------+
++++ ┌┬┬┐
++++ -> ├┼┼┤
++++ └┴┴┘
+--+
++++ -> <Undefined>
+--+
অবশেষে ...
এটি কোড-গল্ফ , তাই সর্বনিম্ন পরিমাণ বাইট জিততে পারে। শুভ গল্ফিং!
Hello Worldটেবিলটি বোঝাতে চান তবে অভ্যন্তরীণ সারণীগুলি একটি টেবিল গঠন হিসাবে বিবেচিত হবে না কারণ সারণীর অভ্যন্তরীণ পাঠ্যটি অবশ্যই অপরিবর্তিত থাকবে এবং সেগুলি সঠিকভাবে সংযুক্ত না হওয়ায় সেগুলি বাইরের সারণির সীমানার অংশ হিসাবে বিবেচিত হবে না।
+-+অংশগুলি কেন সংযুক্ত টেবিল গঠনের জন্য বিবেচনা করা হয় না?