तार को लोच देने के लिए एक कार्यक्रम लिखें


33

शीर्षक में अच्छी क्रिया है।

एक प्रोग्राम लिखें जो एक इनपुट स्ट्रिंग देता है, इस स्ट्रिंग को "लोचदार" करेगा और परिणाम को आउटपुट करेगा। एक स्ट्रिंग को बढ़ाना निम्नानुसार किया जाता है:

पहला किरदार एक बार दिखाया गया है। दूसरा चरित्र दो बार दिखाया गया है। तीसरे चरित्र को तीन बार दिखाया गया है, और इसी तरह।

जैसा कि आप देख सकते हैं, एक निश्चित चरित्र के दोहराव की मात्रा स्ट्रिंग में इसकी पिछली घटनाओं के विपरीत चरित्र के सूचकांक से संबंधित है।

आप केवल मुद्रण योग्य ASCII वर्ण प्राप्त करने की अपेक्षा कर सकते हैं। निम्नलिखित लिंक के आधार पर , इन वर्णों में दशमलव मान 32-126 है।

उदाहरण:

Why: Whhyyy

SKype: SKKyyyppppeeeee

LobbY: LoobbbbbbbYYYYY (ध्यान दें कि कैसे 7 बी होते हैं क्योंकि पहले बी को 3 बार दिखाया जाता है और दूसरे बी को 4 बार दिखाया जाता है, जिससे कुल 7 बी बनते हैं।

A and B: A aaannnnddddd BBBBBBB

सबसे छोटा बाइट्स जीतता है :)


2
ऐसा लगता है कि "व्हाट्सएप के लिए कोई समर्थन की आवश्यकता नहीं है, अंतरिक्ष चरित्र के अलावा अन्य"। क्या आउटपुट इनपुट के समान होना चाहिए? (दो एक अक्षर के शब्द?) यह भी ध्यान दें कि हमारे पास सैंडबॉक्स नामक एक अच्छी जगह है जहाँ आप लोगों को पोस्ट करने से पहले आपको प्रतिक्रिया देने के लिए चुनौती दे सकते हैं।
FryAmTheEggman

FryAmTheEggman आपकी धारणा वैध है। @TimmyD मुझे एहसास है कि मैं स्पष्ट नहीं था, आप अंत में मेरे कई रिक्त स्थान को अलग कर सकते हैं, जैसा कि FryAmTheEggman ने उदाहरण में देखा है।
Is में मारियो इश

मैं मान रहा हूँ कि सबसे छोटा कोड जीतता है? ;)
अदनान

@ अदनान हां, हालांकि मुझे यकीन नहीं है कि अगर मुझे स्वीकार किए गए कार्यक्रम के साथ उत्तर को चिह्नित करना चाहिए, क्योंकि कुछ भाषाएं दूसरों के विपरीत गोल्फिंग उद्देश्यों के लिए बनाई गई हैं।
मारियो इश

2
संबंधित: 1 , 2
Sp3000

जवाबों:


34

जेली , 3 बाइट्स

कोड:

ĖP€

स्पष्टीकरण:

Ė     # Enumerate.
 P€   # Product of each.
      # Implicit joining of everything.

जेली एन्कोडिंग का उपयोग करता है । इसे ऑनलाइन आज़माएं!


16
इस तथ्य का अच्छा दुरुपयोग है कि पायथन ने *स्ट्रिंग गुणन किया है। यह वास्तव में इरादा नहीं है, लेकिन यह काम करता है।
डेनिस

1
@ डेनिस: कौन सा *? पूरे उत्तर में ऐसी कोई बात नहीं है।
थॉमस वेलर

10
@ थोमस: जेली पायथन में लिखा गया है, और जेली Pकमांड पायथन *ऑपरेटर का उपयोग करके पर्दे के पीछे उत्पाद की गणना करता है । यह पोस्ट वास्तव में पायथन में अंतर्निहित कोड के रिसाव को रोक रहा है, इसलिए Pएक स्ट्रिंग (उत्पाद) कमांड को उम्मीद के मुताबिक काम करता है।
मेलमोकब

16

जे, 4 बाइट्स

#~#\

प्रयोग

   f =: #~#\
   f 'Why'
Whhyyy
   f 'SKype'
SKKyyyppppeeeee
   f 'LobbY'
LoobbbbbbbYYYYY
   f 'A and B'
A  aaannnnddddd      BBBBBBB

व्याख्या

#~#\  Input: s
  #\  Computes the length of each prefix of s
      This forms the range [1, 2, ..., len(s)]
#~    For each value in the range, copy the character at the
      corresponding index that many times
      Return the created string

12

ब्रेनफक, 15 बाइट्स

,[>+[->+<<.>],]

सुंदर सीधा कार्यान्वयन, प्रत्येक इनपुट चार के लिए मेमोरी स्पेस को 1 से स्थानांतरित करना। एक इंटरप्रेटर की आवश्यकता होती है जो ईओएफ पर 0 देता है, और 255 वर्णों से अधिक समय तक इनपुट के लिए 32-बिट / मनमाना सटीक कोशिकाओं।

इसे ऑनलाइन आज़माएं! (नोट: TIO 8-बिट कोशिकाओं का उपयोग करता है)


1
इसके अलावा, मुझे लगता है कि यह 255 से अधिक वर्णों के लिए काम नहीं करता है।
इस्माईल मिगुएल

@IsmaelMiguel जो इस बात पर निर्भर करेगा कि प्रश्न में दुभाषिया की मनमानी सटीक पूर्णांक है या नहीं (लेकिन वास्तव में, अधिकांश कार्यान्वयन के लिए, यह 255 पर कैप करेगा)
Sp3000

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

1
@IsmaelMiguel श्योर, विख्यात।
Sp3000

8

जावा, 158 121 बाइट्स

केविन क्रूज़सेन की बदौलत 37 बाइट्स बचाए !

interface a{static void main(String[]A){int b=0,B;for(char c:A[0].toCharArray())for(B=b+++2;--B>0;)System.out.print(c);}}

एक बोनस के रूप में, यह कार्यक्रम अस्तित्व में सभी यूनिकोड वर्णों को संभाल सकता है, जिसमें मूल बहुभाषी विमान के बहुत अंत में स्थित नियंत्रण वर्ण शामिल हैं ।


3
हुह, यह एक जावा कोड के लिए बहुत छोटा है।
Ave

1
आप की जगह 1 बाइट से यह छोटा कर सकते हैं for(int C=c+1;C>0;C--)के साथfor(int C=c+2;--C>0;)
केविन Cruijssen

2
या उससे भी कम ( 121 बाइट्स ):interface a{static void main(String[]A){int x=0,i;for(char c:A[0].toCharArray())for(i=x+++2;--i>0;)System.out.print(c);}}
केविन क्रूज़सेन

ठीक है, बस इसे एक मेमना या एक विधि बनाओ
लीक नून

2
वाह, interfaceडिफ़ॉल्ट publicविधियों के लिए उपयोग करना । वह स्मार्ट है।
जस्टिन

7

पर्ल, 16 बाइट्स

s/./$&x$+[0]/ge

-pध्वज के लिए +1 बाइट ।

s/./        /    find every character
             g   globally
              e  and replace with the eval'd result of
    $&           the matched string
      x          repeated
       $+[0]     by the index of the character after the match

7

हास्केल, 29 बाइट्स

concat.zipWith replicate[1..]

प्रयोग उदाहरण: concat.zipWith replicate[1..] $ "SKype"-> "SKKyyyppppeeeee"

replicate n cसी की एन प्रतियां concatबनाता है और सभी उप सूची में से एक सूची बनाता है।


id=<<एक अच्छा स्पर्श है। :)
सूद

मैं इसे आज़माना चाहता था, लेकिन f = id=<<zipWith replicate[1..](एक फ़ाइल में) असाइन करने से एक बदसूरत त्रुटि हुई, क्या आप बता सकते हैं कि मैं क्या कर रहा हूँ?
दोष

क्या इस (अनाम, सही?) फ़ंक्शन को किसी नाम से निर्दिष्ट करना संभव नहीं है, जैसे कि हम इसे एक फ़ंक्शन के रूप में उपयोग कर सकते हैं? मेरा मतलब है कि अगर यह एक समारोह है, तो (id=<<zipWith replicate[1..] ) "SKype"अभी भी काम करना चाहिए? नहीं तो मैं इसे एक झलकी समझूंगापूरा कार्यक्रम आपके द्वारा दी गई "स्काइप" hardcoded है।
दोष

मैं कहूंगा कि यदि आप इसे किसी अन्य फ़ंक्शन की तरह उपयोग नहीं कर सकते हैं, तो यह फ़ंक्शन नहीं है। उदाहरण के लिए एक फ़ंक्शन के रूप में :tसंबंध नहीं है id=<<zipWith replicate[1..](यह सिर्फ एक त्रुटि फेंकता है) हालांकि (id=<<).zipWith replicate[1..]एक फ़ंक्शन के रूप में माना जाता है। मैं कहूंगा कि पहला वाला सिर्फ एक स्निप है, वह सिर्फ काम करता है अगर आप इनपुट को हार्डकोड करते हैं, लेकिन दूसरा जो आप सिर्फ पोस्टसेट है वह एक फ़ंक्शन है (और :tसहमत है), क्या आप उस पर सहमत होंगे?
दोष

ठीक है अच्छा है! यदि आप मेरी "परिभाषा" से असहमत हैं, तो मुझे लगता है कि हमें इसे साफ़ करने के लिए एक मेटा पोस्ट शुरू करना चाहिए। इस बीच मैं इस बारे में उनकी राय के लिए कुछ अन्य हेकेलियन खोजने की कोशिश कर रहा हूं, क्योंकि यह सिर्फ मेरा विचार है।
21

7

CJam, 9 8 7 बाइट्स

1 बाइट बचाने के लिए jimmy23013 को धन्यवाद।

Sl+eee~

इसका परीक्षण यहां करें।

व्याख्या

LobbYउदाहरण का उपयोग करना :

                                      Stack:
S    e# Push space.                   [" "]
l    e# Read input.                   [" " "LobbY"]
+    e# Append.                       [" LobbY"]
ee   e# Enumerate.                    [[[0 ' ] [1 'L] [2 'o] [3 'b] [4 'b] [5 'Y]]]
e~   e# Run-length decode.            ["LoobbbbbbbYYYYY"]


5

जावास्क्रिप्ट ईएस 6, 39 बाइट्स

x=>x.replace(/./g,(y,i)=>y+y.repeat(i))

एक ही लंबाई, लेकिन अधिक मजेदार:

x=>x.replace(i=/./g,y=>y.repeat(i=-~i))

स्निपेट डेमो:

f= x=>x.replace(/./g,(y,i)=>y+y.repeat(i))
run.onclick=_=>output.textContent=f(input.value)
<input id="input" value="SKype">
<button id="run">Go</button>
<pre id="output"></pre>


छोटी त्रुटि, कार्यक्रम रिक्त स्थान का समर्थन नहीं करता है, जिसे प्रस्तुत करने (ओपी की जांच) के रूप में आवश्यक है।
मारियो इशाक

@ मर्देव मैंने <pre>इसके बजाय उपयोग करने के लिए स्निपेट को बदल दिया <div>, जिससे मदद मिलनी चाहिए।
नील

1
@ नील आह, तो परिणाम सही ढंग से गणना की गई थी, लेकिन आउटपुट HTML द्वारा गलत तरीके से प्रस्तुत किया गया था। भूल गए कि <div> ऐसा करता है।
मारियो इश

... "और परिणाम का उत्पादन करें"
खर्च करें

1
@ स्पेंडर रिटर्न फंक्शन के लिए आउटपुट का एक वैध रूप है
बिल्ली

4

एपीएल (8)

{⍵/⍨⍳⍴⍵}

अर्थात:

      {⍵/⍨⍳⍴⍵} ¨  'Why' 'SKype' 'LobbY'
┌──────┬───────────────┬───────────────┐
│Whhyyy│SKKyyyppppeeeee│LoobbbbbbbYYYYY│
└──────┴───────────────┴───────────────┘

स्पष्टीकरण:

  • ⍴⍵: दी गई वेक्टर की लंबाई
  • : संख्या 1. एन
  • ⍵/⍨: प्रत्येक तत्व को N बार में दोहराते हैं ।

4

MATLAB, 45 बाइट्स

g=@(m)sort(m(m>0));@(s)s(g(hankel(1:nnz(s))))

स्पष्टीकरण: कुंजी वह है hankel, जो किसी दिए गए वेक्टर के हैंकेल मैट्रिक्स का उत्पादन करती है। इस मैट्रिक्स से, हम सूचकांकों के एक वेक्टर को निकाल सकते हैं, जो परिभाषित करता है कि स्ट्रिंग का कौन सा चरित्र आउटपुट में किस स्थान पर है। उदाहरण hankel(1:4)मैट्रिक्स का उत्पादन करता है:

 1  2  3  4
 2  3  4  0
 3  4  0  0
 4  0  0  0

इस मैट्रिक्स से हम वेक्टर को एक्स्ट्रा कर सकते हैं 1,2,2,3,3,3,4,4,4,4,4। यह वेक्टर हमें एक बार स्ट्रिंग के पहले चरित्र को , दूसरे को दो बार आउटपुट करने आदि की अनुमति देता है


4

NARS2000 , 6 चार्ट = 12 बाइट्स

⍳∘⍴/⊙⊢

⍳∘⍴तर्क की गणना ... (इसकी लंबाई के सूचकांकों)
/⊙...
अनमॉडिफाइड तर्क के तत्वों को दोहराता है


दुभाषिया के लिए लिंक?
बिल्ली

@cat संपादित करें (हेडर में) देखें।
Adám

@cat आपका संपादन क्या था?
अदम

किरदार के प्रति आपकी अपनी पहचान है, क्योंकि मैंने इसे खुद जाना और मेरे संपादन को प्रस्तुत करने में 10 मिनट का समय लगा
कैट

इसके अलावा, यह 6 बाइट्स किस कोडपेज में है?
बिल्ली

3

PowerShell v2 +, 36 बाइट्स

-join([char[]]$args[0]|%{"$_"*++$i})

इनपुट लेता है $args[0], स्पष्ट रूप से इसे एक charसरणी के रूप में रखता है, जो लूप में भेजता है |%{...}। प्रत्येक पुनरावृत्ति हम वर्तमान पत्र / चरित्र लेते हैं "$_"और *स्ट्रिंग को पूर्व-इंक्रीमेंट किए गए $iसमय को बदलने के लिए अतिभारित ऑपरेटर का उपयोग करते हैं । प्रत्येक लूप पुनरावृत्ति का परिणाम एक सरणी बनाने और फिर -joinएक स्ट्रिंग बनाने के लिए एक साथ एड के लिए Parens में समझाया गया है । उस तार को पाइपलाइन पर छोड़ दिया गया है और आउटपुट निहित है।

उदाहरण

PS C:\Tools\Scripts\golfing> .\elasticize-a-word.ps1 Why
Whhyyy

PS C:\Tools\Scripts\golfing> .\elasticize-a-word.ps1 SKype
SKKyyyppppeeeee

PS C:\Tools\Scripts\golfing> .\elasticize-a-word.ps1 LobbY
LoobbbbbbbYYYYY

PS C:\Tools\Scripts\golfing> .\elasticize-a-word.ps1 'a b'
a  bbb

3

ब्रेकीलॉग , 13 बाइट्स

:ImC,0:Ie,Cw\

यह परिणाम को प्रिंट करता है STDOUT

व्याख्या

यह पाश के पीछे के शोषण का एक अच्छा उदाहरण है।

:ImC            C is the Ith character of the Input
    ,
     0:Ie       Unify an implicit variable with an integer between 0 and I
         ,
          Cw    Write C to STDOUT
            \   False, trigger backtracking. It will go back to 0:Ie and unify the implicit
                variable with another integer, until all integers were used. After that, it
                will backtrack to :ImC and unify I and C with the next character.

3

MATLAB, 23 बाइट्स

@(x)repelem(x,1:nnz(x))

एक अनाम फ़ंक्शन बनाता ansहै जिसे उपयोग करके बुलाया जा सकता हैans('stringtoelacticize')


आप कौन सा संस्करण उपयोग कर रहे हैं? repelemमेरे (अपेक्षाकृत पुराने) संस्करण = (
9

1
@flawr repelemको R2015a
लुइस


3

पर्ल 6 ,  22 20  19 बाइट्स

{S:g/(.)/{$0 x$/.to}/}
{S:g[(.)]=$0 x$/.to}
{[~] .comb Zx 1..*}

स्पष्टीकरण:

{          # implicit parameter $_
  [~]      # string concatenate the following list
    .comb  # the NFG characters from $_
    Z[x]   # zip combined using the string repetition operator
    1 .. * # 1 to infinity
}

3

VBA, 75 बाइट्स

Function e(s):For a=1 To Len(s):e=e &String(a,Mid(s,a,1)):Next:End Function

स्प्रेडशीट में उपयोगकर्ता फ़ंक्शन के रूप में कॉल करें।

= ई (A1)

┌─────────┬───────────────┐
│   SKype │SKKyyyppppeeeee│
└─────────┴───────────────┘

यदि आप इसे अपने स्वयं के आउटपुट को कुछ बार खिलाते हैं तो यह छोटा हो जाता है :-)।


2
साइट पर आपका स्वागत है! =)
DJMcMayhem

3

पीएचपी, 68 बाइट्स

<?php foreach(str_split($argv[1])as$i=>$a)echo str_repeat($a,$i+1);

नमस्ते, और PPCG में आपका स्वागत है! अच्छी पहली पोस्ट!
21'16

आप के लिए नीचे मिल सकती है 47 बाइट्स : for(;$a=$argv[1][$i++];)echo str_repeat($a,$i);
सम्मिलित

3

जावास्क्रिप्ट ईएस 6, 42 41 बाइट्स

s=>[,...s].map((e,i)=>e.repeat(i)).join``

उदाहरण चलता है:

f=s=>[,...s].map((e,i)=>e.repeat(i)).join``

f("Why")   => "Whhyyy"
f("SKype") => "SKKyyyppppeeeee"
f("LobbY") => "LoobbbbbbbYYYYY"

समान लंबाई:s=>[...s].reduce((a,b,i)=>a+b.repeat(i+1))
बैसड्रॉप कंबरवुबवब जुब

2
-1 बाइट:s=>[,...s].map((e,i)=>e.repeat(i)).join``
अंडरस्कोर

@nderscore Aha, चतुर चतुर, धन्यवाद!
डेंड्रोबियम

3

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

बाइट गिनती आईएसओ 8859-1 एन्कोडिंग मानती है।

.
$&$.`$*·
+`(.)·
$1$1

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

मूल रूप से, हम ·पात्रों के बीच प्लेसहोल्डर के रूप में सही मात्रा में सम्मिलित करते हैं (क्योंकि इन विस्तारित ASCII वर्ण इनपुट में प्रकट नहीं हो सकते हैं), फिर उन्हें दूसरे चरण में आसन्न चरित्र के साथ भरें।


3

आर , 83 50 बाइट्स

-23 Giuseppe के लिए धन्यवाद, हालांकि वह अनिवार्य रूप से पूरी तरह से एक नई विधि का उपयोग करता था

function(s)intToUtf8(rep(utf8ToInt(s),1:nchar(s)))

मेरी मूल पोस्ट:

function(s){r="";for(i in 1:nchar(s))r=paste0(r,strrep(el(strsplit(s,""))[i],i));r}

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

मुझे ऐसा लगता है कि निश्चित रूप से ऐसा करने का एक बेहतर तरीका है, लेकिन आर में कुछ कार्यों के अपने नए ज्ञान के साथ, यह मेरा दृष्टिकोण है।


1
एक गोल्फ टिप नहीं, लेकिन आपके कोड लिंक आउटपुट को गड़बड़ कर दिया गया था। यहाँ
रॉबर्ट एस।

ओह समझा। मैं TIO के लिए नया हूं, इसलिए मैंने शीर्ष लेख / पाद लेख भागों को नहीं समझा। धन्यवाद!
सुमेर


1
बहुत अच्छा! हालांकि, का उपयोग करते हुए repऔर तर्क collapse=""करने के लिए pasteकम है, और utf8ToIntअभी भी कम है! TIO
Giuseppe



2

पायथन 3, 48 47 बाइट्स

चाल के साथ एक बाइट बचाने के लिए mego के लिए धन्यवाद -~i

lambda s:''.join(c*-~i for i,c in enumerate(s))

यह ज्यादातर आत्म-व्याख्यात्मक है। पायथन में पारंगत न होने वालों के लिए एक बात: *ऑपरेटर को पर्ल के xऑपरेटर की तरह कार्य करने के लिए अतिभारित किया जाता है , इसके स्ट्रिंग तर्क को उसके संख्यात्मक तर्क द्वारा निर्दिष्ट समय की संख्या को दोहराता है। उदाहरण के लिए'foo' * 3 == 'foofoofoo'


c*-~iसे छोटा है c*(i+1)
मेगो

2

सी #, 81 बाइट्स

void f(string s){for(int i=0;i<s.Length;i++)Console.Write(new String(s[i],i+1));}

आप एक बाइट लूप में बदलकर 1 बाइट बचा सकते हैं, जैसेforeach(var a in s)Console.Write(new C(a,1*i++));
अब्बथ

लेकिन अगर इसका फॉर्च्यूनर हमारे पास i वैरिएबल नहीं है तो आपको इसे घोषित करने की आवश्यकता होगी।
ScifiDeath

ऐसा लगता है कि आप using Systemया के System.सामने एक याद कर रहे हैं Console
मार्टिन एंडर

@ सचाई यह सच है - लेकिन अंतिम परिणाम अभी भी एक बाइट कम है। इसे छोड़ने के लिए क्षमा करें और भ्रम पैदा करेंint i=1;
अब्बथ

इसके अलावा Linq का उपयोग कर एक बाइट कम void f(string s){s.Select((c,i)=>{Console.Write(new string(c,i+1));return c;});}:। हालांकि (अप्रयुक्त) रिटर्न वैल्यू की आवश्यकता बदसूरत है। संपादित करें: अभी अन्य उत्तर में भी इसी तरह के स्निपेट्स मिले हैं।
linac


2

पायथन, 40 बाइट्स

f=lambda s,i=1:s and s[0]*i+f(s[1:],i+1)

2

जूलिया, 34 बाइट्स

!s=s>""?!s[1:(e=end)-1]*s[e:e]^e:s

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


आपका समाधान अच्छा था। लेकिन मैं इसे हराने में कामयाब रहा।
ग्लेन ओ

मैंने देखा। मेरे पास था c%n="$c"^n;~s=join([s[r=1:end]...].%r), लेकिन यह वास्तव में लंबा है। splitपहेली का गायब टुकड़ा था।
डेनिस

2

TSQL, 97 बाइट्स

golfed:

DECLARE @x varchar(max)='Lobby'
DECLARE @ int=LEN(@x)WHILE @>0SELECT
@x=STUFF(@x,@,1,REPLICATE(SUBSTRING(@x,@,1),@)),@-=1PRINT @x

Ungolfed:

DECLARE @x varchar(max)='Lobby'

DECLARE @ int=LEN(@x)
WHILE @>0
  SELECT 
    @x=STUFF(@x,@,1,REPLICATE(SUBSTRING(@x,@,1),@)),
    @-=1

PRINT @x

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

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