हम शुरू कर दिया, जहां हम शुरू कर दिया! ...


29

चुनौती:

इनपुट:

आप दो इनपुट लेते हैं:
- एक स्ट्रिंग जिसमें केवल मुद्रण योग्य ASCII (रिक्त स्थान, टैब या नई-पंक्तियों को छोड़कर)
- एक मुद्रण योग्य ASCII वर्ण

आउटपुट:

पहली पंक्ति में स्ट्रिंग-इनपुट होगा। हर i-modulo -3 इस चरित्र एक दक्षिण-पूर्व दिशा में चले जाएँगे की पहली आवृत्ति; प्रत्येक i-मॉडुलो -3 दूसरी घटना दक्षिण दिशा में चलेगी; और प्रत्येक i-मॉडुलो -3 तीसरी घटना दक्षिण-पश्चिम दिशा में बढ़ेगी। आप तब तक जारी रखेंगे जब तक कि पात्र अपनी प्रारंभिक प्रारंभिक स्थिति में नहीं होंगे (जिसका अर्थ है कि यह एक तरफ से दूसरी तरफ आवश्यक रूप से लपेट जाएगा), और फिर आप स्ट्रिंग-इनपुट के साथ फिर से अंतिम पंक्ति प्रिंट करेंगे इसे खत्म करो। (ध्यान दें कि सभी परीक्षण मामले उनके प्रारंभिक इनपुट पर समाप्त हो जाएंगे length(input), जिसमें पंक्तियों के बाद , जिसमें अनुगामी इनपुट शामिल है। यह जल्द ही हो सकता है, जैसा कि नीचे दिए गए इस पहले परीक्षण मामले में देखा गया है, 14 की लंबाई के साथ, लेकिन बाद में समाप्त हो जाएगा। 9.)

यह सब बहुत अस्पष्ट हो सकता है, इसलिए यहाँ एक उदाहरण है:

टेस्ट केस 1:

स्ट्रिंग-इनपुट: "This_is_a_test"
चरित्र-इनपुट:'s'

आउटपुट:

This_is_a_test
    s s    s  
     ss   s   
      s  s    
      sss     
      sss     
      s  s    
     ss   s   
    s s    s  
This_is_a_test

यहाँ तीन के रंगीन रास्तों के साथ एक ही परीक्षण मामला है s:

यहाँ छवि विवरण दर्ज करें

जहां पहले 's'दक्षिण-पूर्व दिशा में हरे रास्ते का अनुसरण करता है; दूसरा 's'दक्षिण दिशा में पीले रास्ते का अनुसरण करता है; और तीसरा 's'दक्षिण-पश्चिम दिशा में हल्के नीले रंग के मार्ग का अनुसरण करता है। (यदि कोई चौथा 's'होगा तो यह फिर से दक्षिण-पूर्व दिशा में जाएगा, जो नीचे दिए गए कुछ अन्य परीक्षण में देखा जा सकता है।)

चुनौती नियम:

  • इनपुट में केवल मुद्रण योग्य ASCII (रिक्त स्थान, टैब और नई-लाइनों को छोड़कर) शामिल होंगे
  • I / O प्रारूप लचीले हैं। एक नया लाइन सीमांकित स्ट्रिंग, चरित्र मैट्रिक्स, आदि हो सकता है।
  • यह संभव है कि दिए गए वर्ण स्ट्रिंग में मौजूद नहीं हैं, जिस स्थिति में आपको इनपुट-स्ट्रिंग को एक या दो बार आउटपुट करने की अनुमति है (यानी "test", 'a'संभव आउटपुट के रूप में इनमें से कोई भी हो सकता है: "test\ntest"/ "test")।
  • अग्रणी स्थान अनिवार्य हैं; अनुगामी रिक्त स्थान वैकल्पिक हैं। एक या कई प्रमुख / अनुगामी नई-लाइनों की अनुमति है।

सामान्य नियम:

  • यह , इसलिए बाइट्स जीत में सबसे छोटा जवाब है।
    कोड-गोल्फ भाषाओं को गैर-कोडगॉल्फिंग भाषाओं के साथ उत्तर पोस्ट करने से हतोत्साहित न करें। 'किसी भी' प्रोग्रामिंग भाषा के लिए यथासंभव संक्षिप्त उत्तर के साथ आने का प्रयास करें।
  • मानक नियम आपके उत्तर के लिए लागू होते हैं , इसलिए आपको उचित पैरामीटर और रिटर्न-टाइप, पूर्ण कार्यक्रमों के साथ STDIN / STDOUT, फ़ंक्शन / विधि का उपयोग करने की अनुमति दी जाती है। तुम्हारा कॉल।
  • डिफ़ॉल्ट लूपोल्स निषिद्ध हैं।
  • यदि संभव हो, तो कृपया अपने कोड के लिए एक परीक्षण के साथ एक लिंक जोड़ें।
  • इसके अलावा, यदि आवश्यक हो तो एक स्पष्टीकरण जोड़ें।

परीक्षण के मामले / अधिक उदाहरण:

टेस्ट केस 2:

स्ट्रिंग-इनपुट: "abcabcabcabcabc"
चरित्र-इनपुट:'b'

आउटपुट:

abcabcabcabcabc
  b b b    b b 
   bbb      bb 
    b        b 
   bbb       bb
b b b b      b 
 b  b  b     b 
b b b   b    b
   bb    b   bb
    b     b  b 
    bb     bbb
    b b    bbb 
    b  b  b  b 
    b   bb   bb
b   b   bb   b 
abcabcabcabcabc

यहां पांच के रंगीन रास्तों के साथ एक ही परीक्षण मामला है a:

यहाँ छवि विवरण दर्ज करें

टेस्ट केस 3:

स्ट्रिंग-इनपुट: "only_two_paths?"
चरित्र-इनपुट:'o'

आउटपुट:

only_two_paths?
 o     o       
  o    o       
   o   o       
    o  o       
     o o       
      oo       
       o       
       oo      
       o o     
       o  o    
       o   o   
       o    o  
       o     o 
       o      o
only_two_paths?

यहाँ दो के रंगीन रास्तों के साथ एक ही परीक्षण मामला है o:

यहाँ छवि विवरण दर्ज करें

टेस्ट केस 4:

स्ट्रिंग-इनपुट: "lollollollollol"
चरित्र इनपुट:'l'

आउटपुट:

lollollollollol
lll   ll  ll   
 ll   ll  ll   
l ll ll ll ll  
  lll l ll l ll
  llllll  ll ll
l l  ll    ll  
 ll  lll   ll  
l l l lll ll l 
  ll  l ll l  l
l l l l llll l 
 ll  lll  lll  
l l   l    ll  
  ll lll  lllll
  l l l ll l ll
lollollollollol

यहाँ दस के रंगीन रास्तों के साथ एक ही परीक्षण मामला है l:

यहाँ छवि विवरण दर्ज करें

टेस्ट केस 5:

स्ट्रिंग-इनपुट: "AbCdEeDcBaAbCdEeDcBa_CCCCC"
चरित्र इनपुट:'C'

आउटपुट:

AbCdEeDcBaAbCdEeDcBa_CCCCC
C  C        C       C  C  
 C  C       C      C  CCC 
  C  C      C     C  C C C
C  C  C     C    C  C  C  
 C  C  C    C   C  C   C  
  C  C  C   C  C  C    C  
   C  C  C  C C  C     C  
    C  C  C CC  C      C  
     C  C  CC  C       C  
      C  C CC C        C  
       C  C CC         C  
        CC CC C        C  
        CC CC  C       C  
       C  C CC  C      C  
      C  C CC C  C     C  
     C  C   C  C  C    C  
    C  C    CC  C  C   C  
   C  C     C C  C  C  C  
  C  C      C  C  C  C C  
 C  C       C   C  C  CC  
C  C        C    C  C  C  
  C         C     C  C CCC
 C          C      C  CCCC
C           C       C  C  
 C          C        CCCCC
AbCdEeDcBaAbCdEeDcBa_CCCCC

यहाँ सात के रंगीन रास्तों के साथ एक ही परीक्षण मामला है C:

यहाँ छवि विवरण दर्ज करें

टेस्ट केस 6:

स्ट्रिंग-इनपुट: "XyX"
चरित्र इनपुट:'X'

आउटपुट:

XyX
 XX
  X
XyX

यहाँ दो के रंगीन रास्तों के साथ एक ही परीक्षण मामला है X:

यहाँ छवि विवरण दर्ज करें

टेस्ट केस 7:

स्ट्रिंग-इनपुट: "aaaa"
चरित्र इनपुट:'a'

आउटपुट:

aaaa
aa  
aaa 
 aaa
aaaa

यहाँ चार के रंगीन रास्तों के साथ एक ही परीक्षण मामला है a:

यहाँ छवि विवरण दर्ज करें


इसलिए जब स्ट्रिंग में चरित्र के 3 में से कई होते हैं, तो आउटपुट में स्ट्रिंग की लंबाई से कम पंक्तियाँ हो सकती हैं?
नील

@ नहीं मुझे यकीन नहीं है कि अगर यह 3 से अधिक है, तो इसने इसकी बहुत जांच नहीं की है। मुझे पता है कि length(input)सब कुछ फिर से मेल खाता है, लेकिन यह जल्द ही हो सकता है क्योंकि पहला परीक्षण मामला साबित होता है। लेकिन ऐसा लगता है कि आप वास्तव में 3 भाग के गुणकों के बारे में सही हैं (हालाँकि मुझे 100% यकीन नहीं है)।
केविन क्रूज़सेन

@ एक पंक्ति में केवल 3 बार दिखने वाले किसी भी तार को 3 पंक्तियों में प्रिंट किया जाएगा, हालांकि यह बहुत लंबा है
असोन तुहिद

क्या 2 मुद्रित लाइनों के बीच नई लाइनों की अनुमति है?
असोन तुहिद

@AsoneTuhid क्षमा करें, लेकिन नहीं। मैं संपूर्ण अपेक्षित आउटपुट से पहले या बाद में नई-लाईनों के अनुगामी या अग्रणी होने की परवाह नहीं करता, लेकिन मैं इन पंक्तियों के बीच की अनुमति नहीं दूंगा। विकर्ण रेखाएँ अब भी सही नहीं
होंगी

जवाबों:


1

स्टैक्स , 24 बाइट्स

»v↕*δó‼Γ█|q┬YM╨|·£↕fßßZo

इसे ऑनलाइन चलाएं और डीबग करें

यह उसी कार्यक्रम का एससीआई प्रतिनिधित्व है।

YxP|Ic{{i3%v-x%%mb-!Czny&PWxP

यह सभी वर्णों के सूचकांकों को प्राप्त करता है, और तब तक उन्हें उत्परिवर्तित करता है जब तक कि वे मूल सूचकांकों के बराबर सेट-वार न हों। हर बदलाव के लिए, उन सूचकांकों पर चरित्र के साथ एक स्ट्रिंग आउटपुट करें।

Y                               Store character in y.  Now the inputs are x and y.
 xP                             Print x.
   |Ic                          Get all indices of y in x. Make a copy.
      {                   W     Loop until cancelled.
       {        m               Map index array using block.
        i3%v-                   Subtract i%3-1 from each element. i is the loop index.
             x%%                Modulo len(x)
                 b-!            Is the mutated array set-equal to the original?
                    C           If so, cancel W loop
                     zny&P      Print a string with y at all specified indices
                           xP   Finally, print x again

8

पर्ल 5 , -plF 101 100 99 98 97 96 बाइट्स

\096 प्राप्त करने के लिए एक शाब्दिक 0 बाइट को बदलें। ध्यान दें कि यह कोशिश करें ऑनलाइन लिंक में 97 बाइट्स हैं, क्योंकि वहाँ एक शाब्दिक 0 वर्ण इनपुट करना संभव नहीं है।

#!/usr/bin/perl -plF
say;say$$l=~y/\0/ /runtil--$l,(s:\Q${\<>}:$$l|=v0 x((++$#$l%3*$l-$l+"@-")%@F).$&;v0:oreg^$$l)eq$_

कोड गोल्फ पर्ल हाइलाइटर सोचता है कि #एक टिप्पणी शुरू करें। कितना भोला 😈

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

यह काम किस प्रकार करता है

$lवह काउंटर है जिसके लिए पहली पंक्ति के बाद हम चालू हैं (हालांकि यह नीचे गिना जाता है, इसलिए शीर्ष स्ट्रिंग के नीचे 3 लाइनों के लिए जैसे -3)। प्रारंभिक स्ट्रिंग को प्रिंट करने के बाद एक बार इसे बार-बार करने के बाद।

लक्ष्य वर्ण की घटनाओं के लिए पहला स्ट्रिंग खोजें और गणना करें कि किस ऑफसेट पर यह दिखाई देनी चाहिए: (++$#$l%3*$l-$l+"@-")%@Fजो कि वर्तमान स्थिति और रेखा संख्या (ऋणात्मक) बार -1, 0, 1(चक्रीय) है। \0लक्ष्य चरित्र के बाद कई बार एक स्ट्रिंग का निर्माण और orएक संचयकर्ता में $$l(जो प्रत्येक के लिए एक अलग संचयकर्ता है $lऔर कारण $lऊपर के बजाय नीचे गिना जाता है $1, $2आदि केवल-पढ़ने के लिए हैं)। Simularly $#$lलूप के माध्यम से हर बार एक अलग सरणी को दर्शाता है। परिणाम $lवें पंक्ति है, लेकिन \0रिक्त स्थान के बजाय।

पहले स्ट्रिंग में लक्ष्य चार्जर्स को बदल दिया जाता है \0ताकि आप मूल स्ट्रिंग के साथ "छेद" (साथ \0) लक्ष्य चरित्र के मूल पदों पर समाप्त हो जाएं । यदि आप xorसंचायक के साथ छेद भरते हैं, तो केवल और अगर संचायक के मूल स्थानों में लक्ष्य वर्ण हैं, तो परिणाम मूल स्ट्रिंग होगा। इसका उपयोग लूप को समाप्त करने के लिए किया जाता है। यदि लूप समाप्त नहीं हुआ \0है, तो अंतरिक्ष द्वारा प्रतिस्थापित के साथ संचायक को प्रिंट करें ।

जब लूप -pविकल्प समाप्त होता है तो एक बार पहले स्ट्रिंग को प्रिंट करता है और प्रोग्राम किया जाता है।

टार्गेट कैरेक्टर को बडे पेचीदा तरीके से उठाया जाता है। ${\<>}धर्मान्तरित एक लाइन के लिए एक संदर्भ जो फिर तुरंत dereferenced और regex में प्रतिस्थापित किया गया है करने के लिए stdin से पढ़ें। \Qउपसर्ग सभी वर्णों कि एक regex (जैसे में विशेष कर रहे हैं निकल जाता है .और *)। \Eनिहित है। oसंशोधक खोज हिस्सा फिर से कभी नहीं मूल्यांकन किया जाना है लेकिन सिर्फ बाद के सभी मैचों में बार-बार (के बाद से वहाँ STDIN पर कुछ भी नहीं अब और है जो अच्छा है) का कारण बनता है।


मुझे नहीं लगता कि आप सीधे एक नल बाइट डाल सकते हैं, लेकिन आप इसे बैश या कुछ और में चला सकते हैं ।
FryAmTheEggman

@FryAmTheEggman धन्यवाद, यह एक अच्छा चकमा है। लेकिन मुझे नहीं लगता कि मैं परेशान करूंगा। लोगों को बस मुझ पर भरोसा करना होगा जो काम करता है अगर वे इसे खुद से आज़माना नहीं चाहते हैं :-)
टन हास्पेल

पूरी तरह से निष्पक्ष, लेकिन मैं टिप्पणी छोड़ दूंगा ताकि लोग इसे देख सकें। अच्छा गोल्फ, वैसे :)
FryAmTheEggman

4

पायथन 2 , 199 193 191 बाइट्स

s,c=input()
print s;l=len(s);r=range;I=j=[i for i in r(l)if s[i]==c]
while 1:
 j=[(j[i]-i%3+1)%l for i in r(len(I))]
 if sorted(j)==I:print s;break
 print''.join((' '+c)[i in j]for i in r(l))

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


यदि लूप अपवाद के माध्यम से बाहर निकल सकता है:

पायथन 2 , 187 बाइट्स

s,c=input()
print s;l=len(s);r=range;I=j=[i for i in r(l)if s[i]==c]
while 1:
 j=[(j[i]-i%3+1)%l for i in r(len(I))]
 if sorted(j)==I:print s;q
 print''.join((' '+c)[i in j]for i in r(l))

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


  • जोहानस फ्रीच को -4 बाइट्स धन्यवाद
  • -2 बाइट्स लिन का धन्यवाद

संभावित 189 बाइट्स (एक अपवाद के माध्यम से लूप से बाहर निकलना)।
जोनाथन फ्रीच

आप (j[i]-i%3+1)%lदो बाइट्स के लिए पार्न्स की एक जोड़ी छोड़ सकते हैं ।
लिन


2

जावास्क्रिप्ट (Node.js) , 197 194 बाइट्स

s=>c=>{(C=console.log)(s);w=0;g=[];while(~(w=s.indexOf(c,w)))g.push(w++);h=(H=_=>g.map(x=>A[x]=c,A=Array(l=s.length).fill` `)&&A.join``)();while(h!=(y=H(g=g.map((x,i)=>(l-~x-i%3)%l))))C(y);C(s)}

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

करी वाक्य रचना में इनपुट लेता है, अर्थात f(s)(c)

बिल्कुल सही नहीं है, लेकिन मुझे जेएस की जरूरत है। फ़ंक्शन में बहुत सारे कार्य।



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