এএসসিআইআই আর্টকে তৃতীয় মাত্রায় নিয়ে আসুন


11

এই চ্যালেঞ্জে আপনাকে এএসসিআইআই আর্ট (যা সাধারণত 2 ডি হয়) 3 ডি তে আনতে হবে!

কিভাবে?

এটার মত,

X X DD 
 X  D D
X X DD 

প্রতি...

  X X DD 
 X X DD D
X X DDDD 
 X XDDD
X X DD

তখন আমরা কীভাবে করবেন যে ?

দেওয়া হয়েছে আসকি আর্ট এবং N, এই Nবার পুনরাবৃত্তি ।

  • প্রতিটি চরিত্রের জন্য (আমরা এটিকে ডাকব A):
  • যে Bচরিত্রটি হ'ল 1 সঠিক এবং 1 টি থেকে সঠিক হবেA
  • যদি Bকোনও স্থান হয় বা অপরিজ্ঞাত থাকে:
  • সেট Bকরা A

চশমা

  • প্রথম ইনপুটটি নতুন লাইনের অক্ষরগুলির সাথে একটি স্ট্রিং বা 2D ASCII শিল্পকে উপস্থাপন করে এমন স্ট্রিংগুলির তালিকা হতে পারে।
  • আপনি %END%ইনপুট এর শেষ ট্যাগ করতে ব্যবহার করার অনুমতি দেওয়া হয় , কিন্তু এটি প্রয়োজন হয় না।
  • দ্বিতীয় ইনপুট হবে N। এটি একটি ইতিবাচক পূর্ণসংখ্যা হবে।
  • স্ট্রিংয়ের সমস্ত লাইন একই দৈর্ঘ্য হবে।

উদাহরণ

ইনপুট: ("###\n###",1)

আউটপুট:

 ###
####
###

বিধি

বেসিক বিধি প্রযোজ্য।

এছাড়াও, আপনার যদি প্রশ্ন থাকে তবে অবশ্যই মন্তব্যে জিজ্ঞাসা করুন!


আপনি স্পষ্ট করতে চাইতে পারেন যে "ফাঁকা" স্থান (U + 0020) বা কিছুই কিছুই বোঝায় না।
লিকি নুন

পছন্দ করুন

অতিরিক্ত শ্বেতস্থান অনুমোদিত?
লিকি নুন

হ্যাঁ, এগুলি অনুমোদিত।

1
আমি কি ধরে নিতে পারি যে প্রতিটি লাইনের দৈর্ঘ্য একই হবে? (আমি কি ডান দিকের ফাঁকা জায়গা দিয়ে ইনপুটটিকে প্রাক-প্যাড করতে পারি?)
লিকি নুন

উত্তর:


18

পার্ল, 81 বাইট

75 বাইট কোডের জন্য 6 -i -n0
লক্ষ করুন যে \eঅক্ষরগুলি ASCII \x1bতবে \eপরীক্ষার স্বাচ্ছন্দ্যে ব্যবহৃত হয়।

দয়া করে নোট করুন যে এই সমাধানটি এএনএসআই অব্যাহতি সিকোয়েন্সগুলি ব্যবহার করে এবং একটি সুসংগত টার্মিনাল প্রয়োজন, পাশাপাশি -iকমান্ডলাইন যুক্তিটি ব্যবহার করে আপনার পছন্দ 'মাত্রা' সংখ্যায় পাস করতে হবে।

$n=s/^//mg-1;s/ /\e[1C/g;print(s/^/\e[${^I}C/grm."\e[${n}A"),--$^I for($_)x$^I

ব্যবহার:

একটি লিনাক্স সামঞ্জস্যপূর্ণ টার্মিনালে, PS1=আপনার প্রম্পট প্রদর্শিত চিত্রটি ওভাররাইট না করে তা নিশ্চিত করতে প্রথমে চালান ।

perl -i10 -n0e '$n=s/^//mg-1;s/ /\e[1C/g;print(s/^/\e[${^I}C/grm."\e[${n}A"),--$^I for($_)x$^I' <<< ' 
ROFL:ROFL:ROFL:ROFL
         _^___
 L    __/   [] \    
LOL===__        \ 
 L      \________]
         I   I
        --------/
'

          ROFL:ROFL:ROFL:ROFL
         ROFL:ROFL:ROFL:ROFL
        ROFL:ROFL:ROFL:ROFL
       ROFL:ROFL:ROFL:ROFL\
      ROFL:ROFL:ROFL:ROFL\_]
     ROFL:ROFL:ROFL:ROFL\_]
    ROFL:ROFL:ROFL:ROFL\_]/
   ROFL:ROFL:ROFL:ROFL\_]/
  ROFL:ROFL:ROFL:ROFL\_]/
 ROFL:ROFL:ROFL:ROFL\_]/
   LOL==___^___]_\_\_]/
  LOL==__/ \_[]_\_\_]/
 LOL===__ \______\_]/
  L      \________]/
          I---I---/
         --------/

perl -i3 -n0e '$n=s/^//mg-1;s/ /\e[1C/g;print(s/^/\e[${^I}C/grm."\e[${n}A"),--$^I for($_)x$^I' <<< 'X X DD
 X  D D
X X DD
'
   X X DD
  X X DD D
 X X DDDD
  X XDDD
 X X DD

8

সিজেম, 25 24 বাইট

{{' 1$f+La@+..{sS@er}}*}

একটি নামবিহীন ব্লক যা স্ট্যাকের স্ট্রিংগুলির একটি তালিকা এবং পুনরাবৃত্তির সংখ্যা আশা করে এবং তার পরিবর্তে স্ট্রিংগুলির একটি নতুন তালিকা রেখে দেয়।

এটি এখানে পরীক্ষা করুন।(একটি পরীক্ষার মোড়কে অন্তর্ভুক্ত করে যা সুবিধার জন্য এসটিডিআইএন থেকে স্ট্রিংটি পড়ে))

ব্যাখ্যা

{       e# Repeat this block N times...
  '     e#   Push a space character.
  1$    e#   Copy the current grid.
  f+    e#   Prepend the space to each line of the grid.
  La    e#   Push [[]].
  @+    e#   Pull up the other copy of the grid and prepend the [].
        e#   We've now got two copies of the grid, one shifted right by
        e#   a cell and one shifted down by a cell. We now want to replace
        e#   spaces in the latter with the corresponding character in the
        e#   former.
  ..{   e#   For each pair of characters in corresponding positions...
    s   e#     Turn the character in the down-shifted grid into a string.
    S   e#     Push " ".
    @   e#     Pull up the character from the right-shifted grid.
    er  e#     Replace spaces with that character.
  }
}*

5
দশটি রোলকপ্টার! goo.gl/PEK4iB

Sপ্রাথমিক স্থানের জন্য কেন কাজ করে না ? এছাড়াও, কোনও ফাংশনে ভ্যারিয়েবলগুলি (যা ওভাররাইট করা হতে পারে) ব্যবহারের অনুমতি রয়েছে?
লুইস মেন্ডো

@ লুইস মেন্ডো Sকাজ করে না, কারণ তারপরে fসেই স্ট্রিংয়ের উপরে ম্যাপিং করা হবে। ফাংশনগুলি, আমি বিশ্বাস করি, "সাধারণ" ভাষায়, অনেকগুলি ফাংশন সাবমিশন রয়েছে যা গ্লোবালগুলিকে নির্ভর করে যা আমন্ত্রণের মধ্যে কোনওভাবে ছাপিয়ে যায় না।
মার্টিন ইন্ডার

ধন্যবাদ। আমি ভুলে গিয়েছিলাম যে সিজেমের একটি চরিত্র এক-চরিত্রের স্ট্রিংয়ের মতো নয়
লুইস মেন্ডো

1
কনভেক্স ব্যবহার করে আপনি একটি বাইট সংরক্ষণ করতে পারেন কারণ এতে দ্বি-চরের পরিবর্তে এক- চরিতির ট্রান্সলিট্রেট অপারেটর রয়েছে: উত্তল.স্রোতিতলাইনলাইন / ((নির্লজ্জ প্লাগ)
গ্যামার কর্পস

4

এপিএল, 49 বাইট

{⎕UCS 32⌈{s+(s=0)×1⊖¯1⌽s←0⍪⍵,0}⍣⍺⊣(32∘≠×⊣)⎕UCS↑⍵}

ইনপুট: চরিত্রের ভেক্টরগুলির ভেক্টর। উদাহরণ:

      2 {⎕UCS 32⌈{s+(s=0)×1⊖¯1⌽s←0⍪⍵,0}⍣⍺⊣(32∘≠×⊣)⎕UCS↑⍵} 'X X DD' ' X  D D' 'X X DD'
  X X DD 
 X X DD D
X X DDDD 
 X XDDD  
X X DD   

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

  • ↑⍵ যুক্তিটিকে অক্ষরের ম্যাট্রিক্সে পরিণত করে
  • ⎕UCS চর থেকে পূর্ণসংখ্যা পর্যন্ত
  • (32∘≠×⊣) শূন্যস্থান সহ ফাঁকা স্থান (32) প্রতিস্থাপন করুন
  • ...⍣⍺⊣ বামে ফাংশনটির সময় the (বাম আর্গুমেন্ট) প্রয়োগ করুন
  • s←0⍪⍵,0 শীর্ষে এবং ডানদিকে শূন্যের সাথে সীমানা
  • 1⊖¯1⌽ 1 টি এবং 1 টি ডানদিকে ঘোরান
  • s+(s=0)× মূল স্থানান্তরিত সংস্করণে যোগফল কিন্তু কেবলমাত্র মূল শূন্যের শীর্ষে
  • 32⌈ শূন্যগুলি 32-এর দিকে ফিরিয়ে দেয়
  • ⎕UCS পূর্ণসংখ্যা থেকে চর পর্যন্ত

4

এমএটিএল , 24 বাইট

:"ct32>*TTYatFTEqYSy~*+c

ইনপুট ফর্ম্যাট হয়

2
{'X X DD', ' X  D D', 'X X DD'}

সুতরাং অন্য উদাহরণ

1
{'###', '###'}

আউটপুটটিতে অতিরিক্ত সাদা স্থান রয়েছে যা চ্যালেঞ্জের দ্বারা অনুমোদিত।

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


যদি কোনও 2 ডি চর অ্যারে ইনপুট হিসাবে গ্রহণযোগ্য হয় (আমি ওপিকে দু'বার জিজ্ঞাসা করেছি ...), প্রথমটি cসরানো যেতে পারে, তাই 23 বাইট :

:"t32>*TTYatFTEqYSy~*+c

এই ক্ষেত্রে ইনপুট ফর্ম্যাটটি হ'ল (সমস্ত স্ট্রিংগুলির সমান দৈর্ঘ্য থাকতে পারে, যার জন্য ফাঁকা স্থানগুলির সাথে ডান-প্যাডিং প্রয়োজন হতে পারে):

2
['X X DD '; ' X  D D'; 'X X DD ']

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


ব্যাখ্যা

:        % Input number n implicitly. Generate [1 2 ... n]
"        % For loop: repeat n times
  c      %   Convert to char array. In the first iteration it inputs a cell array of
         %   strings implicitly and converts to a 2D char array, right-padding with
         %   spaces. In the next iterations it does nothing, as the top of the stack
         %   is already a 2D char array
  t32>*  %   Convert characters below 32 into 0
  TT     %   Push array [1 1]
  Ya     %   Pad the 2D char array with one zero in the two directions (up/down,
         %   left/right), on both sides
  t      %   Duplicate
  FTEq   %   Push array [-1 1]
  YS     %   Circularly shift the 2D char array one unit up and one unit right
  y      %   Push a copy of the non-shifted 2D array
  ~      %   Logical negate: nonzero entries become 0, zero entries become 1. This
         %   will be used as a mask for entries that need to be changed. Since the
         %   values at those entries are zero, we can simply add the new values. We do
         %   that by multiplying the mask by the shifted array and adding to the
         %   non-shifted array
  *      %   Multiply element-wise
  +      %   Add element-wise
  c      %   Convert the 2D array back to char
         % End for
         % Implicitly display

3

উত্তল , 23 বাইট

বাইট গণনাটি সিপি -1222 এনকোডিং অনুমান করে।

{{' 1$f+La@+..{sS@Ë}}*}

একটি নামবিহীন ব্লক যা স্ট্যাকের স্ট্রিংগুলির একটি তালিকা এবং পুনরাবৃত্তির সংখ্যা আশা করে এবং তার পরিবর্তে স্ট্রিংগুলির একটি নতুন তালিকা রেখে দেয়।

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

এটি কনভেক্সের কাছে আমার সিজেএম উত্তরের প্রত্যক্ষ বন্দর (যা ভারী সিজামের উপর ভিত্তি করে)। পার্থক্যটি হ'ল উত্তলটি লিখিত লিখনের Ëপরিবর্তে erএক বাইট সংরক্ষণ করে uses আমার সম্পর্কে এটি জানাতে গ্যামার কর্পসকে ধন্যবাদ।


2

পাইথ, 54 33 বাইট

ju+++dhG.bsmh|-d;;.t,Y+dNdtGGeG.*

পরীক্ষা স্যুট.


তোমার দু'জনের দরকার কেন ;?
ভেন

@ven প্রোগ্রামিং ভাষাগুলিতে ;স্বাভাবিক নয় ;
লিকি নুন

;একটি পরিবর্তনশীল।
লিকি নুন

লম্বডাসে আহ পাইথ ওভারলোডস ;...
ভেন

@ven যখন আপনি Pyth সাথে মিলেমিশে, আপনি ব্যবহার করেন I, .?, V, F, ;, (স্পষ্ট বিবৃতি) খুব কম, এবং তারা দ্বারা প্রতিস্থাপন করা হবে ?, m, u, F, M,L , R, #, ...
লিকি নূনের

2

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

f=(a,n)=>n?f((a=[``,...a].map(s=>[...s||` `])).map((b,i)=>i--&&b.map((c,j)=>a[i][++j]>' '?0:a[i][j]=c))&&a.map(b=>b.join``),n-1):a

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


2

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

S=' '
def f(a,d):e=[S*len(`a`)];exec"a=[''.join(t[t[1]>S]for t in zip(S+x,y+S))for x,y in zip(a+e,e+a)];"*d;return a

আমি আরও শীঘ্রই এটি গল্ফ করব।


আপনি কি নিশ্চিত যে একটি lambdaসংক্ষিপ্ত নয়?
wizzwizz4

আমার eসেখানে অ্যাসাইনমেন্ট দরকার । এছাড়াও, execএকটি বিবৃতি, যাতে এটি ল্যাম্বডায় থাকতে পারে না।
লিন

ঠিক আছে. শুধু নিশ্চিত করছি.
wizzwizz4

2

রুবি, 95 বাইট

->a,n{n.downto(0){|i|f="<Esc>[1C"
$><<a.gsub(/^/,f*i).gsub(" ",f)+(i>0?"<Esc>[#{a.lines.size-1}A":"")}}

প্রতিটি <Esc>হ'ল আক্ষরিক ESC অক্ষর ( 0x1b)।

ব্যবহার

একটি ভেরিয়েবল যেমন ল্যাম্বডা বরাদ্দ করুন func

art = <<END
X X DD
 X  D D
X X DD
END

func[art, 2]
# Prints:
#   X X DD
#  X X DD D
# X X DDDD
#  X XDDD
# X X DD

Ungolfed

->(art, num) {
  num.downto(0) do |i|
    forward = "\e[1C"
    $> << art.gsub(/^/, forward * i).gsub(" ", forward) +
            (i > 0 ? "\e[#{art.lines.size - 1}A" : "")
  end
}

forwardপালাবার ক্রম, \e[1C, কার্সার এগিয়ে (ডান) 1 স্থান এবং চলে আসে \e[<n>Aএটা প্যাচসমূহ আপ nলাইন। মূলত এই কোডটি যা করে তা হ'ল "স্তরগুলি" সামনের দিকে মুদ্রণ করে, স্পেস দিয়ে forwardঅন্যান্য স্তরগুলিকে ওভাররাইটিং এড়ানোর জন্য ক্রম দিয়ে স্থানগুলি প্রতিস্থাপন করে।


1
আপনি দুর্ঘটনাক্রমে গল্ফযুক্ত সংস্করণে একটি f=আগে ->রেখেছিলেন। এটি -2 বাইটের জন্য সরান।
wizzwizz4
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.