ডায়াগোনাল স্ট্রিপস থেকে পাঠ্য আয়তক্ষেত্রটি পুনর্গঠন করুন


10

এই চ্যালেঞ্জটি তার সমস্ত তির্যক স্ট্রিপগুলি গণনা করে ম্যাট্রিক্সকে অতিক্রম করার বিষয়ে একটি SO প্রশ্নের দ্বারা অনুপ্রাণিত ।

ম্যাট্রিক্সের পরিবর্তে পাঠ্যের একটি ব্লক বিবেচনা করুন:

ABCD
EFGH
IJKL

উপরের বাম কোণ থেকে শুরু করে নীচে ডানদিকে শেষ হয়ে এই ব্লকের এসডাব্লু-এনই ডায়াগোনগুলি বাম থেকে ডানে ডানদিকে অনুসরণ করা নিম্নলিখিত ফলাফলের ফলাফল:

A
EB
IFC
JGD
KH
L

চ্যালেঞ্জ

একটি প্রোগ্রাম বা একটি ফাংশন লিখুন যা উপরে বর্ণিত প্রক্রিয়াটির বিপরীত সম্পাদন করে। এটি একটি সেট এসডাব্লু-এনই ডায়াগোনাল স্ট্রিপ দেওয়া হয়, এটি তৈরি করা পাঠ্যের ব্লকের আউটপুট দেয়।

ইনপুট এবং আউটপুট

ইনপুট এবং আউটপুট উভয়ই নতুন লাইনের সাথে স্ট্রিং হিসাবে বা অ্যারে / স্ট্রিংয়ের তালিকা হিসাবে উপস্থাপিত হতে পারে।

চলমান নিউলাইনগুলি alচ্ছিক।

ইনপুটটিতে কমপক্ষে একটি মুদ্রণযোগ্য অক্ষর থাকবে এবং সঠিক বলে ধরে নেওয়া যেতে পারে (সারি দৈর্ঘ্যের দৈর্ঘ্য হবে না)।

আউটপুট ব্লকটিতে সর্বদা সারি সংখ্যার চেয়ে বড় বা সমান কলাম থাকবে।

পরীক্ষার কেস

ইনপুট:

A

আউটপুট:

A

ইনপুট:

.
LI
PO.
PV.
CE
G

আউটপুট:

.I..
LOVE
PPCG

ইনপুট:

M
DA
AIT
LAR
SGI
/OX
/N
/

আউটপুট:

MATRIX
DIAGON
ALS///

ইনপুট স্ট্রিংগুলিতে কোনও ফাঁক থাকবে?
kirbyfan64sos

এছাড়াও, শ্বেতস্থান অনুসরণ করার অনুমতি দেওয়া আছে?
kirbyfan64sos

@ kirbyfan64sos হ্যাঁ, ইনপুটটিতে স্পেস থাকতে পারে। চলমান সাদা স্থান অনুমোদিত।
ক্রিশ্চিয়ান লুপাস্কু

উত্তর:


5

সিজেম, 23 20 বাইট

{_z,,Nf*W%\.+zW%sN%}

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


ইনপুট ফর্ম্যাটটির সুবিধা গ্রহণ করে (এবং স্পেসে ভাঙ্গা নয়):{_z,,Nf*W%\.+zW%sN%}
ডেনিস

@ ডেনিস আমি কি কোঁকড়া ধনুর্বন্ধনী গণনা করি কারণ এটি "ফাংশন"? আমি সিজেম গল্ফে নতুন।
লিন

হ্যাঁ. ব্লকটি (কোঁকড়ানো বন্ধনী সহ) বেনামে ফাংশন / ল্যাম্বডায় সিজেমের নিকটতম বিকল্প, সুতরাং এটি 20 বাইট হিসাবে গণনা করা হয়।
ডেনিস

3

পাইথন 2, 84

L=[]
for w in input():
 i=0;L+=[''][:len(w)-len(L)]
 for c in w:i-=1;L[i]+=c
print L

ইনপুট এবং আউটপুট স্ট্রিংগুলির তালিকা।

input: ['A','EB','IFC','JGD','KH','L']
output: ['ABCD', 'EFGH', 'IJKL']

Lআমরা ইনপুট পড়ার সাথে সাথে আউটপুটে লাইনের তালিকা তৈরি করা হয়। প্রতিটি নতুন অক্ষর একটি লাইনে যুক্ত হয়, শেষ লাইন থেকে শুরু i=-1করে সামনের দিকে অগ্রসর হয়।

যখনই যোগ করার জন্য নতুন লাইন তালিকার জন্য অত্যন্ত দীর্ঘ, একটি নতুন খালি লাইন যোগ করা হয়: L+=[''][:len(w)-len(L)]। আমি এই অংশটি সংক্ষিপ্ত করার একটি উপায় আশা করছি।


1

পাইথন 2, 165 162 169 163 বাইট

import sys
j=map(list,[e.strip() for e in sys.stdin.readlines()])
r=max(1,len(j)-2)
while j:
 s=''
 for b in range(r):s+=j[b].pop()
 j=[e for e in j if e]
 print s

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

উদাহরণ:

$ python rectangle.py << EOF
> A
> EB
> IFC
> JGD
> KH
> L
> EOF
ABCD
EFGH
IJKL
$ python rectangle.py << EOF
> .
> LI
> PO.
> PV.
> CE
> G
> EOF
.I..
LOVE
PPCG
$ python rectangle.py << EOF
> M
> DA
> AIT
> LAR
> SGI
> /OX
> /N
> /
> EOF
MATRIX
DIAGON
ALS///

6 বাইট সংরক্ষণ করার জন্য ডব্লিউ0এফ ধন্যবাদ ।

পিওয়াইজি , 139 বাইট

j=M(L,[e.strip() for e in sys.stdin.readlines()])
r=Mx(1,len(j)-2)
while j:
 s=''
 for b in R(r):s+=j[b].pop()
 j=[e for e in j if e]
 P(s)

শেষ s=''প্রয়োজন?
ক্রিশ্চিয়ান লুপাস্কু

আহ, ওখানে লুকিয়ে আছে; ধন্যবাদ!
সেলেলো

0

পাইথন, 332 325 বাইট

পাইথন কারণ।

n=[]
v=[]
x=y=-1
l=0
s=""
while 1:
 k=raw_input()
 if len(k)<1:break
 n.append(k)
while 1:
 if l>len(n):break
 y+=1
 try:
    x+=1;k=n[y][x]
    if[x,y]not in v:s+=k;v.append([x,y])
    else:raise
 except:
    try:
     x-=1;k=n[y][x]
     if[x,y]not in v:s+=k;v.append([x,y])
    except:s+="\n";x=-1;y=l;l+=1
print s[:s.rstrip("\n").rfind("\n")]

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

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