आलसी के लिए कोड गोल्फ


10

इस कोड को गोल्फ में अपने लक्ष्य दो तार लेने के लिए है, languageऔर code (यदि golfed कोड आप इस के लिए लिखा था बहु है, तो इस चर बहु होगा।) , और एक पूर्णांक, bytes। वे एक प्रोग्रामिंग लैंग्वेज के लिए वेरिएबल्स का प्रतिनिधित्व करते हैं, बाइट्स की संख्या और खुद कोड।

उसके बाद, आप इसे प्रारूपित करने जा रहे हैं जैसे एक कोड गोल्फर करता है।

आउटपुट वेरिएबल एक मल्टीलाइन स्ट्रिंग है जिसे कहा जाता है answer

आप मल्टीलाइन स्ट्रिंग्स का उपयोग कर सकते हैं:

यदि आप स्टैक ओवरफ्लो खोजते हैं , तो आपको अधिक प्रोग्रामिंग भाषाओं को खोजने में सक्षम होना चाहिए जो इसका समर्थन करते हैं।

यहां आउटपुट मार्कडाउन का एक टेम्प्लेट है। codeचर एक कोड ब्लॉक में है, और वहाँ एक दूसरे स्तर के शीर्ष लेख है।

## {language}, {bytes} bytes

     {code}

मार्कडाउन पार्सर में पेस्ट करने पर आउटपुट कैसा दिखेगा।

{भाषा}, {बाइट्स} बाइट्स

    {code}

चर को पहले से ही भरा हुआ माना जाता है क्योंकि आपने जिस भाषा में अपना कोड गोल्फ प्रविष्टि कोडित किया था, उसकी संख्या जितनी बाइट होती है, और उसके लिए वास्तविक कोड होता है।

यहाँ कोड के रूप में आउटपुट का एक और उदाहरण दिया गया है, इस बार भरे हुए चरों के साथ:

## JavaScript, 1337 bytes

document.getElementById("foo").innerHTML = bar;

यहाँ ब्लॉकचोट के रूप में संस्करण है:

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

    document.getElementById("foo").innerHTML = bar;

यदि आप <p>HTML में किसी तत्व के पाठ को सेट करने के तरीके का उपयोग करते हैं, तो बाइट्स को आपके कोड से हटा दिया जा सकता है result:

document.getElementById("result").innerHTML = answer;

यह काम करने के लिए JSFiddle<p id="result"></p> के HTML अनुभाग में शामिल करना भी सुनिश्चित करें ।

स्कोरिंग

सभी प्रश्नों की तरह, बाइट्स का कम से कम उपयोग करने वाला कोड सबसे अच्छा है।


3
क्या {code}कभी मल्टीलाइन कोड होगा?
अदनान

8
"वेरिएबल्स को उस भाषा के रूप में भरा जाएगा जिस भाषा में आपने अपने कोड गोल्फ प्रविष्टि को कोडित किया था, बाइट्स की संख्या और इसके लिए वास्तविक कोड।" क्या मैं केवल एक ही रूपांतर की व्याख्या कर रहा हूँ?
प्रिमो जूल

2
चूंकि उत्तर दो पूरी तरह से अलग-अलग समस्याओं को हल कर रहे हैं, मैं इसे अस्पष्ट के रूप में पकड़ रहा हूं। कृपया स्पष्ट करें कि क्या language, bytesऔर codeइनपुट हैं या क्या यह एक क्वीन वेरिएंट है जहां उन चीजों को हल करने वाले कोड से मेल खाना चाहिए। (और यदि हां, तो क्या प्रत्यक्ष या अप्रत्यक्ष रूप से उस स्रोत कोड को पढ़ने की अनुमति है, और क्या निर्मित बिल-इन की अनुमति है।)
मार्टिन एंडर

2
क्या आप अदनान के सवाल को भी स्पष्ट कर सकते हैं कि क्या इनपुट में codeही लाइनफीड हो सकता है?
मार्टिन एंडर

2
@ मूंगफली मैं भ्रमित हूँ। क्या हम मान सकते हैं कि हम बहुस्तरीय codeनहीं होंगे, या हम नहीं कर सकते? कृपया संकेत दें कि चुनौती पाठ में
लुइस मेंडू

जवाबों:


2

05AB1E , 21 बाइट्स

कोड:

“## ÿ, ÿ¡Ï
“,|v4ð×y«,

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


यह प्रबंधन नहीं करती है बहु तार
जेम्स

@DrGreenEggsandIronMan फिक्स्ड।
अदनान

और इसलिए वी बनाम O5AB1E लड़ाई जारी है ... अच्छा काम!
जेम्स

@DrGreenEggsandIronMan मैं बदला लेने के लिए अगली ASCII कला चुनौती की प्रतीक्षा करूंगा :)।
अदनान

8

जावा, 70 बाइट्स

String A(String[]b){return"## "+b[0]+", "+b[1]+" bytes\n\n    "+b[2];}

मान लें b[0]कि भाषा का नाम है, b[1]बाइट गिनती है, और b[2]कोड है।

इसे बनाने में 9 बाइट्स का खर्च आता है, जिसके परिणामस्वरूप 79-बाइट नॉन-स्टैंडअलोन प्रोग्राम होता है:

class a{String A(String[]b){return"## "+b[0]+", "+b[1]+" bytes\n\n    "+b[2];}}

बराबर अखंड कार्यक्रम 103 बाइट लंबा है:

interface a{static void main(String[]A){System.out.print("## "+A[0]+", "+A[1]+" bytes\n\n    "+A[2]);}}

मोनोलिथिक कमांड लाइन तर्कों के साथ काम करता है, इनको गैर-स्टैंडअलोन प्रोग्राम की तरह मानता है:

  • पहला तर्क भाषा का नाम है
  • दूसरा तर्क बाइट काउंट है
  • तीसरा तर्क है कोड

जावा (लैम्ब्डा अभिव्यक्ति), 56 48 बाइट्स

(b)->"## "+b[0]+", "+b[1]+" bytes\n\n    "+b[2];

यह ए java.util.function.Function<String[], String>


इनमें से कोई भी प्रोग्राम / फंक्शन मल्टीलाइन स्ट्रिंग्स को हैंडल नहीं करता है। ऐसा करने के लिए, बस बदलें b[2]और A[2]साथ - b[2].replace("\n","\n ")और A[2].replace("\n","\n ")ऐसा करने से 23 बाइट्स जुड़ जाते हैं।


मैं अभी इसकी पुष्टि करने के लिए कंप्यूटर के पास नहीं हूं, लेकिन क्या आप \tदो न्यूलाइन्स के बाद 4 स्पेस को बदलने के लिए उपयोग या कुछ नहीं कर सकते ?
आर। कप

@ R.Kap कभी-कभी रिक्त स्थान के बजाय टैब का उपयोग करने से SE पर गड़बड़ी पैदा होती है।
user8397947

ओह समझा। तो क्या बाइट काउंट को ध्यान में रखा जाता है \tऔर 4 स्थान नहीं?
आर। काप

3
लंबोदर पर परों को खो दो; आप बस के साथ दो बाइट्स बचा सकते हैं b->
अप्रैल को ब्रायन मैककिनटन

2
यदि कोड की एक से अधिक पंक्ति हो तो क्या होगा?
नील

5

वी , 24 बाइट्स

ध्यान दें कि अंत में एक अनुगामी स्थान है।

यह कार्यक्रम यह धारणा बनाता है कि {code}कई लाइनों पर नहीं होगा।

Op ने स्पष्ट किया है, "कोड" एक बहुस्तरीय स्ट्रिंग हो सकता है। यह 24 बाइट संस्करण काम करता है:

2é#á $á,JA bytes
vGî4é 

चूँकि इसमें एक अनपेक्षित वर्ण है, यहाँ पठनीय संस्करण है:

2é#á $á,JA bytes
<esc>vGî4é<space>

कहाँ <esc>शाब्दिक बच चरित्र है, उदाहरण के लिए 0x1B


1
यह हमेशा जोल्फ और वी के बीच एक निरंतर संघर्ष की तरह लगता है ... 3
कॉनर ओ'ब्रायन

4

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

( -7 बाइट्स मेगो से कुछ स्पष्टीकरण के लिए धन्यवाद )

lambda*f:'## %s, %s bytes\n\n\t%s'%f

एक अनाम लंबो फ़ंक्शन जो प्रारूप में स्थैतिक तर्कों के रूप में इनपुट लेता है <function name>(String, Number, String)और एक बहुस्तरीय स्ट्रिंग को आउटपुट करता है।

यह ऑनलाइन की कोशिश करो! (Ideone)


2
यदि आप पैरामीटर सूची बनाते हैं *fऔर tupleकॉल ड्रॉप करते हैं, तो आप कई बाइट्स को शेव कर सकते हैं ।
मेगो

@Mego दुर्भाग्य से, यह काम नहीं करता है, जैसा कि मुझे मिलता है TypeError: not enough arguments for format stringजब भी मैं इसे इस तरह से चलाता हूं।
आर कप कप

ठीक काम करता है जब मैं यह कोशिश करता हूं - आपको सूची तर्क के बजाय स्थिति संबंधी तर्क लेने होंगे। इसके अतिरिक्त, आप #और के बीच की जगह को छोड़ सकते हैं %
मेगो

@Mego वाह, यह बहुत अजीब है, क्योंकि जब मैं इसे PyCharm में Python 3.5.1 के साथ आज़माता हूं, तो मुझे एक त्रुटि मिलती है। इसने मुझे बहुत भ्रमित किया। इसके अलावा, #और लैम्ब्डा के बीच की जगह की जरूरत है, या इसलिए मुझे लगता है।
आर। काप

@Mego यह अपडेट किया गया है।
आर। कप

4

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

(l,b,c)=>`## ${l}, ${b} bytes

`+c.replace(/^/gm,`    `)

इसके अलावा, हंसी के लिए, यहां एक जवाब है जो मेरे लिए प्रारूपित है:

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

f=_=>`## JavaScript (ES6), ${`${f}`.length+3} bytes\n\n    f=${f};`;

का परिणाम प्रिंट करें f()


@PatrickRoberts, उफ़, मैंने वास्तव में लंबाई की जांच नहीं की थी, मैंने अभी इसे कॉपी किया और चिपकाया, फिर बाद में 6 बाइट्स को इसमें जोड़ा (ES6)। (C length O'Bʀɪᴇɴ ने केवल लंबाई बदलने की जहमत क्यों उठाई?)
नील

4

सी #, 40 38 बाइट्स

(a,b,c)=>$"## {a}, {b} bytes\n\n\t"+c;

C # लंबो जहां इनपुट्स और आउटपुट स्ट्रिंग्स हैं।


सी #, 59 बाइट्स

(a,b,c)=>$"## {a}, {b} bytes\n\n\t"+c.Replace("\n","\n\t");

एक बहुस्तरीय उत्तर को संभालने के साथ।


सी #, 71 बाइट्स

38 बाइट्स समाधान जो खुद को प्रिंट करते हैं

()=>$"## C#, 38 bytes\n\n\t"+@"(a,b,c)=>$""## {a}, {b} bytes

\t""+c;";

उन्हें ऑनलाइन प्रयास करें


3

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

Print["## ",#,", ",#2,"bytes

    ",#3]&

अनाम फ़ंक्शन। भाषा, बाइट काउंट और प्रोग्राम को इनपुट के रूप में लेता है और शरीर को STDOUT में प्रिंट करता है।


2

जोल्फ, 24 22 बाइट्स

"## ¦i, ¦j Ξ/u3

    ¦

यहाँ समझाने के लिए ज्यादा नहीं। ¦प्रक्षेपित इनपुट का अर्थ है।

यहाँ कोशिश करो! लिंक में इनपुट के लिए आउटपुट है:

## Jolf, 24 bytes

    some filler code I think

इनपुट इस प्रकार है:

name

number

"code"

1

MATL , 28 27 बाइट्स

1 बाइट ने @ NinjaBearMoneky के सुझाव के लिए धन्यवाद बचाया

35tOj', 'j' bytes'10t4Z"j&h

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

कोड ब्लॉक एक लाइन पर होना चाहिए।

व्याख्या

35t           % Push 35 (ASCII for '#') twice
0             % Push 0. When converted to char, it will be displayed as a space
j             % Input string (language name)
', '          % Push this string
j             % Input string (byte count)
' bytes'      % Push this string
10t           % Push 10 (ASCII for linefeed) twice
4Z"           % Push string containing four spaces
j             % Input string (code)
&h            % Concatenate everything into a string. Implicitly display

0

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

(lambda(L b c)(format()"## ~A, ~A bytes~%~%    ~A"L b c))

इसके अलावा, मौज-मस्ती के लिए, यहां नीचे एक कोड का टुकड़ा है, जो अपने लिए एक हेडर प्रिंट करता है।

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

#1=(PROGN
(SETF *PRINT-CIRCLE* T)
(LET ((S (FORMAT NIL "~S" '#1#)))
  (FORMAT NIL "## Common Lisp, ~A bytes~%~%    ~A" (LENGTH S) S)))


0

हैशमैप , 29 बाइट्स।

"## "i", "h" bytes.\n\n    "i

(मैंने उस पोस्ट को कार्यक्रम के साथ लिखा था, लेकिन मुझे \ n में \ n से बचना था)
स्पष्टीकरण:

"## "                         Push string
     i", "                    Push input and string
          h" bytes.\n\n    "i Push input as number and string, then the input.

0

सीजेएम , 26 23 बाइट्स

3 बाइट्स निकालने के लिए @NinjaBearMonkey का शुक्रिया!

'#_Sl',Sl" bytes"N_S4*l

कोड ब्लॉक एक लाइन पर होना चाहिए।

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

व्याख्या

'#_S       e# Push character "#" twice, then a space
l          e# Read line from input
',S        e# Push a comma, then a space
l          e# Read line from input
" bytes"   e# Push this string
N_S4*      e# Push newline twice, then four spaces
l          e# Read line from input. Implicitly display 

23 बाइट्स:'#_Sl',Sl" bytes"N_S4*l
NinjaBearMonkey

@NinjaBearMonkey धन्यवाद! संपादित। इस विचार ने मेरे अन्य उत्तर के लिए एक बाइट को भी बचाया
लुइस मेन्डो

0

पाइके, 25 बाइट्स

"##"Q", "z" bytes"skd4*z+

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

या

Pyke, 0 बाइट्स

यहाँ कोशिश करो! - कॉपी उत्तर बटन पर क्लिक करें;)

EDIT - यह सिर्फ वेबसाइट की एक विशेषता है, यह धोखा दे रहा है (या कम से कम मैं इस पर विचार करूंगा) क्योंकि यह कभी एएसटी और कभी वेब प्रोग्राम को भाषा का हिस्सा नहीं माना जाता है क्योंकि यह भाषा के साथ ज्यादा बातचीत नहीं करता है (भले ही यह Pyke दुभाषिया चल रहा है)


क्या काम करता है 0 बाइट्स संस्करण?
हयकम

क्या आप इसे उत्तर में जोड़ सकते हैं? मैं वह नहीं गिन रहा हूं लेकिन फिर भी आप इसे बरकरार रख सकते हैं।
हयकम

अरे @ मड्डीफिश, क्या आप इन्हें दो उत्तरों में अलग कर सकते हैं?
हयकम

@haykam यदि यह किसी उत्तर को स्वीकार करने के उद्देश्यों के लिए है, तो मैं ऐसा नहीं करूँगा क्योंकि मुझे नहीं लगता कि 0 बाइट का समाधान वास्तव में पाइके का उपयोग करता है और बहुत छाती लगता है
ब्लू

मैं उस उत्तर को स्वीकार नहीं करूंगा।
हयकम

0

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

एक पूर्ण कार्यक्रम, यह रिवर्स ऑर्डर में कमांड-लाइन तर्कों के रूप में इनपुट लेता है। इसकी आवश्यकता है -M5.01, जो मुफ़्त है।

say pop.', '.pop.' bytes

    '.pop

0

एमएसीएस लिस्प, 97 बाइट्स

(lambda(l c)(format"## %s, %s bytes\n\n%s"l(string-bytes c)(replace-regexp-in-string"^""    "c)))

इसके अलावा, चूंकि यह कभी-कभी उद्धरणों से बचने के लिए कठिन हो सकता है और क्या नहीं, एक उपयोग उदाहरण जो स्ट्रिंग को क्लिपबोर्ड पर कॉपी करता है। (मार्क क्षेत्र और उपयोग M-:)

एमएसीएस लिस्प, 184 बाइट्स

(kill-new ((lambda(l c)(format"## %s, %s bytes\n\n%s"l(string-bytes c)(replace-regexp-in-string"^""    "c)))"Emacs Lisp"(buffer-substring-no-properties(region-beginning)(region-end))))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.