একটি কোণ থেকে একটি আয়তক্ষেত্রাকার অ্যারে পুনর্নির্মাণ


30

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

আপনার প্রোগ্রামটি একটি 2 মাত্রিক পূর্ণসংখ্যার অ্যারে পাবে। পার্সিংয়ের স্বাচ্ছন্দ্যের জন্য, আপনি ধরে নিতে পারেন যে সেগুলি সমস্ত 1 এবং 9 এর মধ্যে।

আপনি ধরে নিতে পারেন অ্যারের মাত্রা কমপক্ষে 1x1 হবে।

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

Input:
1 2 3
4 5 6

Output:
1 2 3 3 2 1
4 5 6 6 5 4
4 5 6 6 5 4
1 2 3 3 2 1

Input:
1

Output:
1 1
1 1

Input:
9
9
9

Output:
9 9
9 9
9 9
9 9
9 9
9 9

এটি , সবচেয়ে কম বাইট জয়!


1
আমি
বাট

1
@tbfninja chat.stackexchange.com/transcript/message/43184083#43184083 তবে অন্য কোনও ইনপুট ফর্ম্যাটটি সংক্ষিপ্ত হতে পারে।
পাভেল

@ ম্যাজিক অ্যাক্টোপাস ইউ হ্যাঁ
পাভেল

2
@tfbninja WS⟦ι⟧‖M→↓সম্ভবত? ইনপুট পড়তে 5 বাইট এবং এটি প্রতিফলিত করতে 4 টি।
নীল

4
আমি 99% নিশ্চিত যে এখানে একটি ল্যাং রয়েছে যা (বা কিছু অনুরূপ চরিত্রের সাথে) কেবল কোনটি মনে করতে পারে না: সি
রড

উত্তর:


1

প্রোটন , 29 বাইট

a=>[b+b[by-1]for b:a+a[by-1]]

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

আরও কয়েকটি আকর্ষণীয় পন্থা যদিও রয়েছে:

প্রোটন , 29 বাইট

a=>map(g,(g=x=>x+x[by-1])(a))

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

আপনি আয়না উপ-ফাংশনটিকে gইন-লাইনে সংজ্ঞায়িত করতে পারেন , কারণ প্রোটন। যদিও এটি কম নয়।

প্রোটন , 36 বাইট

(a=>[x[0]for x:zip(*(a+a[by-1]))])*2

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

এটি হওয়া উচিত (a=>zip(*(a+a[by-1])))*2যা 24 বাইট, তবে জিপ ফাংশন সম্পূর্ণরূপে ভাঙা। মূলত, আপনি এটি এবং জিপটি আয়না করেন এবং তারপরে এটি দু'বার করুন (আপনি একাধিকবার ফাংশনটি প্রয়োগ করতে ধনাত্মক পূর্ণসংখ্যার সাহায্যে একটি ফাংশনকে গুণ করতে পারেন)।


19

ক্যানভাস , 1 বাইট

এখানে চেষ্টা করুন!

মাল্টলাইন স্ট্রিং হিসাবে আউটপুট


2
খুব ভাল, @ রড ওকে বলেছে! এটা কি আপনার ভাষাও জাজাইমা?
ম্যাজিক অক্টোপাস উর্ন


@ ম্যাজিক অ্যাক্টোপাস ইউরান হ্যা, আইআইআরসি এটি মূলত এসওজিএল দ্বিতীয় হতে বোঝাচ্ছে: বৈদ্যুতিক বুগলু?
ASCII- কেবল


5

পাইথন 3, 38 বাইট

lambda a:[b+b[::-1]for b in a+a[::-1]]

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

তালিকার একটি তালিকা নেয় এবং তালিকার একটি তালিকা ফেরত দেয়।

ব্যাখ্যা:

lambda a:                              # anonymous lambda function
                   for b in a+a[::-1]  # for each row in the array and the upside-down array
          b+b[::-1]                    # the row with its reverse appended
         [                           ] # return in a list

5

কান্ড ,  7  6 বাইট

কাকতালীয়ভাবে, এরিক পোস্ট করেছেন তুষ চ্যাটরুম মধ্যে সঠিক একই কোড এক মিনিট সম্পর্কে আগে আমি এই পোস্ট করা হয়েছে।

‼oTS+↔

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

উদ্ভট সংস্করণ, 7 বাইট :

mS+↔S+↔

5

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

\%`$
$^$`
Vs`

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

ব্যাখ্যা

\%`$
$^$`

প্রতিটি লাইনে ( %), রেখার শেষটি ( ) মেলান এবং পুরো লাইনের $বিপরীত ( $^) $`sertোকান এবং একটি ট্রেলিং লাইনফিড ( \) দিয়ে ফলাফল মুদ্রণ করুন । এটি উল্লম্ব অক্ষের সাথে প্রতিবিম্বটি করে এবং আউটপুটটির প্রথমার্ধটি মুদ্রণ করে।

Vs`

এটি কেবল পুরো স্ট্রিংকে বিপরীত করে, যা 180 ° ডিগ্রি ঘূর্ণনের সমান, বা আমাদের ক্ষেত্রে (অনুভূমিক প্রতিসাম্যের কারণে) অনুভূমিক অক্ষের সাথে একটি প্রতিবিম্ব। এইভাবে এটি কাজ করে তা হল V(বিপরীত) ডিফল্ট রেজেক্স (?m:^.*$), যা সাধারণত স্ট্রিংয়ের প্রতিটি লাইনের সাথে মেলে। যাইহোক, আমরা একক লাইন বিকল্পটি সক্রিয় করি s, যা .ম্যাচ লাইনফিডগুলিও তৈরি করে এবং তাই এই ডিফল্ট রেজেক্সটি আসলে পুরো স্ট্রিংয়ের সাথে মেলে।

এর ফলাফলটি প্রোগ্রামের শেষে স্বয়ংক্রিয়ভাবে মুদ্রিত হয়, আমাদের আউটপুটটির দ্বিতীয়ার্ধ দেয়।


এটি আমার জানা কোনও রেইগেক্স গন্ধের মতো দেখাচ্ছে না: পি
পাভেল

@ পাভেল কারন রেটিনা কেবল রেজেক্স নয়। :)
এরিক আউটগল্ফার

@ কোডটি কেবলমাত্র সেই কোডটির একমাত্র অংশ $যা প্রথম লাইনে থাকে re ;) আমি পরে একটি ব্যাখ্যা যুক্ত করব।
মার্টিন ইন্ডার

5

05 এ বি 1 , 2 বাইট

∞∊

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


   # Input:Array of String | ['12','34']
---#-----------------------+------------------------------------------
∞  # Mirror horizontally.  | [12,34]       -> [1221,3443]
 ∊ # Mirror vertically.    | [1221,3443]   -> [1221\n3443\n3443\n1221]

মিঃ এক্সকোডারের জন্য ক্রেডিট এটি নির্দেশ করে যে স্ট্রিংয়ের অ্যারেগুলি এটি নিশ্চিত করার জন্য 2 ডি অ্যারে এবং পাভেল হিসাবে গণনা করতে পারে।



পার্সিংয়ের স্বাচ্ছন্দ্যের জন্য, আপনি ধরে নিতে পারেন যে সেগুলি 1 থেকে 9 এর মধ্যে রয়েছে - সুতরাং আমি মনে করি এটি বৈধ। পাভেলের নিশ্চয়তার অপেক্ষায়, আমি অনুমান করি
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার আমার প্রথম দিকে যা ছিল তাই ছিল, তারপরে টিআইও 2 ডি অ্যারেটি অদ্ভুত ছিল ... সুতরাং সেই শিরোনামের জিনিসটি নিয়ে আসতে হবে।
ম্যাজিক অক্টোপাস উর্ন 16

একটি স্ট্রিং অক্ষরের একটি অ্যারে, সুতরাং স্ট্রিংগুলির তালিকা এখনও একটি 2 ডি অ্যারে। @ মিঃ এক্সকোডার এর সমাধান বৈধ।
পাভেল

কুলিও, আমার জন্য কাজ করে
ম্যাজিক অক্টোপাস উর্ন




3

জাভাস্ক্রিপ্ট (নোড.জেএস) , 62 55 49 46 বাইট

A=>(j=x=>[...x,...[...x].reverse()])(A).map(j)

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

Array.prototype.reverse()অ্যারে জায়গায় জায়গায় বিপরীত কারণ , আমি প্রথমে কোথাও একটি অগভীর অনুলিপি তৈরি করতে হবে। A=>(j=x=>[...x,...x.reverse()])(A).map(j)কাজ করে না.




2

ত্রিভুজ্যতা , 31 বাইট

...)...
..IEM..
.DRs+}.
DRs+...

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

ব্যাখ্যা

প্যাডিংয়ের জন্য তৈরি করা অক্ষরগুলি সরিয়ে, প্রোগ্রামটি এখানে যা তা করে:

)IEMDRs+}DRs+ – Full program. Takes a matrix as a 2D list from STDIN.
)             – Push a 0 onto the stack.
 I            – Take the input at that index.
  E           – Evaluate it.
   M    }     – For each row...
    DR        – Duplicate and replace the second copy by its reverse.
      s+      – Swap and append.
         DR   – Duplicate the result and replace the second copy by its reverse.
           s+ – Swap and append.


2

এপিএল + উইন, 11 বাইট

পূর্ণসংখ্যার 2 ডি অ্যারের জন্য অনুরোধ জানানো হয়।

m⍪⊖m←m,⌽m←⎕

2

স্ট্যাক্স , 5 বাইট

:mm:m

এটি চালান এবং অনলাইনে ডিবাগ করুন

:mআয়না মানে, যা input.concat(reverse(input))m, এই প্রসঙ্গে আবেদন করার পরে প্রতিটি লাইন আউটপুট মানে ...

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






2

রুবি , 35 বাইট

->a{r=->b{b+b.reverse}
r[a].map &r}

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

একটি ল্যাম্বদা একটি 2 ডি অ্যারে গ্রহণ করে এবং একটি 2 ডি অ্যারে ফিরিয়ে দেয়। এটি সোজা, তবে এখানে অসম্পূর্ণ সংস্করণটি এখানে:

->a{
  r=->b{ b+b.reverse } # r is a lambda that returns the argument and its reverse
  r[a].map &r          # Add the array's reverse, then add each row's reverse
}

2

জাভা 8, 140 131 বাইট

m->{String r="";for(int a=m.length,b=m[0].length,i=a+a,j;i-->0;r+="\n")for(j=b+b;j-->0;)r+=m[i<a?i:a+a+~i][j<b?j:b+b+~j];return r;}

ব্যাখ্যা:

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

m->{                      // Method with integer-matrix parameter and String return-type
  String r="";            //  Result-String, starting empty
  for(int a=m.length,     //  Amount of rows of the input-matrix
          b=m[0].length,  //  Amount of columns of the input-matrix
          i=a+a,j;        //  Index integers
      i-->0;              //  Loop over double the rows
      r+="\n")            //    After every iteration: append a new-line to the result
     for(j=b+b;j-->0;)    //   Inner loop over double the columns
       r+=                //    Append the result with:
          m[i<a?          //     If `i` is smaller than the amount of rows
             i            //      Use `i` as index in the input-matrix
            :             //     Else:
             a+a+~i]      //      Use `a+a+i-1` as index instead
           [j<b?          //     If `j` is smaller than the amount of columns
             j            //      Use `j` as index in the input-matrix
            :             //     Else:
             b+b+~j];     //      Use `b+b+j-1` as index instead
  return r;}              //  Return the result-String


2

SNOBOL4 (CSNOBOL4) , 119 113 বাইট

	T =TABLE()
I	X =X + 1
	I =INPUT	:F(D)
	OUTPUT =T<X> =I REVERSE(I)	:(I)
D	X =X - 1
	OUTPUT =GT(X) T<X>	:S(D)
END	

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

ফাঁকা ছাড়াই এসটিডিআইএন-এ স্ট্রিং হিসাবে ইনপুট নেয়। এটি কেবলমাত্র কাজ করে কারণ 1-9ডিজিটগুলি অন্যথায় ব্যর্থ হয়।


আমি দেখতে পাচ্ছি কেন লোকেরা আর এই ভাষা ব্যবহার করে না। এটি খুব অস্বাভাবিক.
পাভেল

1
@ পাভেল এসএনওবোল কাজ করার জন্য সত্যই একটি ভয়ঙ্কর ভাষা। এটি এর আরও আধুনিক সি বাস্তবায়ন যার মতো অতিরিক্ত বিল্টিন ফাংশন রয়েছে REVERSE; যতটা আমি বলতে পারি আসল কেবলমাত্র পূর্ণসংখ্যার পাটিগণিতকেই সমর্থন করে।
জিউসেপে

2

সি (জিসিসি) , 114 111 বাইট

j,i;f(A,w,h)int*A;{for(i=h+h;i-->0;puts(""))for(j=w+w;j-->0;)printf("%d,",A[(i<h?i:h+h+~i)*w+(j<w?j:w+w+~j)]);}

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

সি (জিসিসি) , 109 বাইট (পার্সিংয়ের সহজতর অপব্যবহার)

  • কেবল এক অঙ্কের ইনপুট পূর্ণসংখ্যার অনুমতি দেওয়ার পরামর্শ দেওয়ার জন্য কেভিন ক্রুইজসেনকে ধন্যবাদ ; দুটি বাইট সংরক্ষণ
j,i;f(A,w,h)int*A;{for(i=h+h;i-->0;puts(""))for(j=w+w;j-->0;)putchar(A[(i<h?i:h+h+~i)*w+(j<w?j:w+w+~j)]+48);}

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


লুপগুলি উল্টিয়ে 3 টি বাইট সংরক্ষণ করতে পারেন। for(i=h+h;i-->0;puts(""))for(j=w+w;j-->0;)
কেভিন ক্রুইজসেন

স্পেক পূরণ করে না; অ্যারেটি প্রিন্ট করে বরং এটি ফেরত দেয়।

" পার্সিংয়ের স্বাচ্ছন্দ্যের জন্য, আপনি ধরে নিতে পারেন যে সেগুলি 1 থেকে 9 এর মধ্যে রয়েছে ", সুতরাং আপনি printf("%d"অতিরিক্ত -1 বাইটের জন্য কমাটি সরাতে পারেন ।
কেভিন ক্রুইজসেন

@ রোজেম আমি বলব অ্যারে মুদ্রণ i / o এর অধীনে আসে।
জোনাথন ফ্রেচ

1
@ কেভিন ক্রুইজসেন অনেক ধন্যবাদ; পার্সিংয়ের স্বাচ্ছন্দ্য ব্যবহার করে আমি অন্য বাইটটি শেভ করতে সক্ষম হয়েছি।
জোনাথন ফ্রেচ 19 '12

2

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

θ‖C→↓

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

কেবলমাত্র আরও ভাল ইনপুট ফর্ম্যাটের জন্য ASCII- কে ধন্যবাদ ।


আমি ভাবছি যে এই ইনপুট ফর্ম্যাটটি বৈধ কিনা, কারণ আমি আশঙ্কা করি যে চারকোল অন্যথায় ইনপুট পরিচালনা করতে পারে না। যদি তা না হয় তবে আমি খুশিতে এই উত্তরটি মুছব।
এরিক আউটগল্ফার

এটি বৈধ আই / ও।
পাভেল

@ পাভেল আমি কেবলই অবাক হয়েছি কারণ আপনি বলেছিলেন যে "আপনার প্রোগ্রামটি একটি দ্বি মাত্রিক অ্যারে পাবে", যখন একটি স্ট্রিং 1-মাত্রিক হয় (এবং না, বাহ্যিক []একে একে 2D করে না)।
এরিক আউটগল্ফার

@ এএসসিআইআই-কেবল চারকোলের আরও ভাল আই / ও পদ্ধতি দরকার ...
নিল

@ নীল তিনি এখানে পিঙ্ক পান নি, তবে আমি তাকে টিএনবি-তে পিন করেছি। :)
এরিক আউটগল্ফার 20 '13 এ

2

++ , 30 বাইট যুক্ত করুন

D,f,@,bU€{r}B]{r}
D,r,@,dbR+

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

পাদলেখ কেবল নীচে থাকা অ্যারেটিকে প্রশ্নের আকারে রূপান্তরিত করে। একটি ফাংশন সংজ্ঞায়িত করে f, যা একটি ম্যাট্রিক্স (নেস্টেড অ্যারে) আর্গুমেন্ট হিসাবে প্রত্যাশা করে।



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