একটি স্ট্রিং ধ্বংস!


12

চ্যালেঞ্জ

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

প্রক্রিয়া

P
r      Pr       r
o       o       o
g       g       g
r       r       r      rogr         r
a  ->   a  ->   a  ->     a  ->     a  ->           ->           ->           ->           ->  
m       m       m         m         m
m       m       m         m         m         mmar         m
i       i       i         i         i         i            i           mi           m
n       n       n         n        gn        gn           gn           gn           gni         mgni
g       g      Pg        Pg      roPg      roPg         roPgmar      roPgmar      roPgmar      roPgmar
  1. উল্লম্বভাবে স্ট্রিং রাখুন।
  2. মধ্যে একটি র্যান্ডম পূর্ণসংখ্যা নির্বাচন করুন 1এবং (height of the column of characters) - 1এবং একটি র্যান্ডম অভিমুখ (বাম বা ডান)।
  3. সেই দিকের অক্ষরের সংখ্যাটি ঘোরান (যদি সেই স্থানগুলি নিরবচ্ছিন্ন থাকে তবে পদক্ষেপ 4 এ যান; যদি না হয়, তবে পদক্ষেপ 2 এ ফিরে যান)।
  4. মহাকর্ষের কারণে সেই চরিত্রগুলি পড়ুক।
  5. অক্ষরের কলামটির 1উচ্চতা তার পাশের কলামগুলির উচ্চতার চেয়ে বেশি বড় না হওয়া পর্যন্ত পুনরাবৃত্তি করুন (যেমন কলামটি আরও ধ্বংস করা ("পদক্ষেপ 2-4") হয়ে যায়)।
  6. চরিত্রের আরও একটি কলাম যদি 1এর আশেপাশের কলামগুলির একের বেশি বা তার চেয়ে বেশি লম্বা চরিত্রের থেকে থাকে (যেমন ধ্বংস করতে সক্ষম) তবে সেই কলামটি পুনরায় ভেঙে ফেলুন যতক্ষণ না এটি আর ধ্বংস হয় না। যদি একাধিক ধ্বংস-সক্ষম কলামগুলি থাকে তবে লম্বাতম কলামটি সম্পূর্ণরূপে ধ্বংস করুন (যদি একাধিক দীর্ঘতম কলাম থাকে তবে বামতমটি সম্পূর্ণরূপে ধ্বংস করুন)।
  7. যতক্ষণ না সমস্ত কলামগুলি আর ধ্বংস করতে সক্ষম হয় না ততক্ষণ পুনরাবৃত্তি করুন।

যদি ইনপুটটিতে স্পেস অক্ষর থাকে তবে এগুলি প্রথমে ধ্বংস করুন, একসাথে।

C
o

d      
e  ->     oC  ->         ->  ...
       de         
G        G          G
o        o          o
l        l          l
f        f        defoC

বিধি

  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
  • ট্রেলিং এবং শীর্ষস্থানীয় নিউলাইনগুলি অনুমোদিত।
  • আপনার প্রোগ্রাম হয় স্ট্রিং / সমতুল্য মুদ্রণ বা ফিরে আসতে পারে।
  • আউটপুট অবশ্যই অ-নিরস্ত করা উচিত (যদি না ইনপুটটি ধ্বংস করতে সক্ষম হয়)।

এটি , তাই তাদের ভাষাগুলিতে ক্ষুদ্রতম বাইট গণনা সহ জমাগুলি জয়লাভ করে!


1
আমি এখানে এলোমেলোভাবে সত্যিই প্রয়োজনীয় কিনা সন্দেহ করব
কিউ গান

@ কেয়ুগান আমি মনে করি যদি লোকেরা একটি নির্দিষ্ট সংখ্যক অক্ষর এবং বিকল্প বাম / ডান নির্বাচন করতে হয় তবে চ্যালেঞ্জটি মোটামুটি নগণ্য।
জংহওয়ান মিন

4
আমরা এখনও বলতে পারি যে 4টি এলোমেলো এবং ফর্সা ডাইস রোল দিয়ে ফিরে এসেছে
আমার সর্বনাম monicareinstate

@ সোমোন 4আউটপুটকে নির্ধারিত করে তোলে , যেমন "এলোমেলো" নয়। এটি সুস্পষ্ট করার জন্য নিয়মগুলি সম্পাদনা করেছেন।
জংহওয়ান মিন

@someone আপনি কারণ 4 উল্লেখ করা হয় xkcd ?
গিয়াকোমো গারাবেলো

উত্তর:


5

পাইথন 2 , 622 595 573 552 542 534 527 520 515 বাইট

from random import*
s=input()
r=range
R=choice
Z=len
L=h=Z(s)
a=[[]for _ in'  '*-~h]
S=s[::-1].split()
X=-1,1
for w in S[1:]:
 for i in r(Z(w)):a[h-~i*R(X)]+=w[i]
a[h]+=S[0]
while L:
 H=[map(Z,a[c-1:c+2])+[c]for c in r(1,h-~h)];D=L=[(min(n,m)-C,i)for n,C,m,i in H if~-C>min(n,m)]
 while D:
	_,c=min(L);n,C,m=map(Z,a[c-1:c+2]);D=X[n+2>C:1+(C-1>m)]
	if D:
	 d=R(D);l=R(r(1,C-[0,m,n][d]));w,a[c]=a[c][-l:],a[c][:-l]
	 for i in r(l):a[c-~i*d]+=w[i]
for l in zip(*[l+[' ']*max(H)[1]for l in a if l])[::-1]:print`l`[2::5]

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



@ এরিকথ আউটগলফার ধন্যবাদ :)
টিফিল্ড


h+R(X)*-~iহতে পারে h-~i*R(X)
জোনাথন ফ্রেচ

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