शब्द को खींचो


50

इनपुट लोअरकेस अक्षरों का एक शब्द है जिसे व्हाट्सएप द्वारा अलग नहीं किया गया है। अंत में एक नई लाइन वैकल्पिक है।

एक संशोधित संस्करण में एक ही शब्द का आउटपुट होना चाहिए: प्रत्येक वर्ण के लिए, मूल शब्द में प्रकट होने वाले दूसरी बार इसे दोगुना करें, इसे तीसरी बार ट्रिपल करें आदि।

उदाहरण इनपुट:

bonobo

उदाहरण आउटपुट:

bonoobbooo

मानक I / O नियम लागू होते हैं। बाइट्स में सबसे छोटा कोड जीतता है।

@Neil द्वारा प्रदान किए गए टेस्ट:

tutu -> tuttuu
queue -> queuuee
bookkeeper -> boookkkeeepeeer
repetitive -> repeetittiiveee
uncopyrightables -> uncopyrightables
abracadabra -> abraacaaadaaaabbrraaaaa
mississippi -> misssiisssssssiiipppiiii

जवाबों:


36

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

;\f"

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

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

;\f"  Main link. Argument: S (string)

;\    Cumulatively reduce by concatenation.
      This yields the array of all prefixes of S.
  f"  Vectorized filter.
      Keep only occurrences of the nth letter in the nth prefix.

21
खैर फिर ... चीथड़े।
अदनान

2
यह साइट सर्वश्रेष्ठ सामान्य-उद्देश्य वाली गोल्फ भाषा के लिए एक प्रतियोगिता बन रही है ... ऐसा नहीं है कि यह एक बुरी बात है।
शेल्वैकु

8
@shelvacu उत्तरार्द्ध बहस का विषय है, 2 दोस्तों मैंने पीपीसीजी को दिखाया है कि "सभी शीर्ष उत्तर सिर्फ गोल्फ भाषाओं का उपयोग कर रहे हैं" की तर्ज पर पहली छाप के रूप में कुछ कहा है।
Insane

@Insane वहाँ हैं / हैं। कोड गोल्फ एक बहुत ही आम बात है। तो भाषाओं को उस उद्देश्य के लिए एक साथ रखा जाता है, विशेष रूप से।
इवान कार्सलेक

यह कैसे काम करता है?
ऑर्गन आउटगॉल्फ

21

अजगर, 6 बाइट्स

1 बाइट लेने के लिए @ डॉर्कनोब को धन्यवाद ।

5 बाइट्स लेने के लिए @Maltysen का धन्यवाद ।

s@VQ._

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

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


उदाहरण के लिए, स्ट्रिंग लें "bonobo"

._ एक सूची बनाता है: ['b', 'bo', 'bon', 'bono', 'bonob', 'bonobo']

VQ._का अर्थ है "पूर्ववर्ती कार्य वेक्टर किए गए (समानांतर में लागू) से अधिक Qऔर ._", जिसका अर्थ है Q(मूल्यांकन किया गया इनपुट) को एक सूची के रूप में माना जाएगा: ['b', 'o', 'n', 'o', 'b', 'o']और फिर उन्हें @इस तरह से जोड़ा जाएगा :

     Q      ._         @ (intersect)
0:  'b'     'b'       'b'
1:  'o'     'bo'      'o'
2:  'n'     'bon'     'n'
3:  'o'     'bono'    'oo'
4:  'b'     'bonob'   'bb'
5:  'o'     'bonobo'  'ooo'

इसलिए, @VQ._उत्पादन करेंगे ['b', 'o', 'n', 'oo', 'bb', 'ooo']

sफिर उन सभी को मिलती है एक साथ, एक स्ट्रिंग बनाने 'bonoobbooo', जो तब परोक्ष बाहर छपा है बनने के लिए bonoobbooo


2
केनी, आपका स्पष्टीकरण गलत है। VQकेवल इसका मतलब है कि for N in Qजब यह किसी फ़ंक्शन के अंदर नहीं है। इस मामले में, वास्तव में क्या चल रहा है @Vइसका मतलब है कि @फ़ंक्शन अपने अगले दो तर्कों पर वेक्टरकृत (समानांतर में लागू) है, Qऔर ._। यह डॉक्स से गायब है, इसलिए मैं इसे ठीक कर दूंगा।
isaacg

14

रेटिना , 34 19 बाइट्स

इसहाक के समाधान से कुछ प्रेरणा लेकर 15 बाइट्स बचाए।

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


$`¶
(\D)(?!.*\1¶)

अग्रणी और पीछे की खाली लाइनें महत्वपूर्ण हैं।

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

व्याख्या


$`¶

यह एक प्रतिस्थापित चरण है जो खाली रेगेक्स (यानी स्ट्रिंग में प्रत्येक शून्य-चौड़ाई की स्थिति) से मेल खाता है और $`¶इसके लिए विकल्प है, जहां $`मैच का उपसर्ग है और एक लाइनफीड सम्मिलित करता है। यह मूल रूप से सभी उपसर्गों की गणना करता है और उन्हें उस उपसर्ग के अंतिम वर्ण के साथ एक अलग रेखा पर रखता है:

bb
obo
oboo
kbook
kbookk
ebookke
ebookkee
pbookkeep
ebookkeepe
rbookkeeper

कुछ अग्रणी और अनुगामी लाइनफीड होंगे, लेकिन हम उन्हें अनदेखा कर सकते हैं।

इनमें से प्रत्येक उपसर्ग से हम उन पात्रों को रखना चाहते हैं जो अंतिम वर्ण के बराबर हैं। उसके लिए हम दूसरे बदले हुए चरण का उपयोग करते हैं:

(\D)(?!.*\1¶)

यह हर उस चीज से मेल खाता है जिसे हम रखना नहीं चाहते हैं और इसे कुछ नहीं के साथ बदल देता है। हम किसी भी वर्ण से मेल खाते हैं ( \Dचूंकि हम जानते हैं कि इनपुट में अंक नहीं होंगे) और फिर यह सुनिश्चित करें कि पंक्ति के अंत में उस चरित्र की कोई अन्य प्रतिलिपि नहीं है


11

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

मैं एक ही लंबाई के दो जवाबों के साथ फंस गया लगता हूं:

f=lambda x,*y:x and-~y.count(x[0])*x[0]+f(x[1:],x[0],*y)
f=lambda x,y=0:x[y:]and-~x[:y].count(x[y])*x[y]+f(x,y+1)

संपादित करें: एक छोटे, वैकल्पिक पायथन दृष्टिकोण के लिए @ पचोलिक का जवाब देखें ।


मैं तुम्हें मेरे साथ पिटाई करने के लिए इस्तेमाल नहीं कर रहा हूं> <> जवाब, मैं एक गोल के लिए इंतजार कर रहा हूं> <> जवाब ठीक करने के लिए;)
हारून

@ एरोन बहुत बुरा, मैं वास्तव में आपको पीछे से हराकर जा रहा था > <>: P
Sp3000

अजगर में लाइन शोर? क्या विधर्मी !
बिल्ली

क्या करता है - ~ करना मुझे पता है कि यह उपेक्षा के बाद नहीं है, लेकिन आप ऐसा करने की कोशिश कर रहे हैं कि यह कुछ बाइट्स बचाता है?
निक हार्टले

2
@QPaysTaxes यह +1उच्च पर्याप्त पूर्वता के साथ वेतन वृद्धि है ताकि parens आवश्यक नहीं हैं
Sp3000

10

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

f""=""
f x=f(init x)++filter(==last x)x

प्रयोग उदाहरण: f "bonobo"-> "bonoobbooo"

@ डेमियन के उत्तर से काफी अलग । स्ट्रिंग से अंतिम चरित्र की सभी घटनाओं को निकालने और सभी लेकिन अंतिम चरित्र के साथ एक पुनरावर्ती कॉल prepending द्वारा सही से स्ट्रिंग बनाता है।


9

> <> , 27 बाइट्स

>i:0g1+:\
:{-1v!?:<}o
/p${/

आधिकारिक व्याख्याकार की आवश्यकता होती है जो कोड बिंदु -1 को प्रिंट करने का प्रयास करते समय एक त्रुटि के साथ बाहर निकलता है। इसे ऑनलाइन आज़माएं!

कोड एक समय में एक चार इनपुट को पढ़ता है और कोडबॉक्स की पहली पंक्ति का उपयोग एक बड़े सरणी के रूप में करता है जो अब तक देखे गए प्रत्येक नंबर को कितनी बार संग्रहीत करता है (> <> गैर-प्रोग्राम कोशिकाओं को 0 पर आरंभीकृत करता है)। दूसरी पंक्ति एक चार बार कई बार आउटपुट के लिए एक लूप है।

वैकल्पिक रूप से, यहां एक संस्करण है जो सफाई से बाहर निकलता है (37 बाइट्स, ठीक से गोल्फ नहीं):

>i:0(?;:0g1+:\
}o:{-1v!?:   <
v  p${<

लानत है कि अच्छा है! मुझे ऑनलाइन इंटरप्रेटर पर इतना भारी भरोसा करना बंद कर देना चाहिए, मैंने कभी भी इस तरह के एक विशाल कोडबॉक्स का उपयोग करने के बारे में नहीं सोचा होगा, और मुझे यह भी पता नहीं था कि आधिकारिक इंटरप्रेटर -1 प्रिंट पर बाहर निकल गया है
हारून

2
@ ऐरॉन हाँ, यह कोशिश करते समय पाइथन को गलत तरीके से देखने का एक कोरोलरी है chr(-1)। एनिमेटेड दुभाषिया विज़ुअलाइज़ेशन के लिए बहुत अच्छा है, लेकिन दुर्भाग्य से आधिकारिक दुभाषिया के साथ कुछ विसंगतियां थोड़ी परेशान हैं: /
Sp3000

9

जावास्क्रिप्ट (ईएस 6), 48 45 बाइट्स

s=>s.replace(n=/./g,c=>c.repeat(n[c]=-~n[c]))

संपादित करें: @ उपयोगकर्ता81655 के लिए 3 बाइट्स का धन्यवाद सहेजा गया।


8

हास्केल, 50 42 41 बाइट्स

लिन को धन्यवाद के साथ 8 बाइट्स बचाए

f t=[c|(i,c)<-zip[1..]t,x<-take i t,c==x]

1
कैसे के बारे में:f t=[c|(i,c)<-zip[0..]t,j<-[0..i],c==t!!j]
लिन

8

MATL , 8 बाइट्स

tt!=RsY"

इसे ऑनलाइन आज़माएं! या एक बार में सभी परीक्षण मामलों को सत्यापित करें

व्याख्या

t    % take input string implictly. Duplicate
t!   % duplicate and transpose into a column
=    % test for equality with broadcast. Gives an NxN array, where N is
     % input string length
R    % upper triangular part: set entries below the diagonal to 0
s    % sum of each column. For each postion in the input, gives how many
     % times that letter has appeared up to that position
Y"   % replicate elements (run-length decoding). Display implicitly

8

भूलभुलैया , 54 25 बाइट्स

<#; "#: ={},>
 }=}(.);("@

@ MartinBüttner, जो वास्तव में किया था के साथ एक और collab सबसे लगभग गोल्फ के सभी इस एक के लिए। एल्गोरिथ्म को फिर से चालू करके, हम प्रोग्राम के आकार को काफी कम करने में कामयाब रहे हैं!

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

व्याख्या

एक त्वरित लब्रिंथ प्राइमर:

  • भूलभुलैया एक स्टैक-आधारित 2D भाषा है। दो ढेर हैं, एक मुख्य और सहायक स्टैक, और एक खाली स्टैक की पैदावार शून्य से पॉपिंग है।

  • प्रत्येक जंक्शन पर, जहां निर्देश सूचक के नीचे जाने के लिए कई रास्ते हैं, मुख्य स्टैक के शीर्ष को देखने के लिए जाँच की जाती है कि आगे कहाँ जाना है। नेगेटिव लेफ्ट है, जीरो स्ट्रेट फॉरवर्ड है और पॉजिटिव राइट है।

स्मृति विकल्पों के संदर्भ में मनमाने ढंग से सटीक पूर्णांक के दो ढेर ज्यादा लचीलापन नहीं है। काउंटिंग करने के लिए, यह प्रोग्राम वास्तव में एक टेप के रूप में दो स्टैक का उपयोग करता है, जिसमें एक सेल से बाएं / दाएं एक मेमोरी पॉइंटर को स्थानांतरित करने के लिए एक स्टैक से दूसरे में एक मान स्थानांतरित करने के साथ। हालांकि यह उतना नहीं है, क्योंकि हमें रास्ते में हमारे साथ एक लूप काउंटर को खींचने की जरूरत है।

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

सबसे पहले, <और >अंत में एक ऑफसेट को पॉप करते हैं और कोड की पंक्ति को घुमाते हैं जो एक या तो बाएं या दाएं से दूर ऑफसेट करता है। इस तंत्र का उपयोग कोड को लूप में चलाने के लिए किया जाता है - <एक शून्य को पॉप करता है और वर्तमान पंक्ति को बाईं ओर घुमाता है, आईपी को कोड के दाईं ओर डालता है, और >एक अन्य शून्य को पॉप करता है और पंक्ति को वापस ठीक करता है।

ऊपर दिए गए आरेख के संबंध में, प्रत्येक पुनरावृत्ति क्या होती है:

[Section 1]
,}    Read char of input and shift to aux - the char will be used as a counter
      to determine how many elements to shift

[Section 2 - shift loop]
{     Shift counter from aux
"     No-op at a junction: turn left to [Section 3] if char was EOF (-1), otherwise
      turn right
(     Decrement counter; go forward to [Section 4] if zero, otherwise turn right
=     Swap tops of main and aux - we've pulled a value from aux and moved the
      decremented counter to aux, ready for the next loop iteration

[Section 3]
@     Terminate

[Section 4]
;     Pop the zeroed counter
)     Increment the top of the main stack, updating the count of the number of times
      we've seen the read char
:     Copy the count, to determine how many chars to output

[Section 5 - output loop]
#.    Output (number of elements on stack) as a char
(     Decrement the count of how many chars to output; go forward to [Section 6]
      if zero, otherwise turn right
"     No-op

[Section 6]
}     Shift the zeroed counter to aux

[Section 7a]
This section is meant to shift one element at a time from main to aux until the main
stack is empty, but the first iteration actually traverses the loop the wrong way!

Suppose the stack state is [... a b c | 0 d e ...].

=     Swap tops of main and aux               [... a b 0 | c d e ...]
}     Move top of main to aux                 [... a b | 0 c d e ...]
#;    Push stack depth and pop it (no-op)
=     Swap tops of main and aux               [... a 0 | b c d e ...]
      Top is 0 at a junction - can't move
      forwards so we bounce back
;     Pop the top 0                           [... a | b c d e ... ]

The net result is that we've shifted two chars from main to aux and popped the
extraneous zero. From here the loop is traversed anticlockwise as intended.

[Section 7b - unshift loop]

#     Push stack depth; if zero, move forward to the <, else turn left
}=    Move to aux and swap main and aux, thus moving the char below (stack depth)
      to aux
;     Pop the stack depth


7

अजगर, 7 बाइट्स

s@Led._

परीक्षण सूट

DenkerAffe के लिए टेस्ट सूट धन्यवाद

स्पष्टीकरण:

s@Led._
     ._    All prefixes, implicitly applied to the input.
 @L        Filter each prefix for characters equal to
   ed      the last character of the prefix
s          Concatenate and implicitly print.

6

पायथन 3, 52

def f(s):*s,x=s;return s and f(s)+x+x*s.count(x)or x

4
आह, अंत से जाना बहुत अधिक समझ में आता है! आप इस छोटे से एक f=lambda s:s and f(s[:-1])+s[-1]*s.count(s[-1])
लंबोदर में

मैं हालांकि यह इस तरह से किया जा सकता है। लेकिन मुझे पायथन में
उपप्रकार

5

PowerShell v2 +, 52 47 बाइट्स

$b=@{};-join([char[]]$args[0]|%{"$_"*++$b[$_]})

एक खाली हैशटेब का निर्माण करता है, उसे स्टोर करता है $b। यह हमारे द्वारा देखे गए अक्षरों का "काउंटर" है। हम फिर इनपुट लेते हैं $args[0], इसे चार-सरणी के रूप में कास्ट करते हैं, और इसे लूप के माध्यम से भेजते हैं। प्रत्येक पुनरावृत्ति, हम वर्तमान चरित्र को लेते हैं "$_"और इसे दिए गए मूल्य पर पूर्व-संवर्धित काउंटर से गुणा करते हैं, जिससे पहली घटना को गुणा किया जाएगा 1, दूसरा द्वारा 2और इसी तरह। हम -joinयह कहते हैं कि एक ही शब्द के साथ यह सब एक आउटपुट है।

एक बजाए एक सरणी के बजाय हैशटेबल का उपयोग करके TessellatingHeckler के लिए 5 बाइट्स को सहेजा गया, इसलिए हमें 97उचित इंडेक्स तक पहुंचने के लिए ASCII वर्ण को अपघटित करने की आवश्यकता नहीं थी । यह काम करता है क्योंकि हैश सूचकांक में पूर्ववर्ती वृद्धि स्पष्ट रूप .Add()से पृष्ठभूमि में कॉल करती है, यदि वह सूचकांक मौजूद नहीं है, क्योंकि हैशटेबल परिवर्तनशील है।

PS C:\Tools\Scripts\golfing> .\stretch-the-word.ps1 tessellatingheckler
tessseelllattingheeeckllleeeer

@TessellatingHeckler वास्तव में - धन्यवाद!
AdmBorkBork

5

दिल्लोग एपीएल , 6 बाइट्स

∊,\∩¨⊢

TryAPL!

4 फ़ंक्शंस एक कांटा (2-ट्रेन) एक कांटा (3-ट्रेन) है:

┌──┴──┐  
∊ ┌───┼─┐
  \   ¨ ⊢
┌─┘ ┌─┘  
,   ∩    

पहले (दाएं - एक नो-ऑप) दिए गए स्ट्रिंग पर, दे रहे हैं'bonobo'

तब ,\(कॉन्सेप्टन स्कैन) स्ट्रिंग पर, देते हुए'b' 'bo' 'bon' 'bono' 'bonob' 'bonobo'

दोनों को एक साथ कांटा जाता है (दाएं और बाएं तर्क के रूप में दिया जाता है) ∩¨(प्रत्येक को प्रतिच्छेदन), अर्थात ('b'∩'b') ('bo'∩'o') ('bon'∩'n') ('bono'∩'o') ('bonob'∩'b') ('bonobo'∩'o'), जो है'b' 'o' 'n' 'oo' 'bb' 'ooo'

अंत में, परिणाम देने के लिए (enlist) इसे समतल करने के लिए लागू किया जाता है'bonoobbooo'

अरे, कम से कम यह पायथ से मेल खाता है ! जाहिर है कि जेली छोटी है क्योंकि यह J का एक गोल्फ संस्करण है, जो बदले में APL की एक उन्नत 2-वर्ण-प्रति-कार्य बोली है।


4

अजगर, 11 बाइट्स

s.e*b/<Qhkb

यहाँ कोशिश करो!

व्याख्या

se * b / <Qhkb # Q = इनपुट

 .E # इनपुट पर ख के साथ मूल्य के रूप में और कश्मीर के रूप में सूचकांक (क्यू inplicitly अंत में जोड़ा गया)
      <Qhk # Q का पहला k + 1 वर्ण लें
     वहाँ में बी के / बी # गिनती घटनाओं
   * b # रिपीट b कि कई बार
s # परिणामी सूची को एक स्ट्रिंग में शामिल करें

4

जे, 11 बाइट्स

#~+/@(={:)\

यह एक राक्षसी क्रिया है। इसे यहाँ आज़माएँ। उपयोग:

   f =: #~+/@(={:)\
   f 'tutu'
'tuttuu'

व्याख्या

#~+/@(={:)\
     (   )\  For each non-empty prefix:
       {:      Take last element,
      =        compare for equality to the others and itself
  +/@          and take sum (number of matches).
#~           Replicate original elements wrt the resulting array.

4

05AB1E , 10 बाइट्स

कोड:

$vy«Dy¢y×?

स्पष्टीकरण:

$           # Push the number 1 and input
 v          # Map over the input string
  y«        # Concat the letter to the previous string (initial 1)
    D       # Duplicate this string
     y¢     # Count the occurences of the current character in the string
       y×   # Multiply this number with the current character
         ?  # Pop and print without a newline

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


3

CJam, 14

q:A,{)A<_)--}/

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

स्पष्टीकरण:

q:A      read the input and store in A
,        get the string length
{…}/     for each number from 0 to length-1
  )      increment the number
  A<     get the prefix of A with that length
  _      duplicate it
  )      separate the last character
  -      remove it from the rest of the prefix
  -      remove all the remaining characters (different from the last one)
          from the prefix

2

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

{.split('').map({$_ x++%.{$_}}).join}

2

> <> , 52 बाइट्स

i:0(?;&l:?!v1-$:&:&=?\}70.>
6f+0.00o:&~/         \:o

यह पढ़े गए प्रत्येक अक्षर को ढेर कर देता है, उन्हें एक बार फिर से प्रिंट करता है और एक बार फिर से स्टैक के प्रत्येक समान अक्षर के लिए।
यह &रजिस्टर का उपयोग करता है , क्योंकि स्टैक पर 3 वेरिएबल्स को हैंडल करना (करंट रीड लेटर, स्टैक में पोजिशन, इस पोजिशन में लेटर) एक दर्द है।

आप इसे यहाँ आज़मा सकते हैं !


2

जंग, 176 बाइट्स

fn s(w:&str)->String{let mut m=std::collections::HashMap::new();w.chars().map(|c|{let mut s=m.remove(&c).unwrap_or(String::new());s.push(c);m.insert(c,s.clone());s}).collect()}

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

मैं get(...)इसके बजाय उपयोग करना पसंद करूंगा remove(...), लेकिन उधार लेने वाले चेकर ने मुझे अपना मन बदल दिया।


2

मथकड, 66 बाइट्स

दुर्भाग्य से, Mathcad के पास विशेष रूप से अच्छे स्ट्रिंग हैंडलिंग नहीं हैं, इसलिए मैंने इनपुट स्ट्रिंग को एक वेक्टर में परिवर्तित कर दिया है और फिर एक चरित्र का सामना करने की संख्या का ट्रैक रखने के लिए एक (वर्ण कोड अनुक्रमित) वेक्टर का उपयोग किया है, जो चरित्र को जोड़ता है एक परिणाम वेक्टर के लिए कई बार। अंत में, परिणाम वेक्टर वापस स्ट्रिंग में परिवर्तित हो जाता है। काफी दुर्भाग्य से।

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

ध्यान दें कि मैथैड सामान्य पाठ और ऑपरेटरों के मिश्रण के साथ 2 डी "व्हाइटबोर्ड" इंटरफ़ेस का उपयोग करता है; ऑपरेटरों को सामान्य रूप से टूलबार या कीबोर्ड शॉर्टकट के माध्यम से दर्ज किया जाता है; उदाहरण के लिए, ctl- # लूप ऑपरेटर के लिए प्रवेश करता है, जिसमें क्रमशः कीवर्ड, प्रतीक का तत्व और 3 खाली "प्लेसहोल्डर" होते हैं, जो पुनरावृति चर, श्रेणी और शरीर के भावों के लिए होते हैं। टाइपिंग [एक वैरिएबल नेम इंडेक्स इंडेक्स मोड में आने के बाद टाइपिंग 'कोष्ठक की एक मिलान जोड़ी में प्रवेश करती है ( ज्यादातर ... आस-पास की अभिव्यक्ति में और क्या है इसके आधार पर अपवाद हैं )


2

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

q=>q.replace(/./g,a=>x[a]=(x[a]||'')+a,x=[])

पुराना उत्तर

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

q=>(x=[...q]).map(a=>x[a]=(x[a]||'')+a).join``

//thanks user81655 for -1 byte

1
आप xइनपुट सरणी ->q=>(x=[...q]).map(a=>x[a]=(x[a]||'')+a).join``
user81655

2

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

!s=[]==s?s:[!s[1:end-1];ss[end]]

I / O चरित्र सरणियों से है। इसे ऑनलाइन आज़माएं!

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

हम (पुनः) मोनैडिक ऑपरेटर को परिभाषित करते हैं ! हमारे उद्देश्यों के लिए।

कब ! कहा जाता है, यह जाँच करता है अगर इसकी तर्क रों खाली है। यदि यह है, तो यह अपना तर्क देता है।

यदि रों गैर खाली है, हम एक दूसरे को काटना रों अपने अंतिम वर्ण (साथ s[end]), जिसमें कि चरित्र की सभी घटनाओं की पैदावार रों । इस परिणाम को एक पुनरावर्ती कॉल के वापसी मूल्य के साथ मिलाया जाता है ! साथ रों शून्य से अपनी अंतिम वर्ण ( s[1:end-1]) तर्क के रूप में।


2

PHP, 54 51 50 47 बाइट्स

for(;$C=$argn[$X++];)echo str_repeat($C,++$$C);

इस तरह से चलाएं:

echo abracadabra | php -nR 'for(;$C=$argn[$X++];)echo str_repeat($C,++$$C); echo"\n";'

बदलाव

  • चर चर का उपयोग करके 3 बाइट्स सहेजे गए। टकराव को रोकने के लिए उपयोग किए गए चरों को अपरकेस में बदला गया
  • प्रकार डाली nullको हटाकर एक बाइट को बचायाintस्ट्रिंग ऑफसेट के लिए , क्योंकि स्ट्रिंग ऑफसेट को वैसे भी इंट में डाला जाता है
  • के $argnबजाय का उपयोग करके सहेजे गए 3 बाइट्स $argv(thx टाइटस)

का प्रयोग करें $argnसाथ -Rतीन और बाइट्स को बचाने के लिए।
टाइटस

ओह, और -nआपके जैसा ही होना चाहिए -d error_reporting: डिफ़ॉल्ट nके लिए no config file, और नोटिस डिफ़ॉल्ट कॉन्फ़िगरेशन में बंद हैं; इसलिए -nr(क्रमशः -nR) पर्याप्त होना चाहिए।
टाइटस

@Titus 2 साल का जवाब है, लेकिन THX वैसे भी :)
aross

1

गणितज्ञ, 57 बाइट्स

StringReplace[Clear@c;c@_=0;#,x_:>x~StringRepeat~++c[x]]&

हम c[x]कितनी बार चरित्र xपहले से ही हो गया है की एक खोज तालिका के रूप में उपयोग करें । हर बार इसे पुनः प्राप्त करने पर इसे बढ़ाया जाता है x~StringRepeat~++c[x]। दुर्भाग्य से, फ़ंक्शन को पुन: प्रयोज्य बनाने के लिए, हमें प्रत्येक बार लुकअप टेबल को रीसेट करना होगा Clear@c;c@_=0;, जो काफी महंगा है।


1

awk, 72 बाइट्स

BEGIN{FS=""}{for(i=1;i<=NF;i++){a[$i]++;for(j=0;j<a[$i];j++)printf $i}}

विचार यह है कि दिखने वाले चरित्र की गिनती को एक सहयोगी सरणी में संग्रहित किया जाए और इस गिनती को चरित्र को प्रिंट करें।


1

बीम, 32 33 42 बाइट्स

यह छोटा होना चाहिए था, लेकिन मैंने कुछ बाइट्स को मेमोरी स्लॉट्स को 0. खो दिया है। कुछ फ्लो दिशाओं को स्वैप करने से बहुत सारी खाली जगह खत्म हो गई।

 >+\
vus/
>rnH
  >g'\
(@v's/
^`<

इसे इस स्निपेट में आज़माएं

सामान्य व्याख्या।

  • 0-255 से 0 तक सभी मेमोरी स्लॉट सेट करें
  • बीम में इनपुट असिसी मूल्य में पढ़ें
  • यदि बीम 0 रुका है (बीम = स्टोर)
  • स्टोर में मेमोरी [बीम] मान प्राप्त करें, इसे बढ़ाएं और वापस सहेजें
  • बीम वर्ण को मुद्रित करने के लिए स्टोर को घटाएँ
  • दोहराना

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