ASCII শিল্পকে ইটালিকাইজ করুন


32

কোনও ASCII আর্ট চিত্রের একটি ইনপুট দেওয়া হয়েছে, ASCII আর্টটিকে তাত্ক্ষণিকভাবে আউটপুট দিন।

এএসসিআইআই শিল্পকে তির্যক করা:

  1. শেষ লাইনের আগে শূন্যস্থান ,োকান, দ্বিতীয়-শেষ লাইনের আগে একটি স্থান, তৃতীয়-শেষ লাইনের আগে দুটি স্থান ইত্যাদি,

  2. যে কোনও অতিরিক্ত নেতৃস্থানীয় হোয়াইটস্পেস তৈরি করা হয়েছে তা সরান। এটি হ'ল, যদি প্রতিটি লাইনের কমপক্ষে nপূর্ববর্তী স্থান থাকে তবে প্রতিটি লাইনের nশুরু থেকে ফাঁকা স্থান সরিয়ে ফেলুন ।

  3. সব প্রতিস্থাপন \সঙ্গে গুলি |, সমস্ত |সঙ্গে গুলি /, এবং সমস্ত /সঙ্গে গুলি _। বিদ্যমান বিদ্যমান _একই রাখুন ।

    ইনপুটটি কেবলমাত্র অক্ষর \|/_এবং স্থান ধারণের গ্যারান্টিযুক্ত ।

উদাহরণস্বরূপ, ইনপুট

/\/\/\    /\/\/\      /\/\/\    /\/\/\
 /\    /\  /\    /\  /\        /\
  /\/\/\    /\/\/\    /\        /\  /\/\
   /\        /\        /\        /\    /\
    /\        /\          /\/\/\    /\/\/\

আউটপুট অবশ্যই

_|_|_|    _|_|_|      _|_|_|    _|_|_|
_|    _|  _|    _|  _|        _|
_|_|_|    _|_|_|    _|        _|  _|_|
_|        _|        _|        _|    _|
_|        _|          _|_|_|    _|_|_|

যা পরিবর্তে ইনপুট, আউটপুট হিসাবে সরবরাহ করা হয়

    _/_/_/    _/_/_/      _/_/_/    _/_/_/
   _/    _/  _/    _/  _/        _/
  _/_/_/    _/_/_/    _/        _/  _/_/
 _/        _/        _/        _/    _/
_/        _/          _/_/_/    _/_/_/

যা আউটপুট হবে

        ______    ______      ______    ______
      __    __  __    __  __        __
    ______    ______    __        __  ____
  __        __        __        __    __
__        __          ______    ______

ইনপুট এবং আউটপুট একক স্ট্রিং (alচ্ছিক ট্রেলিং নিউলাইন সহ) বা লাইনের একটি অ্যারে হতে পারে।

যেহেতু এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জিতবে।

অতিরিক্ত পরীক্ষার কেস:

|||||
  /////
 \\\\\
   _____
 /////
  _____
|||||
 _____


________
________


(এটি, খালি স্ট্রিংয়ের ফলাফল ইন ফাঁকা স্ট্রিংয়ের ফলাফল দেয়)


আমরা কি ধরে নিতে পারি যে ইনপুটটি একটি আয়তক্ষেত্রে প্যাড করা আছে?
মার্টিন ইন্ডার

2
প্রতিটি আউটপুট লাইনে ট্রেলিং স্পেসগুলি গ্রহণযোগ্য?
লুইস মেন্ডো

@ মার্টিনবাটনার হ্যাঁ, আপনি পারেন।
ডুরকনব

@ ডোনমুসলি ট্রেলিং স্পেসগুলি ঠিক আছে, কেবল কোনও শীর্ষস্থানীয় স্থান নেই।
ডুরকনব

আমরা কি আয়তক্ষেত্রাকার অ্যারে (ম্যাট্রিক্স) হিসাবে ইনপুট নিতে পারি?
অ্যাডাম

উত্তর:


6

সিজেম, 43 38 বাইট

qN/W%eeSf.*:sW%z_{S-}#>zN*"\|/__"_(+er

একটি আয়তক্ষেত্রটি প্যাড করতে ইনপুট প্রয়োজন।

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

ব্যাখ্যা

qN/     e# Read input, split into lines.
W%      e# Reverse lines.
ee      e# Enumerate them (pairing each line with its index starting from 0).
Sf.*    e# Turn each index i into i spaces.
:s      e# Flatten each pair into a single string, prepending the spaces.
W%      e# Reverse the lines again.
z_      e# Transpose the character grid, duplicate it.
{S-}#   e# Find the first row index that contains non-spaces.
>       e# Discard that many rows.
zN*     e# Transpose back and join with linefeeds.
"\|/__" e# Push this string.
_(+     e# Make a copy that's rotated one character to the left, i.e. "|/__\".
er      e# Perform character transliteration mapping from the first string to the second.

উপাখ্যানীয়, তবে আমি প্রশ্ন থেকে পিসিসিজি উদাহরণ দিয়ে চেষ্টা করেছি, প্রতিটি আউটপুটকে প্রোগ্রামে ফিরিয়ে দিয়েছি, তবে কোনও আয়তক্ষেত্রের প্যাডিং ছাড়াই। ভাল কাজ করেছেন।
অ্যালেক্সওয়ালচান

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

4

পাইথ, 32

jCf|Z=Z-Td.t_.e+*kd.rb"\|/__"_Qd

এখানে এটি ব্যবহার করে দেখুন বা টেস্ট স্যুটটি চালান

প্রতিটি লাইনের বেশ কয়েকটি ট্রেলিং স্পেস রয়েছে। এটি প্রয়োগ করে কাজ করে .rযা স্ট্রিংয়ের প্রতিটি লাইনে অন্তর্নির্মিত ঘূর্ণন। ঘূর্ণন স্ট্রিংয়ের প্রতিটি অক্ষরকে নিয়ে যায় যা অন্য যুক্তির সাথে একটির সাথে মেলে "\|/__"এবং পরবর্তী অক্ষরটির সাথে এটি প্রতিস্থাপন করে। ডাবল আন্ডারস্কোর সুন্দরভাবে আন্ডারস্কোরগুলিকে ব্যাকস্ল্যাশ হয়ে যাওয়া থেকে বাধা দেয়। স্ট্রিংগুলিও তাদের সূচকের ভিত্তিতে প্যাড করা হয়।

এটি হয়ে গেলে, লাইনগুলি একসাথে জিপ করা হয়, তারপরে আমরা প্রতিটি কলামে ফিল্টার আউট করে থাকি যেখানে কেবল স্পেস থাকে, যতক্ষণ না তার একটি না করে। তারপরে আমরা আনজিপ করে নতুন লাইনে যোগদান করি।


4

এমএটিএল , 38 33 29 বাইট

P"NZ"@Y:'\|/' '|/_'XEh]XhPcYv

দীর্ঘতম লাইনের সাথে মেলে আউটপুট লাইনের পিছনে স্থান রয়েছে (এটি চ্যালেঞ্জের দ্বারা অনুমোদিত)।

ইনপুট স্ট্রিংগুলির একটি সেল অ্যারে (তালিকা)। অ্যারেটি কোঁকড়া ধনুর্বন্ধনী ব্যবহার করে, এবং স্ট্রিংগুলি একক উদ্ধৃতি ব্যবহার করে, ( এটি অনলাইনে চেষ্টা করার জন্য প্রতিটি লিঙ্কে ক্লিক করুন! )।

ব্যাখ্যা

অ্যারে প্রাথমিকভাবে উল্টানো হয়। প্রতিটি স্ট্রিং একটি লুপে প্রক্রিয়াজাত হয় এবং পরিবর্তিত স্ট্রিংটি স্ট্যাকের দিকে ঠেলে দেওয়া হয়। প্রসেসিংটি অক্ষরগুলি প্রতিস্থাপন এবং বিভিন্ন স্থান জুড়ে থাকে। শূন্যস্থানের সংখ্যা স্ট্যাকের উপাদানগুলির বর্তমান সংখ্যার সমান (অ্যারেটি উল্টানো হয়েছে বলে ধন্যবাদ)।

লুপের পরে স্ট্রিংগুলি একটি অ্যারেতে সংগ্রহ করা হয়, যা পিছনে উল্টানো হয়, 2D চর অ্যারে রূপান্তরিত হয় এবং অবাঞ্ছিত নেতৃস্থানীয় স্থানগুলি নিষ্পত্তি করে: 2D চর অ্যারের সমস্ত সারিতে উপস্থিত নেতৃস্থানীয় স্পেস।

P             % implicitly input cell array of strings. Flip it (reverse order)
"             % for each
  NZ"         %   string with as many spaces as elements there are on the stack
  @Y:         %   push current input string
  '\|/'       %   push string: origin for replacement
  '|/_'       %   push string: target for replacement
  XE          %   replace
  h           %   concatenate string with spaces and modified-character string
]             % end for each
Xh            % collect all processed strings in a cell array
P             % flip back to restore original order
c             % convert to 2D char array
Yv            % remove trailing spaces common to all rows. Implicitly display

2

জাভাস্ক্রিপ্ট (ES6), 171 149 148 বাইট

a=>a.map(s=>(t=' '.repeat(--i)+s,l=t.match` *`[0].length,n=l<n?l:n,t),n=i=a.length).map(s=>s.slice(n).replace(/./g,c=>"|/__ "["\\|/_ ".indexOf(c)]))

স্ট্রিংগুলির অ্যারে হিসাবে লাইনগুলি গ্রহণ করে এবং প্রদান করে।

সম্পাদনা করুন: @ ব্যবহারকারী81655- তে 22 বাইট সংরক্ষণ করা হয়েছে। ইনপুটটি 5 টি অক্ষর \|/_এবং স্পেসের মধ্যে সীমাবদ্ধ তা বুঝতে পেরে 1 বাইট সংরক্ষণ করা হয়েছে।


replaceগুলি একত্রিত হতে পারে .replace(/[\\|/]/g,m=>"|/_"["\\|/".indexOf(m)]), match(/ */)হতে পারে match` *`, প্রথম দুটি mapগুলি একত্রিত করা যেতে পারে a.map(s=>(t=' '.repeat(--i)+s,(l=t.match` *`[0].length)<n?n=l:l,t),..., বহিরাগত বন্ধনী ( (a=...)) এখন সরানো যেতে পারে। 149 বাইট:a=>a.map(s=>(t=' '.repeat(--i)+s,(l=t.match` *`[0].length)<n?n=l:l,t),n=i=a.length).map(s=>s.slice(n).replace(/[\\|/]/g,m=>"|/_"["\\|/".indexOf(m)]))
ব্যবহারকারী 81655

@ ব্যবহারকারী 81655 বাহ, ধন্যবাদ! (তারপরে আমি আপনার বাইট বন্ধ করে কিছুটা নষ্ট করে দিয়েছি replace))
নীল

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.