অনুভূমিকভাবে সংযুক্ত ASCII আর্ট


20

আপনার কাজটি হ'ল ইনপুট দুটি "এএসসিআইআই আর্ট" এর হিসাবে গ্রহণ করা, এবং প্রতিটি শিল্পের খণ্ডকে অনুভূমিকভাবে সারিবদ্ধ করুন।

উদাহরণস্বরূপ, বলুন আপনার দুটি স্ট্রিং রয়েছে "abc\ndef"এবং "123\n456"। স্ট্রিংটি তৈরি করতে আপনাকে তাদের আনুভূমিকভাবে সারিবদ্ধ করতে হবে "abc123\ndef456"আমি এটিকে" অনুভূমিকভাবে প্রান্তিককরণ "বলছি কারণ ইনপুটগুলি যখন মুদ্রিত হয় তখন এ জাতীয় চেহারা:

abc
def

এবং:

123
456

আউটপুটটি যখন মুদ্রিত হবে তখন এটিকে দেখতে পাবেন:

abc123
def456

একটি ইনপুট অন্যটির পাশে কীভাবে স্থাপন করা হয়েছে তা লক্ষ্য করুন।


ইনপুট

  • ইনপুটটি স্ট্রিং হবে এবং এটি দুটি পৃথক যুক্তি বা স্ট্রিংয়ের ক্রম হিসাবে হতে পারে।
  • চারুকলার চরিত্রগুলির মধ্যে 32-126 (অন্তর্ভুক্ত) সীমাতে দশমিক কোড থাকবে।
  • কেবল দুটি পরিবর্তে প্রান্তিককরণের জন্য একটি নির্বিচার সংখ্যক শিল্পকে সমর্থন করা ভাল (তবে অবশ্যই আপনাকে অন্তত দুটি সমর্থন করতে হবে)।
  • আপনি ধরে নিতে পারেন যে প্রতিটি শিল্পের একই মাত্রা থাকবে এবং এতে কমপক্ষে একটি লাইন থাকবে।
  • আপনার অবশ্যই কমপক্ষে 100x100 চরিত্র আর্ট সমর্থন করতে সক্ষম হতে হবে।

  • সাইটে কনভেনশনগুলির সাথে সারিবদ্ধ করার জন্য, যুক্তির আদেশটি কোনও বিষয় নয়। কোন শিল্পটি বাম বা ডানদিকে রয়েছে তা বিবেচ্য নয়।


আউটপুট

  • আউটপুটটি উপরে উল্লিখিত হিসাবে প্রান্তিক শিল্প হবে, হয় হয় প্রত্যাবর্তিত হবে বা স্টডআউটে আউটপুট হবে।

  • Anyচ্ছিকভাবে কোনও চলমান সাদা স্থান।

  • প্রান্তিক শিল্পগুলির মধ্যে কোনও ভিজ্যুয়াল বিভাজক অবশ্যই থাকতে হবে।


ইনপুট এবং আউটপুট আর্টস অবশ্যই \nবা \rসীমানাযুক্ত স্ট্রিংগুলি হতে হবে । 2D-অ্যারেগুলিকে অনুমতি দেওয়া অত্যধিক তুচ্ছ হবে।

জমা ফাংশন বা সম্পূর্ণ প্রোগ্রাম হতে পারে।

পরীক্ষার কেস:

"abc\ndef", "123\n456" -> "abc123\ndef456".

"qwertyuiop\n asdfghjkl", "Some other\nTextFiller" -> "qwertyuiopSome other\n asdfghjklTextFiller"

"  *  \n *** \n*****\n *** \n  *  \n", "  +  \n  +  \n+++++\n  +  \n  +  \n" -> "  *    +  \n ***   +  \n*****+++++\n ***   +  \n  *    +  \n"

1
আমরা কি নতুন লাইনের পরিবর্তে একটি কাস্টম ডিলিমিটার ব্যবহার করতে পারি? অর্থাৎ "|"বা " "?
Rɪᴋᴇʀ

10
আমি এমন কোনও কথা বলব না যা কোনও শিল্পকে নষ্ট করবে।
কারসিজেনিকেট

আমরা কি \rপরিবর্তে ব্যবহার করতে পারি \n?
অ্যাডম

@ অ্যাডম শিওর আমি শব্দটি আপডেট করব।
কারসিজেনিকেট

নেতৃস্থানীয় সাদা স্থান ঠিক আছে?
অ্যাডম

উত্তর:


20

6
কারণ যারা না শুধু এই জন্য একটি builtin আছে? : পি
সিয়ার্ড কোইনারিংহিংহিং

5
এটা এমনকি ন্যায্য নয়। ; -;
সম্পূর্ণমানবিক

3
@ কেভিন ক্রুইজসেন পিপিসিজিতে সাধারণত আপনি যা যা আদেশ চান তা ইনপুট নেওয়ার অনুমতি দেওয়া হয় এবং স্ট্যাক-ভিত্তিক ভাষার জন্য বর্তমান অর্ডারটি বিপরীত থেকে বেশি বোঝায়।
ডিজাইমা

5
@ কেভিন ক্রুজসেন যদিও আমি কেবল মনে করেছি যে আমার বিপরীত অ্যাডের জন্য একটি বিল্ট-ইন রয়েছে, তাই আমি পোস্টটি আপডেট করছি: পি
ডিজাইমা

2
সুতরাং ক্যানভাস এর জন্য দুটি বিল্টিন আছে ? কেন ঠিক না?
কায়ার্ড কইনিরিংহিংহিং


6

পাইথন 2 , 59 বাইট

lambda y:'\n'.join(map(str.__add__,*map(str.splitlines,y)))

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


স্থানটি সরিয়েও এটি ছোট করা যেতে পারে। : পি
সম্পূর্ণরূপে

আপনি যদি আগে যেমন লাইনের লাইনগুলির ইনপুট এবং আউটপুট তালিকাটি দেখতে চান, আপনি এটি 30 এ নামিয়ে আনতে পারেন: অনলাইনে চেষ্টা করে দেখুন!

আমি সেখানে বসে 5 মিনিটের মতো সিদ্ধান্ত নেওয়ার চেষ্টা করেছিলাম যে আমার অনুমতি দেওয়া উচিত। হ্যাসেল উত্তরটি দেখায়, এটি চ্যালেঞ্জকে আরও কিছু ক্ষুদ্রতর কিছুতে কমিয়ে দেবে। আমি মনে করি যদিও অতিমাত্রায় তুচ্ছ সমাধানগুলি এতটা জনপ্রিয় হবে না।
কার্সিজিনিট

4

05 এ বি 1 ই , 6 বাইট

|¶¡øJ»

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

ব্যাখ্যা

|        # push all input into a list
 ¶¡      # split on newlines
   ø     # zip
    J    # join the rows to single strings
     »   # merge on newlines

দুটি ইনপুটগুলির মধ্যে খুব খারাপ জায়গার অনুমতি দেওয়া হয়নি :(।
ম্যাজিক অক্টোপাস উর্ন



3

বাশ + কোর্টিলস, 14

  • @ ডেভিডফোস্টারকে 4 টি বাইট সংরক্ষণ করা হয়েছে।
paste -d "" $@

কমান্ড-লাইন পরামিতি হিসাবে দুটি ফাইলের নাম হিসাবে ইনপুট দেওয়া হয়।

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


আপনি 4 বাইট সংরক্ষণ করতে পারেন:paste -d "" $@
ডেভিড ফোস্টার

@ ডেভিডফোরস্টার ধন্যবাদ! অদ্ভুত - আমি এটি আগে চেষ্টা করেছি এবং এটি কার্যকর হয়নি। সম্পাদনা করুন - আমি এখন দেখতে পাচ্ছি - এর পরিবর্তে -d "", আমি চেষ্টা করেছি -d"", অবশ্যই -d
ডিজিটাল ট্রমা


2

এপিএল (ডায়ালগ ইউনিকোড) , 9 বাইট এসবিসিএস

পুরো প্রোগ্রাম। \rসীমাবদ্ধ স্ট্রিংগুলির যে কোনও দৈর্ঘ্যের তালিকার জন্য প্রম্পটস (এসটিডিআইএন) । স্ট্রিংগুলি রাগযুক্ত হতে পারে এবং বিভিন্ন প্রস্থের যতক্ষণ না তাদের লাইন সংখ্যা একই থাকে। প্রিন্ট (STDOUT) ফলাফল ASCII শিল্প।

⊃,/⎕FMT¨⎕

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

 মূল্যায়ন ইনপুট জন্য প্রম্পট

⎕FMT¨ ফর্ম্যাট (সমস্ত নিয়ন্ত্রণ অক্ষর মূল্যায়ন এবং অক্ষর ম্যাট্রিক্স ফিরে)

,/ আনুভূমিকভাবে তাদের একত্রিত করুন (cateation হ্রাস)

 প্রকাশ (কারণ হ্রাস র‌্যাঙ্ক 1 থেকে 0 এ কমিয়েছে)


2

জাভা 8, 100 84 78 বাইট

a->b->{for(int i=0;;)System.out.println(a.split("\n")[i]+b.split("\n")[i++]);}

ArrayIndexOutOfBoundsExceptionএটি STDOUT এ ফলাফল মুদ্রণের পরে একটি STDERR এর সাথে প্রস্থান করে , যা অনুমোদিত

-6 বাইট ধন্যবাদ @ অলিভিগ্রগ্রোয়ারকে ধন্যবাদ ।

ব্যাখ্যা:

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

a->b->{                        // Method with two String parameters and no return-type
  for(int i=0;;)               //  Loop over the substrings of the first input
    System.out.println(        //   Print:
     a.split("\n")[i]          //    The substring of the first input
     +b.split("\n")[i++]);}    //    plus the same-indexed substring of the second input

1
a->b->{for(int i=0;;)System.out.println(a.split("\n")[i]+b.split("\n")[i++]);}78 বাইট। কোনও অতিরিক্ত পার্শ্ব-প্রতিক্রিয়া না থাকার বিষয়ে কিছুই বলা হয় না। সুতরাং একটি ব্যতিক্রম ঘটে না হওয়া পর্যন্ত আমরা কেবল গণনা করতে পারি।
অলিভিয়ার গ্রাগোয়ার

@ অলিভিয়ারগ্রোওয়ের ধন্যবাদ! এবং এসটিডিআরআর-তে কোনও ত্রুটি সহ প্রস্থান করা প্রকৃতপক্ষে এটি এসটিডিআউট-এ প্রিন্ট করার পরে অনুমোদিত।
কেভিন ক্রুইজসেন

2

রুবি , 48 বাইট

->a,b{$;=$/;a.split.zip(b.split).map(&:join)*$/}

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

একটি ল্যাম্বদা দুটি স্ট্রিং নিয়ে একটি স্ট্রিং ফিরিয়ে দিচ্ছে। ডিফল্ট splitডিলিমিটারটি নতুন লাইনে সেট করে $;=$/;কোনও বাইট সংরক্ষণ করে না, তবে এটি বাকীগুলিকে কিছুটা সুন্দর দেখায়।

রুবি , 49 বাইট (নির্বিচারে অনেকগুলি স্ট্রিং)

->s{s.map{|a|a.split$/}.transpose.map(&:join)*$/}

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

শুধুই মজার জন্য. দেখা যাচ্ছে যে আমরা মাত্র 1 বাইট অতিরিক্ত দামে স্ট্রিংগুলির একটি অ্যারে গ্রহণ করতে পারি।



2

আশ্চর্য , 21 বাইট

->#oN.zip#++.-> <>"
"

ব্যবহারের উদাহরণ:

(->#oN.zip#++.-> <>"
")["abc#ndef" "abc#ndef"]

#n\nনতুন লাইন চিহ্নিত করার পরিবর্তে ব্যবহৃত হয় ।

ব্যাখ্যা

ভার্বোজ সংস্করণ:

(map #oN) . (zip #con) . (map split "#n")

ইনপুট অ্যারেতে প্রতিটি স্ট্রিংকে নিউলাইনগুলি সহ বিভক্ত করুন, স্ট্রিং কনটেনেটের সাথে জিপ করুন এবং প্রতিটি আইটেম আউটপুট দিন।







1

পাওয়ারশেল , 51 49 বাইট

param($a,$b)$a-split"
"|%{$_+($b-split"
")[$i++]}

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

নতুন লাইনের সাথে আক্ষরিক স্ট্রিং হিসাবে ইনপুট নেয়। আপনি এর পরিবর্তে `n(পাওয়ারশেলে নিউলাইন ডিলিমিটারটি ব্যবহার করতে পারেন \n) নাও ব্যবহার করতে পারেন ।

আমরা প্রথমে -splitনিউলাইনগুলিতে বাম ইনপুট স্ট্রিং করি যা একটি অ্যারে তৈরি করে এবং এর মধ্য দিয়ে লুপ হয় |%{...}। প্রতিটি পুনরাবৃত্তি, আমরা ডান ইনপুট স্ট্রিং দিয়ে আবার নতুন লাইনে বিভক্ত, সূচিযুক্ত এবং বর্ধিত সঙ্গে স্ট্রাক্টেনেটে স্ট্রিং করি।

এগুলি পাইপলাইনে ফেলে রাখা হয় এবং সম্পূর্ণ Write-Outputহওয়ার পরে অন্তর্ভুক্তটি স্ট্রিংগুলির একটি অ্যারে হিসাবে আউটপুট দেয় যা নতুন লাইনের সাথে মুদ্রিত হয়।




1

জাপট -R , 8 7 বাইট

·íV· m¬

চেষ্টা করে দেখুন


ব্যাখ্যা

             :Implicit input of strings U & V
·            :Split U on newlines
  V·         :Split V on newlines
 í           :Interleave
     m       :Map
      ¬      :  Join
             :Implicitly join with newlines and output

বিকল্প

·Ë+V·gE

চেষ্টা করে দেখুন

             :Implicit input of strings U & V
·            :Split U on newlines
 Ë           :Map over each element at index E and rejoin with newlines
   V·        :  Split V on newlines
     gE      :  Get the element at index E
  +          :  Append to the current element
             :Implicitly join with newlines and output

1

বাশ , 92 বাইট

a=();for b;do c=;while IFS= read -r d;do a[c++]+=$d;done<<<"$b";done;printf '%s\n' "${a[@]}"

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

Ungolfed:

array=()                             # Initialize the array
for argument in "${@}"; do           # Loop over the arguments list
  index='0'                          # Reset the index
  while IFS='' read -r 'line'; do    # Loop over every line of the current argument
    array[index]+="${line}"          # Append the line to its corresponding place
    (( index++ ))                    # Increment the index
  done <<< "${argument}"             # End while loop
done                                 # End for loop
printf '%s\n' "${array[@]}"          # Print array's content

উদাহরণ:

$ foo $'abc\ndef' $'123\n456'
abc123
def456

$ foo $'qwertyuiop\n asdfghjkl' $'Some other\nTextFiller'
qwertyuiopSome other
 asdfghjklTextFiller

$ foo \
>   $'  *  \n *** \n*****\n *** \n  *  \n' \
>   $'  +  \n  +  \n+++++\n  +  \n  +  \n'
  *    +  
 ***   +  
*****+++++
 ***   +  
  *    +  


# https://gist.github.com/nxnev/dad0576be7eb2996b860c320c01d0ec5
$ foo "$(< input1)" "$(< input2)" "$(< input3)" > output

আমারও একটি সংক্ষিপ্ত রয়েছে তবে দ্বিতীয় readবিবৃতিটি যদি শূন্য-না মান দেয় তবে এটি ব্যর্থ হয়।

বাশ , 55 বাইট

while IFS= read -r a;IFS= read b<&3;do echo "$a$b";done

দ্রষ্টব্য: tio.run এ<&3 কাজ করছে বলে মনে হচ্ছে না

এটির মধ্যে আর্গুমেন্টের পরিবর্তে ফাইল বর্ণনাকারী ( 1এবং 3) ব্যবহার করা হয়েছে:

$ foo <<< $'qwertyuiop\n asdfghjkl' 3<<< $'Some other\nTextFiller'
qwertyuiopSome other
 asdfghjklTextFiller

1

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

PθM⌕θ¶→η

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

 θ          First input
P           Print without moving the cursor
    θ       First input
     ¶      Literal newline
   ⌕        Find index
  M   →     Move that many squares right
       η    Implicitly print second input

একাধিক ইনপুট গ্রহণ করতে 2 বাইট যুক্ত করুন:

FA«PιM⌕ι¶→

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

 A          Input
F «         Loop over all entries
   Pι       Print current entry
     M⌕ι¶→  Move to next entry

আনপ্যাডড ইনপুট গ্রহণ করতে 4 বাইট যুক্ত করুন:

PθM⌈E⪪θ¶Lι→η

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

      θ         First input
       ¶        Literal newline
     ⪪          Split
    E           Map over each string
         ι      Current string
        L       Length
   ⌈            Maximum
  M       →     Move that many squares right

1

জাভাস্ক্রিপ্ট (নোড.জেএস) , by৯ বাইট

a=>(b=a.map(x=>x.split`
`))[i=0].map(y=>b.map(z=>c+=z[i],c="")&&++i&&c).join`
`

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

মাত্র 2 (পূর্ববর্তী 2 জেএস উত্তরের মতো) এর চেয়ে বেশি সংখ্যক এএসসিআইআই আর্ট একসাথে যোগদানের সমর্থন করে।



1

সুইফট 4 , 119 বাইট

func f(s:[String])->String{return s[0].split{$0=="\n"}.enumerated().map{$0.1+s[1].split{$0=="\n"}[$0.0]+"\n"}.joined()}

ব্যাখ্যা

func f(s: [String]) -> String {
    return s[0].split{ $0=="\n" }       //splitting the first string after every \n
    .enumerated()                       //create a tuple of offsets and elements
    .map {
        $0.1 +                          //current element
        s[1].split{$0 == "\n"}[$0.0] +  //splitting the second string + indexing
        "\n"                            //new line after every line
     }
     .joined()
}

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

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