तारों का टॉवर


22

पाठ की एक स्ट्रिंग को देखते हुए, इसे 'टॉवर' के रूप में आउटपुट करें।

स्ट्रिंग के प्रत्येक स्लाइस (फॉर्म का 0:n) बार- 5*nबार होता है, इसलिए पहले वर्ण को 5 बार दोहराया जाता है, फिर पहले और दूसरे 10 वें भाग को, आदि।

उदाहरण:

'hello' ->

['h']  
['h']  
['h']  
['h']  
['h']  
['h', 'e']  
['h', 'e']  
['h', 'e']  
['h', 'e']  
['h', 'e']  
['h', 'e']  
['h', 'e']  
['h', 'e']  
['h', 'e']  
['h', 'e']  
['h', 'e', 'l']  
['h', 'e', 'l']  
['h', 'e', 'l']  
['h', 'e', 'l']  
['h', 'e', 'l']  
['h', 'e', 'l']  
['h', 'e', 'l']  
['h', 'e', 'l']  
['h', 'e', 'l']  
['h', 'e', 'l']  
['h', 'e', 'l']  
['h', 'e', 'l']  
['h', 'e', 'l']  
['h', 'e', 'l']  
['h', 'e', 'l']  
['h', 'e', 'l', 'l']  
['h', 'e', 'l', 'l']  
['h', 'e', 'l', 'l']  
['h', 'e', 'l', 'l']  
['h', 'e', 'l', 'l']  
['h', 'e', 'l', 'l']  
['h', 'e', 'l', 'l']  
['h', 'e', 'l', 'l']  
['h', 'e', 'l', 'l']  
['h', 'e', 'l', 'l']  
['h', 'e', 'l', 'l']  
['h', 'e', 'l', 'l']  
['h', 'e', 'l', 'l']  
['h', 'e', 'l', 'l']  
['h', 'e', 'l', 'l']  
['h', 'e', 'l', 'l']  
['h', 'e', 'l', 'l']  
['h', 'e', 'l', 'l']  
['h', 'e', 'l', 'l']  
['h', 'e', 'l', 'l']  
['h', 'e', 'l', 'l', 'o']  
['h', 'e', 'l', 'l', 'o']  
['h', 'e', 'l', 'l', 'o']  
['h', 'e', 'l', 'l', 'o']  
['h', 'e', 'l', 'l', 'o']  
['h', 'e', 'l', 'l', 'o']  
['h', 'e', 'l', 'l', 'o']  
['h', 'e', 'l', 'l', 'o']  
['h', 'e', 'l', 'l', 'o']  
['h', 'e', 'l', 'l', 'o']  
['h', 'e', 'l', 'l', 'o']  
['h', 'e', 'l', 'l', 'o']  
['h', 'e', 'l', 'l', 'o']  
['h', 'e', 'l', 'l', 'o']  
['h', 'e', 'l', 'l', 'o']  
['h', 'e', 'l', 'l', 'o']  
['h', 'e', 'l', 'l', 'o']  
['h', 'e', 'l', 'l', 'o']  
['h', 'e', 'l', 'l', 'o']  
['h', 'e', 'l', 'l', 'o']  
['h', 'e', 'l', 'l', 'o']  
['h', 'e', 'l', 'l', 'o']  
['h', 'e', 'l', 'l', 'o']  
['h', 'e', 'l', 'l', 'o']  
['h', 'e', 'l', 'l', 'o']  


'cat' ->

['c']  
['c']  
['c']  
['c']  
['c']  
['c', 'a']  
['c', 'a']  
['c', 'a']  
['c', 'a']  
['c', 'a']  
['c', 'a']  
['c', 'a']  
['c', 'a']  
['c', 'a']  
['c', 'a']  
['c', 'a', 't']  
['c', 'a', 't']  
['c', 'a', 't']  
['c', 'a', 't']  
['c', 'a', 't']  
['c', 'a', 't']  
['c', 'a', 't']  
['c', 'a', 't']  
['c', 'a', 't']  
['c', 'a', 't']  
['c', 'a', 't']  
['c', 'a', 't']  
['c', 'a', 't']  
['c', 'a', 't']  
['c', 'a', 't']  

नियम:

आप प्रत्येक परत को वर्णों की सूची के रूप में आउटपुट कर सकते हैं या उनमें से केवल एक तार एक साथ जुड़ सकते हैं।


1
PPCG में आपका स्वागत है! अच्छी चुनौती है।
Giuseppe

मैंने प्रारूपण को साफ करने और चुनौती को थोड़ा बेहतर ढंग से समझाने की कोशिश की। क्या मैंने चुनौती को सही समझा?
R

2
क्या हम इनपुट को पात्रों की सूची के रूप में ले सकते हैं?
JayCe

5
हम तार के 2 डी-सरणी का उत्पादन कर सकते हैं जैसे [["c","c","c","c","c"],["ca","ca","ca","ca","ca","ca","ca","ca","ca","ca"],...]:?
झबरा

3
अग्रणी या अनुगामी newlines के साथ आउटपुट स्वीकार्य हैं? क्या हम मान सकते हैं कि इनपुट्स में नईलाइन नहीं हैं?
अतिरेक

जवाबों:


12

आर , 48 बाइट्स

function(s)substring(s,1,rep(x<-1:nchar(s),x*5))

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

तार की सूची लौटाता है।


मैं यहाँ स्पष्ट गोल्फ याद किया था! अच्छा समाधान मैंने अलग-अलग तरीकों की कोशिश की, लेकिन अभी तक सभी इससे बहुत लंबे हैं।
JayCe

9

05AB1E , 6 बाइट्स

ηā5*ÅΓ

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

स्ट्रिंग की एक सूची देता है।

व्याख्या

     ÅΓ # Run-length decode...
η       # ... the prefixes of the input
 ā5*и   # ... with the length range multiplied by 5 -- [5, 10, 15, 20, 25]

@ केविनक्रूजसेन ने ध्यान देने के लिए धन्यवाद! मुझे सुबह बिना कॉफी पहले गोल्फ नहीं करना चाहिए :-(
कलाडो

1
रन लेंथ डिकोडिंग के प्रयोग से 3 बाइट्स बचते हैं:ηā5*ÅΓ
अदनान

@ अदनान शानदार, धन्यवाद! मुझे लगता है कि यह अपने जवाब का हकदार है, हालांकि, आपने बाइट की संख्या को 33% तक कम कर दिया है ... यदि आप इसे स्वयं पोस्ट करने का निर्णय लेते हैं तो मैं अपने मूल समाधान पर वापस लौटूंगा।
कलडो

एक अच्छा, मैं ηvyg5*Fy=8 के लिए था
मैजिक ऑक्टोपस Urn



6

टीआई-बेसिक (TI-84 प्लस CE), 29 बाइट्स (27 टोकन)

For(A,1,length(Ans
For(B,1,5A
Disp sub(Ans,1,A
End
End

स्पष्टीकरण:

For(A,1,length(Ans # 9 bytes, 8 tokens: for A from 1 to the length of the string
For(B,1,5A         # 8 bytes, 8 tokens:  5*A times
Disp sub(Ans,1,A   # 9 bytes, 8 tokens:   Print the first A characters of the string 
End                # 2 bytes, 2 tokens:  end loop
End                # 1 byte,  1 token:  end loop

6

रेटिना , 15 बाइट्स

.
$.>`*5*$($>`¶

इसे ऑनलाइन आज़माएं! लिंक में परीक्षण के मामले शामिल हैं। स्पष्टीकरण:

.

स्ट्रिंग में प्रत्येक वर्ण का मिलान करें।

$.>`*5*$($>`¶

$`मैच का उपसर्ग है। इसके बाद रेटिना दो मॉडिफ़ायर प्रदान करती है, >इसे क्रमिक मैचों के बीच स्ट्रिंग के संदर्भ में संशोधित करती है, जबकि .लंबाई लेती है। इसलिए हम प्रत्यय के उपसर्ग के साथ शुरू करते हैं, जो इसके उपसर्ग सहित मैच के बराबर है। यह अतिव्यापी मैचों का उपयोग करके 2 बाइट्स बचाता है। $(तो संयोजित करता है कि एक नई पंक्ति, साथ 5*यह दोहराता है, और फिर $.>`यह दोहराता इसकी लंबाई द्वारा दिए गए समय की एक और नंबर।




6

क्यूबिक्स ,  44  40 बाइट्स

i.!?@UBqwW_#/>u...;B^...?qo;;q*n5;oN/./)

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

यह अभी भी बहुत सारे ऑप्स है, लेकिन यह पहले से थोड़ा बेहतर है।

एक बहुत ही संक्षिप्त विवरण के रूप में, एक चरित्र इनपुट से पकड़ा गया है और ईओआई (-1) के लिए परीक्षण किया गया है, यदि यह है तो रोकें। इसके बाद स्टैक को उलट दिया जाता है। स्टैक पर आइटम की संख्या प्राप्त करें और -5 से कई। स्टैक के निचले भाग तक छोड़ें और सफाई करें। स्टैक के माध्यम से लूप, मुद्रण, एक नकारात्मक संख्या तक। न्यूलाइन प्रिंट करें, संख्या बढ़ाएँ, यदि 0 शून्य गिरा, स्टैक को रिवर्स करें और इनपुट से फिर से शुरू करें, अन्यथा स्टैक के माध्यम से लूप करें, मुद्रण करें, जब तक कि एक ऋणात्मक संख्या ... विज्ञापन nauseum

क्युबिफाइड ऐसा दिखता है

      i . !
      ? @ U
      B q w
W _ # / > u . . . ; B ^
. . . ? q o ; ; q * n 5
; o N / . / ) . . . . .
      . . .
      . . .
      . . .

इसे ऑनलाइन देखें



5

जावास्क्रिप्ट, 48 46 बाइट्स

(साभार @redundancy)

संपादित करें: लेखक ने स्पष्ट किया और यह उत्तर अब मान्य नहीं है, लेकिन मैं इसे अपरिवर्तित छोड़ दूंगा।

मल्टी-लाइन स्ट्रिंग्स की एक सरणी देता है।

s=>[...s].map(c=>(q+=c).repeat(5*++i),i=q=`
`)

कोशिश करो

f = s=>[...s].map(c=>(q+=c).repeat(5*++i),i=q=`
`);

console.log( f("hello").join`` );

संभावित रणनीति:

इससे मुझे बहुत मदद नहीं मिली, लेकिन शायद कोई इसका इस्तेमाल कर सकता है:

(0-अनुक्रमित) लाइन पर वर्णों की संख्या iहै floor(sqrt(2/5*i+1/4)+1/2), जो कि जावास्क्रिप्ट के रूप में गोल्फ है (.4*i+.25)**.5+.5|0

लंबाई की एक स्ट्रिंग के लिए n, n*(n+1)*5/2लाइनें हैं।

शायद: s=>{for(i=0;(n=(.4*i+++.25)**.5+.5|0)<=s.length;)console.log(s.slice(0,n))}


1
अपने आउटपुट स्वरूप को चुनौती के अनुसार मान्य मानते हुए, आप यहाँ प्रदर्शित के रूप में 2 बाइट्स बचा सकते हैं: इसे ऑनलाइन आज़माएं!
अतिरेक



3

भूसी , 8 बाइट्स

ΣzoR*5Nḣ

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

व्याख्या

Σz(R*5)Nḣ  -- example input: "ab"
        ḣ  -- non-empty prefixes: ["a","ab"]
 z(   )N   -- zip with [1..]
    *5     -- | multiply by 5
   R       -- | replicate
           -- : [["a","a","a","a","a"],["ab","ab","ab","ab","ab","ab","ab","ab","ab","ab"]]
Σ          -- concat: ["a","a","a","a","a","ab","ab","ab","ab","ab","ab","ab","ab","ab","ab"]

3

हास्केल, 46 43 42 बाइट्स

f s=do n<-[1..length s];take n s<$[1..n*5]

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

दु: ख की initsआवश्यकता है import Data.List, इसलिए

import Data.List
((<$)<*>(>>[1..5])=<<).inits

इसके 45 बाइट्स लंबे हैं।

संपादित करें: -1 बाइट @BWO के लिए धन्यवाद।


3

चारकोल , 11 बाइट्स

F⊕LθE×⁵ι…θι

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। आउटपुट में शून्य-लंबाई के विकल्प की 0 पुनरावृत्ति शामिल है। स्पष्टीकरण:

   θ          Input string
  L           Length
 ⊕            Incremented
F             Loop over implicit range
      ⁵       Literal 5
       ι      Current index
     ×        Multiply
    E         Map over implicit range
         θ    Input string
          ι   Current index
        …     Chop to length
              Implicitly print each string on its own line


3

पॉवरशेल , ४० २० 25 बाइट्स

आधे में कटौती कट mazzy
के लिए धन्यवाद +5 बाइट्स AdmBorkBork के लिए धन्यवाद ऐनक की ओर इशारा करते हुए

$args|%{,($s+=$_)*5*++$i}

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

विभाजन के माध्यम से इनपुट लेता है। अगले चरित्र को खुद से जोड़कर स्ट्रिंग का निर्माण करता है, इसे एक तत्व सरणी में परिवर्तित करता है, और फिर इसे दोहराता है5*i कई बार ।


1
paramबहुत कीमती है। इससे बचने की कोशिश करें
mazzy

@mazzy डांग, चर की बजाय सूचकांक को बचाने की कोशिश कर रहा था जिससे मैं भटक गया। धन्यवाद।
विस्कह

@AdmBorkBork हा हा, वूप्स। अब तय किया जाना चाहिए
Veskah

2

MATL , 12 बाइट्स

f"G@:)@5*1X"

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

f               % Get the indices of input i.e. range 1 to length(input)
 "              % For loop over that
   G            % Push input string
    @           % Push current loop index
     :          % Range 1 to that
      )         % Index at those positions (substring 1 to i)
       @5*      % Multiply loop index by 5
          1X"   % Repeat the substring that many times rowwise
                % Results collect on the stack and are 
                %  implicitly output at the end

2

वी , 17 बाइट्स

òïç$îî/6Ä
Hl$xòxú

नई सुर्खियों के बिना इनपुट की अपेक्षा करता है, और नए प्रमुख समाचारों के साथ आउटपुट देता है।

मैं इस प्रविष्टि को हटा सकता हूं यदि इनपुट / आउटपुट चुनौती युक्ति का उल्लंघन करता है।

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

21 बाइट्स

òïç$îî/6Ä
Hl$xòxíîî/ò

नई लाइनों के बिना इनपुट की अपेक्षा करता है, लेकिन केवल एक अग्रणी और अनुगामी न्यूलाइन के साथ आउटपुट करता है।

व्याख्या

डिफरेंशियल सब्सट्रिंग को दो लगातार न्यूलाइन्स के साथ अलग किया जाता है ताकि लाइनवेज दोहराव केवल रेगेक्स से मेल खाती लाइनों पर लागू हो $\n\n

जब दोहराव कमांड ( Ä) को एक गिनती प्रदान की जाती है, उदाहरण के लिए , (मुझे लगता है) यह वर्तमान रेखा को पेस्ट करने से पहले हटा देता है n, इस प्रकार केवल n - 1प्रतियों को संलग्न करने के लिए दिखाई देता है ।

ò         | recursively...
 ï        | . append newline
  ç       | . globally search lines matching...
   $îî    | . . compressed version of $\n\n regex
      /6Ä | . . duplicate to create 6 copies
H         | . go to first line
 l        | . move cursor right 1 char
          | . . if current line is 1 char long, errors out of recursion
  $x      | . delete 1 char from end of current line
    ò     | ...end
     x    | delete extra 1-char substring
      ú   | sort so that newlines rise to top

2

एपीएल (डायलॉग यूनिकोड) , 14 बाइट्स SBCS

{↑(5×⍳≢⍵)/,\⍵}

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

मेरी पहली apl पोस्ट तो कृपया मुझे बताएं कि क्या आपके पास कोई सुझाव है

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

{↑(5×⍳≢⍵)/,\⍵}
          ,\⍵  - Prefixes of the input
         /      - Repeated
     ⍳≢⍵        - By a list of indices the same length as the input
   5×           - Times 5
               - Separate into rows         

वास्तव में पंक्तियों में अलग नहीं है , बल्कि [सूचियों की सूची] एक मैट्रिक्स में [पंक्तियों में] , या अधिक तकनीकी रूप से गहराई की कीमत पर रैंक बढ़ाएं
आदम डे


1

पर्ल 6 , 25 बाइट्स

{(1..*X*5)RZxx[\~] .comb}

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

अनाम कोड ब्लॉक जो स्ट्रिंग की सूची की एक सूची लौटाता है।

यदि आप इसे 1D सरणी के रूप में चाहते हैं, तो आप flatइस तरह से सामने जोड़ सकते हैं :

{flat (1..*X*5)RZxx[\~] .comb}

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

स्पष्टीकरण:

{                       }  # Anonymous code block
                   .comb   # Split the string into a list of characters
              [\~]         # Triangular reduce the list of characters with the concatenate operator
          RZxx             # Multiply each list by:
 (1..*X*5)                 # A sequence of 5,10,15 etc.

वैकल्पिक रूप से,

{($+=5)xx*RZxx[\~] .comb}

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

बाइट्स की समान मात्रा के लिए भी काम करता है।


1

जाप, 10 बाइट्स

इस बात की पुष्टि करना कि क्या आउटपुट स्वरूप स्वीकार्य है (+2 बाइट्स यदि नहीं)।

å+ £T±5 ÇX

कोशिश करो


आउटपुट मुझे उचित लगता है, अच्छी तरह से किया गया।
लीख


1

जावास्क्रिप्ट, 76 बाइट्स

s=>{for(i=1;i<=s.length;i++)for(j=0;j<5*i;j++)console.log(s.substring(0,i))}

f=s=>{for(i=1;i<=s.length;i++)for(j=0;j<5*i;j++)console.log(s.substring(0,i))}

f("cat")


नमस्कार और पीपीसीजी में आपका स्वागत है।
जोनाथन फ्रीच

i=1;i<=s.length;i++हो सकता है i=0;++i<=s.length;
जोनाथन फ्रीच

1

फोर्थ (gforth) , 48 बाइट्स

: f 1+ 1 do i 5 * 0 do dup j type cr loop loop ;

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

व्याख्या

  1. 1 से स्ट्रिंग-लंबाई तक लूप
  2. प्रत्येक पुनरावृत्ति के लिए:
    1. लूप (5 * लूप इंडेक्स) बार
    2. शुरुआत से लेकर बाहरी लूप इंडेक्स तक प्रिंट स्ट्रिंग

कोड स्पष्टीकरण

: f                \ start a new word definiton
  1+ 1             \ set up to the loop paramers from 1 to str-length
  do               \ start a counted loop
    i 5 * 0 do     \ start a second counted loop from 0 to 5*index - 1
      dup j        \ duplicate the string address and set the length to the outer index
      type         \ print character from start of string to loop index
      cr           \ output a newline
    loop           \ end inner counted loop
  loop             \ end outer counted loop
;                  \ end word definition

1

जावा 10, 120 92 90 89 बाइट्स

s->{for(int j=1,i=1;i<=s.length();i+=++j>i*5?j=1:0)System.out.println(s.substring(0,i));}

-28 बाइट्स @ OlivierGrégoire को धन्यवाद ।
-1 बाइट थैंक्यू @ceilingcat

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

स्पष्टीकरण:

s->{                      // Method with String parameter and no return-type
  for(int j=1,            //  Repeat-integer, starting at 1
      i=1;i<=s.length()   //  Loop `i` in the range [1,length_input]
      ;                   //    After every iteration:
       i+=++j>i*5?        //     Increase `j` by 1 first with `++j`
                          //     If `j` is now larger than `i` multiplied by 5:
           j=1            //      Increase `i` by 1, and reset `j` to 1
          :               //     Else:
           0)             //      Leave `i` the same by increasing it with 0
    System.out.println(   //   Print with trailing newline:
      s.substring(0,i));} //    The prefix of size `i`

1
92 बाइट्स :s->{for(int i=1,j=1;i<=s.length();i+=j++<i*5?0:+(j=1))System.out.println(s.substring(0,i));}
ओलिवियर ग्राएगोयर

@ OlivierGrégoire धन्यवाद! और मैं का उपयोग कर बदलकर गोल्फ 2 अधिक बाइट्स कर लिया है >=और ?j=1:0के बजाय <और ?0:+(j=1)
केविन क्रूज़सेन

अच्छा! मैं इससे छुटकारा पाने की कोशिश कर रहा था, लेकिन मेरे पास संकलन मुद्दे थे। हालत बदलने के बारे में नहीं सोचा था। बहुत बढ़िया! ;)
ओलिवियर ग्रेजायर

@ceilingcat धन्यवाद
केविन क्रूज़सेन


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