triplegolf - न केवल स्रोत कोड की लंबाई मायने रखती है!


15

इस चुनौती का लक्ष्य एक कार्यक्रम लिखना है जहां निम्नलिखित तीन की लंबाई बिल्कुल समान है:

  • स्रोत कोड की लंबाई
  • आउटपुट की लंबाई यह मानक आउटपुट पर प्रिंट करता है
  • संकलक की चेतावनियों की लंबाई यह आपकी पसंद के (अनमोडेड) संकलक के साथ उत्पन्न होती है

विजेता तीनों मानदंडों को पूरा करने वाला सबसे छोटा कोड है, और कम से कम 1 वर्ण लंबा होना चाहिए।

चीजों को मसाला देने के लिए, यदि आउटपुट में तीन अलग-अलग वर्ण हैं, तो उसे प्रत्येक के लिए लंबाई में 5 अंक का दंड मिलता है (इसलिए +10 यदि केवल एक ही प्रकार, दो के लिए +5)।

(न्यूलाइन्स की गिनती या तो 1 या 2 अक्षर, आपकी पसंद के रूप में की जाती है, लेकिन इसे सभी तीन मानदंडों के अनुरूप होना चाहिए। लीडिंग और ट्रेलिंग व्हाइट-स्पेस को सभी तीन मानदंडों में सभी लाइनों में अनदेखा किया जाता है)

समान स्कोर के मामले में, सबसे दिलचस्प परिणाम (कचरे के बजाय) को प्रिंट करने वाला विजेता है।


1
"चरित्र का प्रकार" क्या है?
पीटर टेलर

5
इसके अलावा, क्या होगा यदि कंपाइलर गैर-चेतावनी आउटपुट (उदाहरण के लिए "कंपाइलिंग मेन") का उत्पादन करता है? इसके अलावा, क्या होगा अगर स्रोत फ़ाइल का नाम चेतावनी संदेशों में दिखाई देता है (जैसे "foo.c: 1: 1: ...")?
जॉय एडम्स

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

2
मुझे आश्चर्य है कि क्या किसी भाषा में ट्रिपल-क्वीन संभव है?
Ry-

2
व्याख्या की गई भाषाओं के लिए, हमें एक त्रुटि के कारण भी एक आउटपुट मिलता है, ऐसे मामले में, क्या उन त्रुटियों को स्वीकार किया जाता है या केवल चेतावनी को स्वीकार किया जाता है?
l0n3sh4rk

जवाबों:


14

बैश, 23 वर्ण

त्रुटि:

bash: /: Is a directory

स्रोत:

echo       $0-$01234;/;

आउटपुट:

/bin/bash-/bin/bash1234


ब्रेनफ * ck, 32 अक्षर

यह कोड लगभग 3 सेकंड के लिए निष्पादित होता है और बंद हो जाता है और निम्न त्रुटि और आउटपुट प्रदर्शित करता है।

त्रुटि:

bff: out of memory (-2058691272)

स्रोत:

+++++[......-]..+[>>>>>>>>>>>>-]

आउटपुट: (Hexdump)

0505 0505 0505 0404 0404 0404 0303 0303
0303 0202 0202 0202 0101 0101 0101 0000


सी, 35 अक्षर

चेतावनी:

b.c:1:30: warning: division by zero

स्रोत और आउटपुट:

main(){system("cat "__FILE__)/0;;;}


PHP, 50 अक्षर

चेतावनी:

PHP Warning:  Division by zero in /tmp/3 on line 1

स्रोत और आउटपुट:

<?php echo (0/0).''.file_get_contents(__FILE__);?>

1
बैश उदाहरण एक त्रुटि है, चेतावनी नहीं।
पीटर टेलर

C समाधान के लिए आप किस कंपाइलर का उपयोग कर रहे हैं?
ब्रेडबॉक्स

@breadbox gcc संस्करण 4.7.0 20120505 (प्रीलेरेज़) (GCC)
l0n3sh4rk

8

सी - 48 चार्ट

main(i){while(++i<49)putchar(i);putchar('\z');}

नोट: एक अंतिम (यूनिक्स-शैली) न्यूलाइन शामिल है।

gcc a.cपठन से उत्पादन :

a.c:1:41: warning: unknown escape sequence '\z'

से उत्पादन a.outज्यादातर गैर-मुद्रण वर्ण है, इसलिए यहां हेक्सडंप के माध्यम से पाइपिंग के बाद यह कैसा दिखता है:

00000000: 0203 0405 0607 0809 0A0B 0C0D 0E0F 1011  ................
00000010: 1213 1415 1617 1819 1A1B 1C1D 1E1F 2021  .............. !
00000020: 2223 2425 2627 2829 2A2B 2C2D 2E2F 307A  "#$%&'()*+,-./0z

मेरी समझ यह है कि गैर-प्रिंट करने योग्य (व्हाइटस्पेस) को काट दिया जाता है, इसलिए यह गिनती नहीं होगी। अगर वह काम करता है, तो मैं अपने जवाब में सुधार कर सकता हूं।
गफ्फी

1
नियंत्रण वर्णों को आमतौर पर व्हाट्सएप नहीं माना जाता है, सिवाय \ t, \ n, \ r, \ f, और कभी-कभी \ v के लिए। इनमें से कोई भी अग्रणी या अनुगामी स्थिति में नहीं है, इसलिए मुझे लगा कि मैं सुरक्षित था।
ब्रेडबॉक्स

1
मुझे लगता है कि यह पूरी तरह से स्वीकार्य है। वे व्हॉट्सएप नहीं हैं, और किसी भी मामले में यह एसीएम नहीं है कि आवश्यकताओं के साथ सख्त हो । इस "व्हाट्सएप नियम" का मुख्य कारण यह था कि कुछ आईडीई अपने कंपाइलर आउटपुट को भारी रूप दे सकते हैं।

1
@copy, या main(i){i='\z';while(i-->74)putchar(i);}- लेकिन प्रोग्राम का आकार कम करना वास्तव में काउंटर-उत्पादक है।
ब्रेडबॉक्स

1
यह मेरी पसंदीदा जवाब है, मैं जानता हूँ कि मैं फ़ाइल (वास्तविक quines कर बस के रूप में) की सामग्रियों तक निषिद्ध किया जाना चाहिए था
vsz

5

जावास्क्रिप्ट, 63 66

!function x(){console.log(x+'...');eval(Array(33).join('$'))}()

आउटपुट है:

function x(){console.log(x+'...');eval(Array(33).join('$'))}...

Chrome में, त्रुटि यह है:

ReferenceError: $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ is not defined

3

Visual Basic .NET, 185

जी, vbcइसके संकलन चेतावनियों के साथ सुंदर क्रिया है। वैसे भी, कोड यह है:

Public Module Main
    Public Sub Main()
        Console.WriteLine(New String("a"c,185))
    End Sub

    Public Function A()
        'This is actually just padding.
        'Hi
    End Function
End Module

(ध्यान दें कि वे टैब होने चाहिए, स्पेस नहीं।)

आउटपुट यह है:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

और संकलक चेतावनी यह है:

warning BC42105: Function 'A' doesn't return a value on all code paths. A null reference exception could occur at run time when the result is used.

    End Function
    ~~~~~~~~~~~~

(इस बार, यह वास्तव में चार स्थान हैं, टैब नहीं।)


3

Zsh , 20 बाइट्स

<<<   $-$_$_$_$_$_
[

यहाँ हम जिस समस्या का सामना कर रहे हैं, वह ऊपर एक टिप्पणी में दी गई है: Zsh हर त्रुटि से पहले लाइन संख्या के अलावा प्रोग्राम का नाम प्रिंट करता है । इसका समाधान इसका दुरुपयोग करने के लिए एक-वर्ण फ़ाइल नाम का उपयोग करता है। मैंने इसे एक सहायक स्क्रिप्ट में लपेटा है जो वास्तव में यह प्रिंट करता है, और wc -cstderr, stdout और स्रोत फ़ाइल पर उपयोग किया जाता है ।

आउटपुट: 569Xcatcatcatcatcatइसके बाद एक नई पंक्ति
त्रुटियां: s:[:2: ']' expectedएक नई पंक्ति के बाद


संपादित करें: कोई फ़ाइल प्रतिबंध के साथ वैकल्पिक 20 बाइट समाधान:

<<<$-$-$-$-$_>&1 >&2

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

Zsh , zsh -x10 बाइट्स

<<<$_$_$_

-xध्वज xtrace सक्षम करता है। इसके लिए फिर से एकल-वर्ण फ़ाइल नाम की आवश्यकता होती है। इसे ऑनलाइन आज़माएं!

Zsh zsh -JNTwEDY , 12 बाइट्स

<<<$->&1 >&2

-flagकोई फ़ाइल नाम की आवश्यकता के साथ सबसे छोटा जवाब। अधिक झंडे सेट करता है, और $-उन सभी को प्रिंट करता है। इसे ऑनलाइन आज़माएं!


2

जावास्क्रिप्ट (फ़ायरफ़ॉक्स 54), 34 बाइट्स

alert((f=function(x)1234)(56)+f+f)

आउटपुट:

1234function(x)1234function(x)1234

और यह इस चेतावनी को ब्राउज़र कंसोल में भेजता है:

expression closures are deprecated

यह फ़ायरफ़ॉक्स डेवलपर संस्करण (54.0a2) की मेरी प्रति में इस तरह दिखता है । यह फ़ायरफ़ॉक्स के अन्य संस्करणों में भी काम कर सकता है।


2

रूबी, 48 वर्ण

IO=1;puts ?a*48;# let's make it 48 bytes long :)

आउटपुट

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

चेतावनी दी है

r.rb:1: warning: already initialized constant IO

(फ़ाइल r.rb है, मैंने पथ को हटा दिया है, यदि आप इसे irb से चलाते हैं, तो आपको मिलेगा (irb): 1, चेतावनी ...)

रूबी में चेतावनी पद्धति है, लेकिन यह सिर्फ $ stderr के लिए अपने तर्क का उत्पादन करता है, जिससे यह चेतावनी की तरह कम दिखता है।


1

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

अन्य व्याख्याकार चेतावनी को अलग तरीके से प्रदर्शित कर सकते हैं। यह केवल TIO पर काम करने के लिए परीक्षण किया गया था।

from warnings import*
print("prt"*19)
warn("Warning...!")

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

उत्पादन

prtprtprtprtprtprtprtprtprtprtprtprtprtprtprtprtprtprtprt

चेतावनी

.code.tio:3: UserWarning: Warning...!
  warn("Warning...!")

ध्यान दें कि प्रमुख स्थान बाइट गिनती की ओर नहीं गिने जाते हैं। यदि अग्रणी स्थानों की अनदेखी नहीं की गई, तो यह 51 बाइट्स में किया जा सकता है।


1

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

Screen(console.log(Function));

प्रिंट

ƒ Function() { [native code] }

क्रोम में, और फिर फेंकता है

TypeError: Illegal constructor

मेरा मूल 32 बाइट समाधान:

(x=y=>console.log(x+!0+10)||z)()

पहला, प्रिंट

y=>console.log(x+!0+10)||ztrue10

और त्रुटि फेंकता है

ReferenceError: z is not defined

0

VBA, 39 बाइट्स

सुनिश्चित नहीं है कि यह योग्य है, संकलक को देखते हुए, लेकिन:

इनपुट: (तत्काल विंडो में)

For i=1 To 39:a=a & Chr(i):Next:Print a

* आउटपुट में गैर-मुद्रण वर्ण शामिल हैं जो इस विंडो में अच्छा नहीं खेलते हैं।


VBA कोई संकलक चेतावनी नहीं देता है, इसलिए मुझे नहीं लगता कि यह एक वैध होने के रूप में गिना जाता है
टेलर स्कॉट

0

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

dd say 1e9

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

प्रिंट 1000000000और Bool::TrueSTDERR को प्रिंट करता है । दोनों एक अनुगामी न्यूलाइन का निर्माण करते हैं, लेकिन इस चुनौती में अनुगामी व्हाट्सएप को नजरअंदाज किया जाता है। ddएक Rakudo विशिष्ट डिबगिंग फ़ंक्शन है

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