एक स्ट्रिंग ध्वस्त!


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
मुझे संदेह है कि अगर यादृच्छिक वास्तव में यहाँ आवश्यक है
कीउ गण

@KeyuGan मुझे लगता है कि चुनौती काफी तुच्छ होगी यदि लोगों को एक निश्चित संख्या में वर्णों का चयन करना चाहिए और बाएं / दाएं को वैकल्पिक करना चाहिए।
जुंगह्वान मिन ऑक्ट

4
हम अभी भी कह सकते हैं कि 4 यादृच्छिक है और एक उचित पासा रोल द्वारा लौटाया गया है
मेरा सर्वनाम

@someone 4आउटपुट निर्धारक बनाता है, न कि "यादृच्छिक"। स्पष्ट करने के लिए नियमों का संपादन किया।
जुंगह्वान मिन ऑक्ट

@someone आप XKCD के कारण 4 पर बता रहे हैं ?
जियाकोमो गारबेलो

जवाबों:


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]

इसे ऑनलाइन आज़माएं!



@EriktheOutgolfer धन्यवाद :)
TFeld


h+R(X)*-~iहो सकता है h-~i*R(X)
जोनाथन फ्रीच

L=[...];D=Lहो सकता है D=L=[...]
जोनाथन फ्रीच
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.