शुगर फ्री सिंटेक्स


55

हास्केल में सूची संकेतन:

[a,b,c]

क्या इसके लिए सिर्फ चीनी की मात्रा है:

a:b:c:[]

और स्ट्रिंग संकेतन:

"abc"

क्या इसके लिए सिर्फ चीनी की मात्रा है:

['a','b','c']

इसका मतलब है कि स्ट्रिंग:

"abc"

के समान है:

'a':'b':'c':[]

कार्य

एक स्ट्रिंग को देखते हुए आपको आउटपुट करना चाहिए कि डि-सिंटैक्सड संस्करण हास्केल में कैसा दिखेगा।

नियम

  • आप किसी भी मान्य इनपुट विधि द्वारा एक स्ट्रिंग प्राप्त करेंगे, आपको एक :[]इनपुट के साथ 'और उसके चारों ओर अलग-अलग इनपुट के साथ समाप्त होने वाली स्ट्रिंग का उत्पादन करना चाहिए :। खाली स्ट्रिंग का आउटपुट होना चाहिए []

  • आप यह मान सकते हैं कि आपको कोई भी ऐसा पात्र नहीं मिलेगा जिसके लिए भागने की आवश्यकता हो (जैसे ', newlines, tabs ...) और वह इनपुट प्रिंट करने योग्य ascii रेंज में होगा

  • यह जिसका उद्देश्य आपको अपने उत्तर की बाइट की संख्या को कम करना चाहिए

परीक्षण के मामलों

"" -> []
"a" -> 'a':[]
"Hello, World" -> 'H':'e':'l':'l':'o':',':' ':'W':'o':'r':'l':'d':[]   

क्या इनपुट में कभी भी गैर-एससीआई मूल्य होंगे? वर्णों पर आपका प्रतिबंध जिसमें या तो भागने की आवश्यकता होती है, हमें यह जानने की आवश्यकता होती है कि हास्केल कौन से वर्णों से बच जाएगा या मानता है कि आपकी सूची संपूर्ण है।
FryAmTheEggman

@FryAmTheEggman आप मान सकते हैं कि वे अस्सी रेंज में हैं
गेहूं जादूगर

7
@totallyhuman वे भी हास्केल मान्य नहीं हैं। अगर वे शायद थे, लेकिन अच्छा है कि वे निश्चित रूप से नहीं हैं।
गेहूं जादूगर

38
यह प्रश्न वैकल्पिक रूप से "डाइट हास्केल" शीर्षक से हो सकता है।
मार्च हो

1
@cairdcoinheringaahing नहीं, "और 'वाक्यात्मक रूप से भिन्न हैं।
गेहूं जादूगर

जवाबों:


85

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

(++"[]").((++":").show=<<)

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

स्पष्टीकरण:

नॉन-पॉइंटफ्री नोटेशन में और concatMapइसके बजाय का उपयोग करते हुए =<<, यह बन जाता है

f s = concatMap(\c-> show c ++ ":")s ++ "[]"

एक स्ट्रिंग को देखते हुए s, हम फ़ंक्शन के उपयोग से cस्ट्रिंग के लिए प्रत्येक चार्ट को मैप करते हैं जो अधिकांश हास्केल प्रकारों के एक स्ट्रिंग प्रतिनिधित्व को लौटाता है। उन तारों को समतल किया जाता है और एक अंतिम जोड़ा जाता है।"'c':"show[]

यद्यपि चुनौती से अनुरोध नहीं किया गया है, यह उत्तर यहां तक ​​कि उचित भागने के साथ काम करता है, क्योंकि इसकी showदेखभाल करता है: f "'"पैदावार "'\\'':[]"


25
एक मिनट रुकिए, आपका मतलब है (++'[':']':[]).((++':':[]).show=<<), नहीं?
एड्म

11
जब किसी भी चुनौती का हास्केल जवाब होता है, तो मैं इसे सिद्धांत से बाहर कर देता हूं। वह इस एक के लिए दोगुना हो जाता है।
रेयान रीच

43

हास्केल, 33 28 26 बाइट्स

foldr((.(':':)).shows)"[]"

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

foldदिए गए पॉइंटफ्री फ़ंक्शन को इनपुट स्ट्रिंग में दाईं ओर से शुरू करें []। समारोह है: एक हास्केल चार के रूप में चार शो, यानी के साथ घेर लिया 'और परिणाम के साथ अब तक :सामने एक डाल के बाद ।

संपादित करें: @ Johanrjan जोहानसन ने दो बाइट्स बचाए। धन्यवाद!


मुझे लगता है कि इसका मतलब है (++'[':']':[]).(>>= \c->'\'':[]++[c]++'\'':':':[])
एड्म

1
मुझे लगता है कि यह :सूची के निर्माण के बजाय उपयोग करने के कारण अन्य हास्केल उत्तर (एक ही बाइट की गिनती में) से बेहतर है ++, हालांकि दोनों की अपनी शान है।
सीएडी 97

4
यह बल्कि आश्चर्यजनक है। दो अलग-अलग दृष्टिकोण जो एक ही भाषा में एक ही बाइट की गणना करते हैं।
J Atkin


17

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

s=>s.replace(/./g,"'$&':")+"[]"

प्रत्येक वर्ण को प्रतिस्थापित करता है '<char>':, फिर []अंत में जोड़ता है

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


1
मुझे यह कोडगोल्फ के बारे में बहुत पसंद है। के बारे में कभी नहीं पता था $&
स्टीव बेनेट

16

आम लिस्प, 50 42 बाइट्स

(format t"~{'~a':~}[]"(coerce(read)'list))

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

readकिसी फ़ंक्शन को परिभाषित करने के बजाय उपयोग करके @coredump की टिप्पणी के लिए धन्यवाद कम किया गया ।


1
PPCG में आपका स्वागत है!
मार्टिन एंडर

2
लिस्प! वास्तव में आपका स्वागत है :)
ओलिवियर दुलक

@ रेंज़ो हाय रेंज़ो, आप इसे एक गुमनाम मेमने के रूप का उपयोग करके, या बस पढ़ने के लिए थोड़ा सिकोड़ सकते हैं: (format t"~{'~a':~}[]"(coerce(read)'list))(कुछ अन्य प्रश्न सख्त इनपुट और आउटपुट हैं, लेकिन यहाँ यह ठीक है)
coredump

@ क्रोध, धन्यवाद!, मैंने कोड अपडेट कर दिया है।
रेनजो


10

सी, 55 54 53 बाइट्स

s(char*h){while(*h)printf("'%c':",*h++);puts("[]");}

1
आप अंतरिक्ष में निकाल सकते हैंchar *h
Cyoce

1
आप puts("[]");कुछ बाइट्स को बचाने के लिए एक अनुगामी newline के साथ आउटपुट के बजाय कर सकते हैं ।
क्रिस्ति लिथोस

पुनरावर्तीs(char*h){*h?printf("'%c':",*h++),s(h):puts("[]");}
l4m2

8

पायथन 3 , 41 38 36 बाइट्स

-2 बाइट्स ओव्स के लिए धन्यवाद

print(*map(repr,input()),[],sep=':')

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


वूप्स ... भूल गए कि *mapमौजूद है ...
श्री एक्सकोडर

मैं input()पिछले 20 मिनट (शाब्दिक रूप से) के लिए खाली से हैरान था , जब यह सिर्फ एक लम्बा हो सकता था ... @।
रॉड


@WheatWizard ओह, मैं एक खाली-खाली (कोई न्यूलाइन नहीं) इनपुट का उपयोग कर रहा था
रॉड

आप के "[]"साथ बदल सकते हैं[]
Ovs

8

05AB1E , 15 12 11 10 बाइट्स

-3 बाइट्स carusocomputing के लिए धन्यवाद
-1 बाइट अदनान के लिए धन्यवाद -1 बाइट्स के लिए
धन्यवाद आउटगीर के प्रतिभाशाली विचार

ʒ"'ÿ':"?},

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

ʒ          # Filter out every character that the following code doesn't return 1 for
 "'ÿ':"?   #   Print the string 'ÿ': with ÿ replaced by this character
        }  # End for
         , # No character returned 1 so an empty array is left on the stack. Print that

जाहिरा तौर पर मैं आपको 4 सेकंड से हरा देता हूं ;-)
डिजिटल ट्रॉमा

1
@DigitalTrauma आपका पॉप अप हुआ क्योंकि मैं पोस्ट आपका उत्तर दबा रहा था।
रिले

1
आप 3 बाइट्स वाले कोष्ठकों को धकेलने के बजाय वैश्विक सरणी को प्रिंट कर सकते हैं। आप कुल -3, अंतिम परिणाम 12-बाइट्स के लिए एक और बाइट बचत के लिए स्ट्रिंग को प्रक्षेपित कर सकते हैं:vy"'ÿ':"?}¯?
मैजिक ऑक्टोपस उर

@carusocomputing मैं टेस्ट सूट के लिए हर समय स्ट्रिंग इंटरपोलर का उपयोग करता हूं, लेकिन वास्तविक कोड में इसका उपयोग करना भूल जाता हूं। धन्यवाद!
रिले

@carusocomputing मुझे लगा कि vy"'ÿ':"}¯J11 के लिए काम करेगा, लेकिन Jवैश्विक सरणी में शामिल हो जाता है, न कि उस स्थिति में पूरे ढेर।
रिले

8

आर, 51 बाइट्स

f<-function(x)(paste0(gsub("(.)","'\\1':",x),'[]'))

1
अच्छा समाधान! कुछ तरीके आप कुछ बाइट्स बचा सकते हैं और वास्तव में इसे नीचे ला सकते हैं। डिफ़ॉल्ट I / O आपको एक अनाम फ़ंक्शन वापस करने देता है, या स्टड से इनपुट भी ले सकता है, जिनमें से उत्तरार्द्ध scan(,'')एक फ़ंक्शन के बजाय बहुत छोटा होगा ।
ग्यूसेप

धन्यवाद, आर (और कोड गोल्फ!) के साथ एक newb का एक सा हूँ, इसलिए इसमें अभी तक काफी गुमनाम कार्य नहीं हुए हैं, हालांकि मैं इसे वहां 'फ़ंक्शन' के बिना करने की कोशिश कर रहा था। स्कैन उपयोगी हो सकता है!
टीसी

आह, अच्छी तरह से एक गुमनाम समारोह सिर्फ एक है जहाँ आप इसे एक चर के लिए असाइन नहीं करते हैं ताकि आप बस f<-अपने कोड की शुरुआत से छोड़ देंगे
Giuseppe

पेस्ट0 (gsub ((।)) ', "' \\ 1 ':", स्कैन ((, "")),' [] ') 43 है
जाहेरो मोर

8

पायथ, 14 10 8 बाइट्स

j\:a`MQY

इसे इस्तेमाल करे!

-2 बाइट्स @isaacg की बदौलत

अंत में, अजगर कुछ अच्छा है।

व्याख्या

j\:a`MQY
    `MQ        # map the representation over the input string: ["'a'","'b'",...]
   a   Y       # append the empty list
j\:            # join on :

@isaacg धन्यवाद! मैं भूल गया Mऔर मुझे नहीं पता कि मैंने इसका उपयोग क्यों नहीं किया a। अब हम यहाँ अन्य सभी समाधानों की तुलना में कम से कम 2 बाइट्स छोटे हैं!
कार्लकस्टर


7

रेटिना, १२

  • 3 बाइट्स ने @FryAmTheEggman को धन्यवाद दिया
।
'$ और':
$
[]

2 चरण:

  • प्रत्येक बचे हुए पात्र के ' ':चारों ओर
  • []अंत में जोड़ें

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


उस व्यक्ति की मदद की जिसे आपने 4 सेकंड से हराया था;)
मैजिक ऑक्टोपस Urn

मैं यही सोच रहा था!
कैलक्यूलेटरफैनलाइन

6

पायथन 2 , 48 46 44 37 बाइट्स

-2 बाइट्स रॉड के लिए धन्यवाद। -7 बाइट्स गेहूं विज़ार्ड के लिए धन्यवाद।

lambda s:':'.join(map(repr,s)+['[]'])

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



ओह, साफ-सुथरा। धन्यवाद!
पूरी तरह से

1
के रूप में एक छोटा lambda s:':'.join(map(repr,[*s,[]]))या lambda s:':'.join(map(repr,s))+":[]"
xnor

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



5

जेली ,  11 10  8 बाइट्स

-1 ईसाई करने के लिए बाइट धन्यवाद (संयोजन हटाने ;और बजाय अंतर्निहित मुद्रण का उपयोग)

+0 बाइट (कोई रिक्त स्ट्रिंग के किनारे मामले के लिए तय - पहले पूरा कार्यक्रम: ŒṘ€j”:“:[])

-2 Outgolfer एरिक करने के लिए धन्यवाद (उपयोग pके स्थान पर ;€के बाद से ”:, का उपयोग प्रभावी रूप से लंबाई 1 है Ø[, क्योंकि यह के लिए आशुलिपि बन गया है ⁾[])

ŒṘ€p”:Ø[

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

परिणाम को मुद्रित करने वाला एक पूरा कार्यक्रम (एक कड़ी के रूप में यह पात्रों की सूची की सूची देता है)।

... लेकिन क्या एसटीडीआईएन के उपयोग से बचत करने का कोई तरीका है?

कैसे?

ŒṘ€p”:Ø[ - Main link: list of characters, s  e.g. "Hey"
ŒṘ€      - Python representation for €ach    [["'",'H',"'"],["'",'e',"'"],["'",'y',"'"]]
    ”:   - literal character = ':'
   p     - Cartesian product                 [["'",'H',"'",':'],["'",'e',"'",':'],["'",'y',"'",':']]
         - implicit print (no newline): 'H':'e':'y':
      Ø[ - literal list of characters        ['[',']']
         - implicit print (no newline): []

4

PHP , 41 बाइट्स

<?=preg_filter("#.#","'$0':",$argn)."[]";

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


4 बाइट्स कम for(;~$c=$argn[$i++];)echo"'$c':"?>[]:।
user63956

@ user63956 को इसकी आवश्यकता नहीं है कि इसे <?किस विकल्प के साथ चलाया जाना चाहिए? अप्रोच और
टाइटस

यह -Rध्वज के साथ काम करता है । जैसे eval()और निर्माण में भी टैग बंद हो सकते हैं create_function()
user63956

4

पर्ल 5 , 22 बाइट्स

कोड + -pध्वज के 19 बाइट्स ।

s/./'$&':/g;$\="[]"

या फिर, bytecount के लिए, s/./'$&':/g;s/$/[]/

सीधे आगे: s/./'$&':/gप्रत्येक वर्ण को उद्धरण के साथ घेरता है और एक के :बाद जोड़ता है । $\प्रत्येक प्रिंट के बाद स्पष्ट रूप से मुद्रित किया जाता है, इसलिए इसे []अंतिम आउटपुट के लिए सेट किया जाता है []

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


4

जावा (ओपनजेडके 8) ,86 83 76 बाइट्स

-3 बाइट्स @KevinCruijssen -7 बाइट्स की बदौलत @FlorianSchaetz
को धन्यवाद

s->{String b="";for(char c:s.toCharArray()){b+="'"+c+"':";};return b+"[]";};

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


आप 4 बाइट्स छोड़ सकते हैं। अनुगामी ;लैम्ब्डा जवाब के लिए किए जाने के लिए नहीं है, ;के बाद }सब पर आवश्यक नहीं है, और {और }के लिए लूप के आसपास हटाया जा सकता है। और अगर आप जावा 10 में 4 अधिक बाइट्स बदलते दोनों को बचा सकता है Stringऔर charकरने के लिए var
केविन क्रूज़सेन

4

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

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

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


खाली स्ट्रिंग के साथ काफी काम नहीं करता है - मुझे आपके ऑनलाइन परीक्षण में दो गैर-वैध वर्ण लौटाए। बहुत अच्छा, अन्यथा।
NoseKnowsAll

@NoseKnowsAll मैं इसे दोहराने के लिए प्रतीत नहीं कर सकता; इनपुट के साथ मुझे कोई आउटपुट नहीं मिलता है। क्या आप उस इनपुट के साथ एक अद्यतन लिंक प्रदान कर सकते हैं?
डानिएरो

जब मैंने इसे चलाया तो मुझे यही मिला :। खाली इनपुट के साथ, इसे उद्धरण के बिना "[]" लौटाया जाना चाहिए।
NoseKnowsAll

@NoseKnowsAll आपका लिंक "हैलो वर्ल्ड" इनपुट पर जाता है (उस लिंक / चेन बटन को दबाकर एक अद्यतन लिंक प्राप्त करें), लेकिन हां, मुझे वही मिलता है जो आपका मतलब है। मैं उस पर गौर करूँगा
daniero

1
@NoseKnowsAll तुम वहाँ जाओ, मैंने इसे ठीक किया;)
दानियो

3

ब्रेन-फ्लैक , 135 , 131 बाइट्स

{({}<>)<>}(((((((()()()()()){})){}{}())){}{})[()()])<>{<>(((((((()()()){}()){}){}()){})[(((()()()){})){}{}()])<>)({}<({}<>)>)<>}<>

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

+1-cझंडे के लिए बाइट ।

बहुत स्पष्ट NOOP को हटाने के लिए WheatWizard के लिए धन्यवाद कि मेरे पास बिना किसी कारण के XD था।


@HeatWizard> _> हाँ, मैं अभी तुम्हारी परीक्षा कर रहा था ... हाहाहा, इस ओर इशारा करने के लिए धन्यवाद। मैं और अधिक बाद में यह गोल्फ की कोशिश करता हूँ, लेकिन मैं lol अब कि जोड़ देंगे
DJMcMayhem

3

मानक एमएल , 52 50 बाइट्स

2 बाइट @Laikoni के लिए धन्यवाद बचा लिया!

fn s=>String.translate(fn c=>"'"^str c^"':")s^"[]"

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

String.translateएक दुर्भाग्य से लंबे नाम है, लेकिन 5 बाइट्स का उपयोग कर की तुलना में कम था concat, mapहै, और explode


@ लायकोनी धन्यवाद! मैं हमेशा भूल जाता हूं कि ऑपरेटरों के कार्यों की तुलना में कम पूर्वता है।
संगीतज्ञ ५२३

3

क्यूबिक्स , 31 29 बाइट्स

uo@[)o'U);!A?ro;o;o;os:'/u:''

Aके लिए प्रतिस्थापित किया जा सकता है i; यह पता लगाने की कोशिश कर रहा है कि इसमें से एक बाइट या दो को निचोड़ने का एक अच्छा तरीका है या नहीं। -2 बाइट्स मिकीटी के लिए धन्यवाद! इसके अलावा मिकी द्वारा किया गया बहिर्गमन !

एक 3x3x3 घन पर फिट बैठता है:

      u o @
      [ ) o
      ' U )
; ! A ? r o ; o ; o ; o
s : ' / u : ' ' . . . .
. . . . . . . . . . . .
      . . .
      . . .
      . . .

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

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


आप अंतिम ब्रैकेट के लिए वेतन वृद्धि के एक जोड़े का उपयोग करके, कुछ बाइट्स बचा सकते हैं। यह नीचे की रेखा को थोड़ा संकुचित करने की अनुमति देता हैuo@[)o'U);!A?ro;o;o;os:'/u:''
मिकट

2

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

lambda a:`list(a)+[[]]`.replace(', ',':')[1:-1]

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


मेरे पास एक ही दृष्टिकोण था लेकिन मैंने [1:-1]भाग का पता नहीं लगाया इसलिए यह पूरी तरह से अमानवीय से अधिक लंबा था। +1
गेहूं जादूगर

अजीब बात है कि तुच्छ समाधान सिर्फ 3 बाइट्स लंबा है (पायथन 3 में)।
श्री एक्सकोडर



2

PHP, 39 बाइट्स

<?while(~$c=$argn[$i++])echo"'$c':"?>[]

साथ पाइप के रूप में चलाएँ -F



2

क्यूबिक्स , 27 बाइट्स

uosW?U.iv":'"^soso;os@o[]'/

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

      u o s
      W ? U
      . i v
" : ' " ^ s o s o ; o s
@ o [ ] ' / . . . . . .
. . . . . . . . . . . .
      . . .
      . . .
      . . .

देखो इसे चलाते हैं

गुइसेप के उत्तर से थोड़ा भिन्न । यह बृहदान्त्र डालता है और स्टैक पर उद्धरण करता है। फिर यह इनपुट के माध्यम से लूप करता है, स्वैप करता है और स्टैक को आउटपुट करता है। केवल इनपुट का परिमार्जन किया जाता है और कोलन और उद्धरण को बरकरार रखा जाता है।

एक बार इनपुट के अंत में क्यूब के चारों ओर आईपी अजूबों तक पहुंच जाता है, ब्रैकेट्स को जोड़ना और आउटपुट करना। मिश्रण में बेमानी आदेशों के एक जोड़े हैं।

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