পাঠ্যের গ্রিডের ডায়াগনালগুলি সারি করুন


15

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

উদাহরণস্বরূপ, যদি পাঠ্যের ইনপুট গ্রিড হয়

abcd
1234
WXYZ

তারপর আপনি কর্ণ লাইন আপ চাই W, 1X, a2Y, b3z, c4, এবং dএই আউটপুট দান কলামে:

  ab
 123c
WXYZ4d

মনে রাখবেন যে সমস্ত ত্রিভুজগুলির সর্বনিম্ন-ডানদিকের অক্ষরগুলি WXYZ4dএকই স্তরে থাকে।

বিস্তারিত

  • পাঠ্যের ইনপুট গ্রিডটি সর্বনিম্ন 1 × 1 আকারে হবে এবং সমস্ত লাইন একই দৈর্ঘ্য হবে।

  • আপনি ইনপুট গ্রিডটিকে একাধিক স্ট্রিং বা একক রেখার স্ট্রিংয়ের তালিকা হিসাবে নিতে পারেন।

  • ইনপুট গ্রিডে কেবল প্রিন্টযোগ্য এএসসিআইআই অক্ষর থাকবে (স্পেস সহ)।

  • আউটপুটে allyচ্ছিকভাবে একটি নতুন ট্র্যাকিং করা নতুন লাইন থাকতে পারে তবে অন্য কোনও খালি লাইন থাকতে হবে না।

  • আউটপুটটির রেখাগুলিতে optionচ্ছিকভাবে পিছনের স্থান থাকতে পারে তবে অপ্রয়োজনীয় নেতৃস্থানীয় স্থান থাকতে হবে না।

অন্যান্য উদাহরণ

খালি লাইন পৃথক উদাহরণ। প্রতিটি ইনপুট সরাসরি তার আউটপুট দ্বারা অনুসরণ করা হয়।

123
456
789

  1
 452
78963

123.?!
456??!
789!!!

  123.
 456???
789!!!!!

**@
@  

 **
@  @


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

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

12
34
56
78
90

 7531
908642

Code

Code

G
O
L
F

FLOG

~

~

স্কোরিং

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।



ইনপুটটি কি 2 ডি চর অ্যারে (অক্ষরের একটি ম্যাট্রিক্স) হতে পারে?
লুইস মেন্ডো

ইনপুটটির প্রথম কলামে ফাঁকা জায়গা থাকতে পারে?
কৃতিমিক লিথোস

পছন্দ করুন
ক্যালভিনের

পছন্দ করুন
ক্যালভিনের

উত্তর:


4

জে , 12 বাইট

|./.&.|:&.|.

একটি বেনাম ক্রিয়া সংজ্ঞায়িত করে। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

|./.&.|:&.|.
|.            Reversed
  /.          anti-diagonals
    &.        under
      |:      transpose
        &.    under
          |.  reversal

জে, u &. v(পড়ুন: uনীচে v) এর অর্থ "ভি, তারপরে ইউ, তারপরে বি এর বিপরীত"। বিপরীতমুখী এবং ট্রান্সপোজ হ'ল স্ব-বিপরীতগুলি, সুতরাং প্রোগ্রামটির সত্যিকার অর্থে "বিপরীত, ট্রান্সপোজ, এক্সট্রাক্ট অ্যান্টি-ডায়াগোনাল, ট্রান্সপোজ, বিপরীত" means

উদাহরণ ইনপুট সহ:

abcd
1234
WXYZ

বিপরীত:

WXYZ
1234
abcd

TRANSPOSE:

W1a
X2b
Y3c
Z4d

বিপরীত বিরোধী ডায়াগোনালগুলি বের করুন (এবং স্পেস সহ প্যাড):

W  
X1 
Y2a
Z3b
4c 
d  

TRANSPOSE:

WXYZ4d
 123c 
  ab  

বিপরীত:

  ab  
 123c 
WXYZ4d

2
অ্যাডওয়্যারের শক্তির দুর্দান্ত প্রদর্শন
10 মাইল মাইল :

2
আমি জেগে উঠলাম এবং মনে পড়েছিল সেগুলি আসলে সংঘবদ্ধ ছিল।
মাইল

2

জেলি , 11 বা 10 বাইট

ZŒDṙLUz⁶ṚUY

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

আমার অন্যান্য সমাধান থেকে মোটামুটি আলাদা অ্যালগরিদম; এটি ম্যানুয়ালি জিনিস না করে কর্ণগুলিতে পৌঁছানোর জন্য একটি বিল্টিন ব্যবহার করে।

ব্যাখ্যা:

ZŒDṙLUz⁶ṚUY
Z           transpose
 ŒD         diagonals, main diagonal first
    L       number of lines in the original array
   ṙ        rotate list (i.e. placing the short diagonal first)
     U      reverse inside lines
      z⁶    transpose, padding with spaces
        ṚU  rotate matrix 180 degrees
          Y (possibly unnecessary) join on newlines

কর্ণগুলি সম্ভবত সবচেয়ে খারাপ সম্ভাব্য অভিযোজনে বেরিয়ে আসে (পুনরাবৃত্তি স্থানান্তর, বিপরীতকরণ এবং ঘূর্ণনগুলির প্রয়োজন), এবং ভুল ক্রমে (জেলি প্রথমে মূল তির্যককে আউটপুট দেয়, তাই সেগুলি পেতে আমাদের কিছু প্রান্ত শুরু থেকে শুরুতে নিয়ে যেতে হবে) ক্রমানুসারে). যাইহোক, এটি এখনও আমার অন্যান্য জেলি সমাধানের চেয়ে কম আউট আসে।


2

সিজেম , 29 বাইট

qN/{)\z}h]2/{~W%+}%eeSf.*W%N*

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

ব্যাখ্যা

তীরগুলি বের করার পরিবর্তে, আমরা বাম এবং ডানদিকে ঘুরিয়ে, প্রান্তটি স্তর থেকে খোসা ছাড়ি। নিম্নলিখিত ইনপুট বিবেচনা করুন:

GFDB
EEDB
CCCB
AAAA

আমরা যদি চ্যালেঞ্জের দ্বারা প্রয়োজনীয় হিসাবে ত্রিভুজগুলি লিখি তবে আমরা পাই:

   G
  EEF
 CCCDD
AAAABBB

মনে রাখবেন এটি ডান-সর্বাধিক কলাম দ্বারা সংলগ্ন নীচে-সারি, নীচে (নীচ থেকে উপরে) simply ইনপুটটি আয়তক্ষেত্রাকার হলে এই সংজ্ঞাটিও কাজ করে।

{      e# Run this loop while there are still lines left in the input.
  )    e#   Pull off the bottom-most row.
  \    e#   Swap with the remaining rows.
  z    e#   Transpose the grid so that the next iteration pulls off the last
       e#   column instead. However, it should be noted that transposing
       e#   effectively reverses the column, so the second half of each output
       e#   line will be the wrong way around. We'll fix that later.
}h     e# When the loop is done, we'll have all the individual layers on the
       e# stack from bottom to top, alternating between horizontal and vertical
       e# layers. There will be an empty string on top.
]      e# Wrap all those strings in a list.
2/     e# Split into pairs. There may or may not be a trailing single-element
       e# list with the empty string.
{      e# Map this block over each pair...
  ~    e#   Dump the pair on the stack.
  W%   e#   Reverse the second element.
  +    e#   Append to first element.
       e#   If there was a trailing single-element list, this will simply
       e#   add the empty string to the previous pair, which just removes
       e#   the empty string.
}%
ee     e# Enumerate the list, which pairs each string (now containing both halves)
       e# of an output line from bottom to top) with its index.
Sf.*   e# Turn those indices X into strings of X spaces, to get the correct
       e# indentation.
W%     e# Reverse the list of strings so the longest line ends up on the bottom.

সাবধান, যে ]পুরো স্ট্যাক মোড়ানো হবে! আমি মনে করি ইনপুটটির নীচে স্ট্যাকের বিষয়বস্তু নির্বিশেষে ফাংশনগুলি কাজ করা উচিত এবং আপনি সম্মত বলে মনে করছেন ^^
লিন

@ লিন ওফফ, ভুলে গিয়েছি যে আমি ]যখন এটি কোনও ফাংশনে পরিবর্তন করেছি তখন আমি ব্যবহার করছিলাম।
মার্টিন এন্ডার

আমি মনে করি আপনি [{)\z}h]27 বাইটের জন্য এটি করতে এবং এটি একটি ফাংশন রাখতে পারেন।
লিন

2

জাভাস্ক্রিপ্ট, 116 101 বাইট

f=(s,r='$&',l='',z=s.replace(/.$|\n?(?!.*\n)..+/gm,x=>(l=x+l,'')))=>l?f(z,r+' ')+l.replace(/\n?/,r):l


G.onclick=()=>O.textContent=f(I.value);
<textarea id=I style=height:100px>/\/\
\/ /
/ /\
\/\/</textarea><button id=G>Go</button><pre id=O></pre>

আমি কেবল এই রেজেক্স প্যাটার্ন /.$|\n?(?!.*\n)..+/gmধারণাটি ব্যবহার করতে চেয়েছিলাম । ( https://regex101.com/r/mjMz9i/2 )

জাভাস্ক্রিপ্ট রেজেক্স স্বাদ হতাশাজনক, আমাকে ব্যবহার করতে হয়েছিল (?!.*\n)কারণ এটি \Zপ্রয়োগ হয়নি, এবং কোনওভাবে আমি ব্যবহার করতে পেলাম না \0

  • 15 বাইট অফ ধন্যবাদ @ নিল।

আমি কেবল এই পদ্ধতির পছন্দ করি তবে আপনি এর .পরিবর্তে ব্যবহার করতে পারেন [^]যেহেতু আপনাকে একটি নতুন লাইন খুঁজে পেতে নন-নিউলাইন অক্ষরগুলি এড়িয়ে যেতে হবে যা 2 বাইট সংরক্ষণ করে sa
নীল

আমি মনে করি না যে এটি ^চূড়ান্ত রেজেক্সে প্রয়োজনীয়, কারণ যে কোনও \nইতিমধ্যে স্ট্রিংয়ের শুরুতে রয়েছে, যাতে অন্য বাইট সংরক্ষণ করে।
নীল

আমি গল্ফ গল্ফ করতে একটি উপায় এসেছি '$&'+' '.repeat(n)। মূলত সেই অভিব্যক্তিটি কেবলমাত্র $&একটি জায়গার সাথে প্রতিটি কল যুক্ত করে, যা পুনরাবৃত্তভাবে প্রয়োগ করতে তুচ্ছ - এর n=0সাথে r='$&'এবং এর f(z,n+1)সাথে প্রতিস্থাপন করুন f(z,r+' ')এবং তারপরে rপছন্দসই প্রতিস্থাপনের স্ট্রিং। যদি আমি সঠিকভাবে গণনা করি যা 12 বাইট সঞ্চয় করে।
নীল

@Neil। এটি দুর্দান্ত ... !! আপনাকে ধন্যবাদ
ওয়াশিংটন গুডেস

1

জেলি , 15 বা 14 বাইট

L’⁶x;\Ṛ;"µZUZṚY

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

এটি একটি অ্যালগরিদম যা জেলি এর অন্তর্নির্মিতটি তির্যকের জন্য ব্যবহার করে না। এটি করা এটি আরও সংক্ষিপ্ত করে তুলতে পারে; আমি ভাল পরের চেষ্টা করতে পারেন।

অ্যালগরিদম কীভাবে কাজ করে তা এখানে। আসুন এই ইনপুট দিয়ে শুরু করুন:

["abc",
 "def",
 "ghi"]

আমরা দিয়ে শুরু L’⁶x;\L’আমাদের ইনপুট বিয়োগ 1 এর দৈর্ঘ্য দেয় (এই ক্ষেত্রে, 2)। তারপরে ⁶xআমাদের সেই দৈর্ঘ্যের স্পেসের একটি স্ট্রিং দেয় ( " "এই ক্ষেত্রে); এবং ;\এটি (স্পেসের একটি ত্রিভুজ) সংমিশ্রণ করার সময় আমাদের সম্মিলিত ফলাফল দেয়। তারপরে আমরা ত্রিভুজটি বিপরীত করি এবং এটি মূলের বাম দিকে সংযুক্ত করি ( ;"তালিকার সাথে সম্পর্কিত উপাদানগুলির সাথে সম্মিলন করে, µজোর করে পার্সিং বিরতি দেয় এবং এভাবে ডিফল্ট হিসাবে দ্বিতীয় তালিকা হিসাবে মূল ইনপুট ব্যবহার করে):

["  abc",
 " def",
 "ghi"]

এটি আমরা চাই প্রায় সমাধান, তবে শেষ স্ট্রিংয়ের সাথে আমাদের ফ্ল্যাশ হওয়ার জন্য উপাদানগুলি নীচের দিকে সরানো দরকার। এটি ( Z) ট্রান্সপোজ করার , প্রতিটি লাইনের অভ্যন্তরে বিপরীত হওয়া ( U) পুনরায় স্থানান্তর ( Z) পুনঃস্থাপন এবং লাইনগুলি বিপরীত করার বিষয় :

["  abc",
 " def",
 "ghi"]

TRANSPOSE

["  g",
 " dh",
 "aei",
 "bf",
 "c"]

সারি মধ্যে বিপরীত

["g  ",
 "hd ",
 "iea",
 "fb",
 "c"]

TRANSPOSE

["ghifc",
 " deb",
 "  a"]

সারি বিপরীত

["  a",
 " deb",
 "ghifc"]

শেষ পর্যন্ত Yনতুন লাইনে যোগ দেয়। স্পেসিফিকেশন (যা স্ট্রিংগুলির তালিকা হিসাবে ইনপুটটিকে অনুমতি দেয় তবে আউটপুট সম্পর্কে একই কথা বলে না) মেনে চলার প্রয়োজন কিনা তা আমার কাছে অস্পষ্ট so সুতরাং সঠিক বাইট গণনাটি অন্তর্ভুক্ত বা বাদ দেওয়া উচিত তার উপর নির্ভর করে।


1

পাইথ, 16 বাইট

j_.t_M.Tm+*;l=tQ

বড় পাইথ :

join-on-newline
reverse transpose-and-fill-with-spaces reverse func-map transpose-justified
map
  plus
    times innermost-var
      length assign tail input
    implicit-innermost-var
  implicit-input

যেহেতু লোকেরা বলে যে গল্ফিংয়ের ভাষাগুলি পড়া খুব কঠিন, তাই আমি বিগ পাইথটি তৈরি করেছি, যা পাইথের কাছে সহজেই পঠনযোগ্য এবং সহজেই অনুবাদযোগ্য। লিঙ্কযুক্ত ফাইলটি পাইথ থেকে বিগ পাইথের একটি ইনপুট স্ট্রিম অনুবাদ করে। প্রতিটি হোয়াইটস্পেসে পৃথক বিগ পাইথ টোকেন একটি পাইথ টোকেনের সাথে মিলে যায়, হয় চরিত্র বা একটি a. পরে একটি অক্ষর। ব্যতিক্রমগুলি implicitটোকেনগুলি রয়েছে, যা পাইথ কোডে অন্তর্ভুক্ত।

বিগ পাইথ একটি ব্যাখ্যামূলক বিন্যাসটি কতটা ভাল তা দেখতে চাই, তাই আমি অন্য কোনও ব্যাখ্যা দিতে যাচ্ছি না। আপনি যদি কিছু ব্যাখ্যা করতে চান তবে আমাকে জিজ্ঞাসা করুন।


0

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

a=>[...Array(m=(h=a.length)<(w=a[0].length)?h:w)].map((_,i)=>[...Array(h+w-1)].map((_,j)=>(a[x=i+h-m-(++j>w&&j-w)]||``)[x+j-h]||` `).join``)

স্ট্রিংগুলির অ্যারে হিসাবে ইনপুট এবং আউটপুট নেয়। একটি দ্বি-মাত্রিক অক্ষর অ্যারে ইনপুট গ্রহণ করে এবং একটি দ্বিমাত্রিক অক্ষর অ্যারে আউটপুট গ্রহণযোগ্য হলে 7 বাইট সংরক্ষণ করুন। ব্যাখ্যা: ফলাফলের উচ্চতাm উচ্চতাটি মূল অ্যারের উচ্চতা hএবং প্রস্থের সর্বনিম্ন w, যখন প্রস্থটি মূল অ্যারের উচ্চতা এবং প্রস্থের যোগফলের তুলনায় একমাত্র কম। ফলাফলের মূল অংশের অক্ষরের জন্য উত্স সারিটি মূল অ্যারের উপযুক্ত সারি থেকে সরাসরি আসে নীচে থেকে গণনা করা হয়, যখন ফলাফলের অতিরিক্ত অংশে উত্স সারি প্রতিটি অতিরিক্ত কলামের জন্য একটি সারি উপরে নিয়ে যায়। ফলাফলের উভয় অংশের উত্স কলামটি গন্তব্য কলামের সমান হতে দেখা যায় নীচে উপরে প্রতিটি উত্স সারির জন্য একটি কলাম বামে সরানো হয়েছে।



0

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

def a(s):
 s=s.split('\n')
 for i,l in enumerate(s):r=len(s)-i-1;s[i]=' '*r+l+' '*(len(s)-r-1)
 print(*[''.join(i) for i in list(zip(*[''.join(a).rstrip([::-1].ljust(min(len(s),len(s[0])))for a in zip(*[list(i)for i in s])]))[::-1]],sep='\n')`

অকেজো সাদা জায়গা join(i) for
ইয়াতসি

0

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

def f(l):w=len(l[0]);h=len(l);J=''.join;R=range;print'\n'.join(map(J,zip(*['%%-%ds'%h%J(l[h+~i][j-i]for i in R(h)if-w<i-j<1)for j in R(h-~w)]))[::-1])

স্ট্রিংগুলির তালিকা হিসাবে ইনপুট নেয়।


0

Clojure, 194 বাইট

অক্ষরগুলিকে গোষ্ঠীবদ্ধ করে Gএবং তারপরে লাইনগুলি তৈরি করে কঠোর উপায়ে কার্যকর করা হয়েছে ।

#(let[n(count %)m(count(% 0))G(group-by first(for[i(range n)j(range m)][(min(- n i)(- m j))((% i)j)]))](apply str(flatten(for[k(reverse(sort(keys G)))][(repeat(dec k)" ")(map last(G k))"\n"]))))

এ হিসাবে ইনপুট নেয় vec এর vecমত গুলি [[\a \b \c \d] [\1 \2 \3 \4] [\W \X \Y \Z]]। উদাহরণ:

(def f #( ... ))
(print (str "\n" (f (mapv vec(re-seq #".+" "abcd\n1234\nWXYZ")))))

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