एक "धोखा" रानी


56

लॉन्ग टाइम लर्कर, फर्स्ट टाइम पोस्टर। तो यहाँ जाता है।

क्वीन के लिए विकिपीडिया पृष्ठ में , यह कहता है कि "यदि कोई स्वयं के कोड को देखता है तो उसे" धोखा 'माना जाता है। " आपका काम इन "धोखा खानों" में से एक बनाना है जो अपने स्वयं के स्रोत कोड को पढ़ता है।

यह , इसलिए बाइट्स में सबसे छोटा कोड है - प्रत्येक भाषा में - जीतता है। इसका मतलब यह है कि 5-बाइट वाली पाइथ स्क्रिप्ट 21-बाइट पायथन लिपि को नहीं हराएगी - लेकिन पाइथन स्क्रिप्ट 15-बाइट होगी।

स्रोत कोड को पढ़ने के लिए आपको फ़ाइल I / O का उपयोग करना होगा, इसलिए निम्न जावास्क्रिप्ट कोड, आधिकारिक विकिपीडिया पृष्ठ से लिया गया, अमान्य है:

function a() {
    document.write(a, "a()");
}
a()

यह डिस्क पर फ़ाइल के स्रोत कोड का उपयोग करना चाहिए ।

आपको फ़ाइल नाम निर्दिष्ट करने की अनुमति नहीं है। आपको इसे केवल नाम का पता लगाना चाहिए।

सभी को स्पष्ट? जाओ!


1
क्या मूल फ़ाइल में एक अनुगामी newlines मौजूद नहीं है?
इसहाक

3
@isaacg IMHO यह एक क्वीन नहीं है, क्योंकि यह सोर्स कोड नहीं है।
22 जुलाई को

3
आपको एक आवश्यकता बताई जानी चाहिए कि यह स्रोत स्थान के लिए एक हार्ड-कोडित स्ट्रिंग मानने के बजाय वास्तविक फ़ाइल नाम का निर्धारण करे।
सामंत

3
मैं @ फैरसुम से सहमत हूं, हालांकि, एक विशिष्ट फ़ाइल नाम की आवश्यकता होती है, जो इस चुनौती को तुच्छ बनाता है।
mınxomaτ

1
क्या हम मान सकते हैं कि (संकलित भाषाओं के लिए) स्रोत कोड एक ही फ़ोल्डर में है (यानी हम स्रोत प्राप्त करने के लिए arg [0] में ".c" या ".ht" जोड़ सकते हैं)।
HEGX64

जवाबों:


60

Zsh , 4 बाइट्स

<$0

जेड शेल में निर्मित फ़लाइन फ़ंक्शंस हैं। चौथा चरित्र एक लाइनफ़ीड है।

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

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

परीक्षण चालन

$ cat "my quine.sh"
<$0
$ zsh "my quine.sh" 
<$0
$ diff -s <(zsh "my quine.sh") <(cat "my quine.sh")
Files /dev/fd/63 and /dev/fd/62 are identical

28
feline functionalities:)
बीबी

48

बैश, 6 बाइट्स

cat $0

मूल रूप से।


3
यह एक नई रूपरेखा नहीं छापता है।
Addison Crump

2
catएक नई लाइन नहीं जोड़ते हैं (कम से कम मेरे सिस्टम पर)।
एक स्पेगेटो

7
@isaacg catप्रति फ़ाइल बाइट की आपूर्ति की गई सामग्री को प्रिंट करता है।
डेनिस

2
@LukStorms लेकिन यह एक catसमाधान के बजाय फिर एक समाधान नहीं होगा bash? और बिल्ली वास्तव में प्रोग्रामिंग भाषा के रूप में अर्हता प्राप्त नहीं करती है
फेबियन शेंगलर

30
यदि फ़ाइल का नाम है तो क्या यह काम करेगा -e?
मार्क प्लॉटनिक

32

UNIX निष्पादन योग्य लोडर, 10 बाइट्स

#!/bin/cat

यदि आप मानक त्रुटि पर स्पैम की परवाह नहीं करते हैं, तो आप इसे एक बाइट कम कर सकते हैं:

#!/bin/dd

7
मुझे यह पसंद हे। सुनिश्चित नहीं है कि यह "भाषा" के रूप में योग्य है, हालांकि।
केविन

शायद थोड़ा धोखा दे, लेकिन क्या आप अपने बिन फ़ोल्डर और बिल्ली के कार्यक्रम का नाम नहीं बदल सकते हैं?
जेम्स वेबस्टर

3
मैं सुझाव दे नहीं कर रहा हूँ आप कर btw। मैं सुझाव दे रहा हूँ आप कर सकते थे
जेम्स वेबस्टर

3
@ केविन "भाषा" (अर्थात, दुभाषिया) है cat। और मुझे लगता है कि अगर आप बहुत विशिष्ट होना चाहते हैं, तो एक catकार्यक्रम बस खुद को प्रिंट करता है, और अस्तित्व में हर फ़ाइल प्रारूप के साथ संगत है :)
l0b0

1
@JamesWebster sudo install /bin/cat /c। Y'know, बस मामले /binमें रूट फाइल सिस्टम पर नहीं है। होगा कि catएकल में ...
ब्लैकलाइट उदय

25

सी, 52

s[99];main(){read(open(__FILE__,0),s,99);printf(s);}

बेशक, यह स्रोत कोड पढ़ता है और संकलित कार्यक्रम नहीं - मुझे लगता है कि यह कल्पना के भीतर है।


आप अनुगामी न्यूलाइन से बचने के printfबजाय उपयोग कर सकते हैं puts
22

@ फॉर्सम हां, अच्छी पकड़
डिजिटल ट्रॉमा

19
@DigitalTrauma यह आपके अवतार की वजह से है,
पीटर ओल्सन

3
वास्तव में, putsउपयोग किया जा सकता है, आपको बस readकम वर्णों की आवश्यकता है ।
user4098326


13

PHP, 21 बाइट्स

<?=file(__FILE__)[0];

fileएक फ़ाइल लाइन को एक सरणी में लाइन द्वारा पढ़ता है और फ़ाइल में केवल एक लाइन होती है। यह तुलना में एक बाइट बचाता है readfile(__FILE__)


ध्यान दें कि यह केवल PHP5.4 और ऊपर से काम करता है, जो कि सरणी डे-रेफ़रनेशन का समर्थन करने वाला पहला संस्करण था। लेकिन इसके अलावा, काफी अच्छा जवाब!
इस्माइल मिगुएल

1
readfileयह भी 21: है <?readfile(__FILE__);
प्रिमो

1
ठीक है, इसकी जरूरत नहीं है<?=
फाबियन शेंगलर

12

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

open 0;print<0>

सहेजे गए 3 बाइट्स @ ThisSuitIsBlackNot के लिए धन्यवाद !


2
आप 3 बाइट्स बचा सकते हैंopen 0;print<0>
ThisSuitIsBlackNot

@ThisSuitIsBlackNot मुझे यकीन था कि ऐसा करने का एक छोटा तरीका था, लेकिन मैं अपने काम के जीवन के लिए ऐसा नहीं कर सकता था ... फिर 0मान लेता है $0?
डोम हेस्टिंग्स 5

3
हां। देखें perldoc -f open: "एक शॉर्टकट के रूप में एक-तर्क कॉल फ़ाइलहैंडल के समान नाम के वैश्विक स्केलर चर से फ़ाइल नाम लेता है: $ARTICLE = 100; open(ARTICLE) or die "Can't find article $ARTICLE: $!\n";"
ThisSuitIsBlackNot

11

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

print slurp $?FILE

मैंने पर्ल 6 के साथ बहुत लंबे समय तक काम नहीं किया है इसलिए मुझे यकीन नहीं है कि इसे छोटा करने के लिए कोई तरकीबें हैं।


2
क्या आप दूसरी जगह निकाल सकते हैं?
Eevee

3
@Eevee नहीं, यह नाराज़ हो
Hotkeys

11

ऑसस्क्रिप्ट (कमांड लाइन से AppleScript), 40 33 32 बाइट्स

(मेरे लिए पथ पढ़ें) पैराग्राफ 1

के साथ नामक एक फ़ाइल पर निष्पादन osascript a

फ़ाइल के पहले पैराग्राफ (लाइन) को प्राप्त करता है और इसे एक अनुगामी न्यूलाइन के साथ STDOUT में प्रिंट करता है, इसलिए कोड में न्यूलाइन।


1
मेरे संपादन को ओपी में देखें
TheInitializer

काम करने के लिए इसे प्राप्त करने पर काम कर रहा है।
Addison Crump

read path to meलगता है मेरे लिए काम करता है। एल कैप।
डिजिटल ट्रॉमा

यह नहीं देखा, लेकिन यह वह तरीका है जो मैंने खत्म किया। : पी थैंक्स, @ डिजीटलट्रॉमा। संपादित करें: नई रूपरेखाओं पर विचार किया जाना चाहिए, इसलिए आप नई रूपरेखा जोड़ें और पैराग्राफों का उपयोग करें 1.
Addison Crump

11

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

फ़ाइल के अंत में एक नई रेखा है।

print open(__file__).readline()

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

फ़ाइल के अंत में एक नई रेखा है।

print(open(__file__).readline())

एक समस्या को पकड़ने और आपूर्ति करने के लिए feersum के लिए धन्यवाद __file__, Pyovon 2 समाधान के लिए एक नए दृष्टिकोण के लिए Loovjo , जिसने 17 बाइट्स को बचाया, और एक समाधान के लिए Skyler जिसने एक और बाइट को बचाया और दोनों पायथन 2 और 3 में काम किया (लंबन printपायथन में एक फ़ंक्शन है) 3)!

के लिए डॉक्टर लिंक readline


यह python3 में 2 बाइट्स भी बचाएगा क्योंकि आप endपैरामीटर को छोड़ सकते हैं ।
स्केलेर

@Skyler तुम बिल्कुल सही हो।
सेलेओ

पायथन 3 में यह कैसे काम करता है, जिसके लिए पैरेंस की जरूरत है print?
दरवाज़े

पायथन 3 का print(open(__file__).readline())पालन ​​एक नई पंक्ति द्वारा किया जाना चाहिए ।
स्काईलर

आपका पायथन 3 उदाहरण पायथन 3 के बजाय अजगर 2 कहता है
TheInitializer


10

पायथन 2.7, 30 बाइट्स

print open(__file__).read(29)

संपादित करें: बस स्पष्ट होने के लिए, ऊपर दिए गए कोड को अंत में 30 वीं बाइट के रूप में एक नई रेखा माना जाता है। मैं मार्कडाउन से परिचित नहीं हूं कि यह पता लगाने के लिए कि इसे कोड ब्लॉक में कैसे प्रदर्शित किया जाए।

मैं यहाँ उसी ट्रिक का उपयोग कर रहा हूँ जैसे कि मेरे C सबमिशन में। यह अतिरिक्त सोर्सलाइन जो printआउटपुट के लिए संलग्न होगी , के लिए अनुगामी न्यूलाइन को छोड़कर पूरे स्रोत फ़ाइल को पढ़ता है ।


क्या यह उसी समस्या के साथ चलती है जो अनुगामी न्यूलाइन के साथ है जो अन्य सबमिशन ने की है?
कोल

नहीं। एक अनुगामी न्यूलाइन माना जाता है जो स्रोत कोड में 30 वीं बाइट बनाता है, लेकिन मैं इसे कोड ब्लॉक में प्रदर्शित नहीं कर सकता। मेरा सबमिशन काम करता है क्योंकि यह सोर्स कोड के पहले 29 बाइट्स को पढ़ता है ताकि नई से विलुप्त printन हो।
xsot

4
यही नहीं अल्पविराम क्या करता है। यह एक नई पंक्ति के बजाय एक स्थान जोड़ता है।
xsot

2
एक शब्दार्थ-महत्वपूर्ण न्यूलाइन को इंगित करने के लिए का उपयोग कर सकते हैं
Eevee

9

जावा, 212 196 बाइट्स (संदिग्ध हार्ड-कोडिंग नियमों के साथ 171 बाइट्स)

~ 15 बाइट्स द्वारा इसे छोटा करने के लिए @ क्रंचर को धन्यवाद!

मुझे कोई संदेह नहीं है कि यह गोल्फ हो सकता है।

import java.nio.file.*;class A{public static void main(String[]a){new A();}A(){try{System.out.print(new String(Files.readAllBytes(Paths.get(getClass().getName()+".java"))));}catch(Exception e){}}}

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

import java.nio.file.*;class A{public static void main(String[]a)throws Exception{System.out.print(new String(Files.readAllBytes(Paths.get(A.class.getName()+".java"))));}}

गैर-स्थैतिक विधि द्वारा वर्ग का नाम प्राप्त करने के लिए एक कंस्ट्रक्टर का उपयोग करता है। एक स्थिर विधि ( A.class.getName()) का उपयोग करना वास्तव में कठिन कूट था, इसलिए मैंने 'उचित' तरीके का उपयोग किया। उपयोग करते हुए A.class.getName(), यह कोड 171 बाइट्स तक कम हो जाता है।

पठनीय संस्करण:

निर्माता और this.getClass():

import java.nio.file.*;
class A{
    public static void main(String[]a) {
        new A();
    }
    A(){
        try{
            System.out.print(
                new String(
                Files.readAllBytes(
                Paths.get(
                getClass().getName()+".java"))));
        }
        catch(Exception e) {}
    }
}

स्थिर विधि का उपयोग करना A.class.getName():

import java.nio.file.*;
class A {
    public static void main(String[] a) throws Exception {
        System.out.print(
             new String(
                  Files.readAllBytes(
                       Paths.get(
                            A.class.getName()+".java"))));
    }
}

एक बार में फ़ाइल के सभी बाइट्स को पकड़ लेता है और इसे STDOUT में आउटपुट करता है। बहुत सीधा।


सिर्फ उपयोग क्यों नहीं A.class.getName()?
Fabio F.

3
यह CodeGolf नहीं CodeReview है! ;)
फैबियो एफ।

1
@FabioF। हाँ, लेकिन मुझे लगता है कि एक हार्डकोड फ़ाइल नाम होने की रेखा पर नृत्य करता है, जो नियमों के विरुद्ध है। मुद्दा यह है, यदि आप फ़ाइल का नाम बदलते हैं, तो आपको कक्षा का नाम (स्पष्ट रूप से) बदलना होगा, लेकिन इस पंक्ति को भी बदलना होगा, जो हार्डकोड फ़ाइल नाम की तरह है।
क्रंचर

1
क्या आप कंस्ट्रक्टर के अंदर प्रिंट स्टेटमेंट को कॉल नहीं कर सकते हैं और अपने आप को एक स्थिर चर सेट करने से बचा सकते हैं?
क्रंचर

1
@ क्रंचर नाह। आप java.io प्राप्त करें, मैं java.nio से चिपक जाऊंगा - यह बिंदु जीतने के लिए नहीं है, बल्कि विभिन्न तरीकों से इसे बहुत संक्षिप्त तरीके से दिखाने के तरीके हैं।
एडिसन क्रम्प

8

AutoIt, 34 बाइट्स

क्लिपबोर्ड पर स्वयं आउटपुट:

ClipPut(FileRead(@ScriptFullPath))


7

जाओ, १११ १०५ बाइट्स

package main
import("io"
."os"
."runtime")
func main(){_,p,_,_:=Caller(0)
f,_:=Open(p)
io.Copy(Stdout,f)}

गो में मेरा पहला कोड-गोल्फ - बस कुछ तरकीबें आप यहाँ इस्तेमाल कर सकते हैं जो मुझे लगता है।


गो में पहले से ही एक उत्तर है - क्या यह उसी विधि का उपयोग करता है?
Addison Crump

@VoteToClose: मुझे यह महसूस होता है, मैं वास्तव में दूसरे से प्रेरित था, लेकिन यहां (सस्ते ट्रिक) नाम बदलने के लिए पैकेज का इस्तेमाल किया और साथ ही फ़ाइल को खोलने और पाइपिंग करने के लिए अलग तकनीक का इस्तेमाल किया। मुझे सहेजा एक बड़े पैमाने पर 22 बाइट्स ;-)
Tomasz

विधि वास्तव में थोड़ा अलग है, अच्छा है!
फेबियन शेंगलर

7

पॉवरशेल, 39 36 31 25 बाइट्स

के रूप में तंग के रूप में मैं इसे प्राप्त कर सकते हैं:

gc $MyInvocation.MyCommand.Path | oh

लोकप्रिय मांग से समर्थित इसे बदल दिया गया है:

gc $PSCommandPath|echo -n

खोल वर्तमान मानक आउटपुट होस्ट करने के लिए


gc $MyInvocation.MyCommand.Pathपर्याप्त है। यह अपने आप इसे प्रिंट कर लेगा।
एंड्रयू

इसकी गारंटी नहीं है, खासकर अगर स्क्रिप्ट चुपचाप चल रही है
चाड बैक्सटर

हाहा हाँ मुझे परवाह नहीं है। मैं पोस्ट करने जा रहा था अगर किसी और के पास पॉवरशेल का जवाब नहीं था। लेकिन मैं भूल गया कि gcवह एक उपनाम था और बस उपयोग करने जा रहा था cat, इसलिए आप वैसे भी मुझ पर एक बाइट था।
एंड्रयू

उह, मैं इसके बारे में इतना सख्त नहीं होगा। अन्यथा प्रत्येक PS उत्तर को स्पष्ट रूप से होस्ट शेल में पाइप करना होगा, लेकिन यह आपके ऊपर है ...
एंड्रयू

आप इसके बजाय gc $PSCommandPath17 बाइट्स के लिए उपयोग कर सकते हैं । मुझे जो समस्या दिखाई देती है, वह यह है कि यह एक नई पंक्ति (जो स्रोत में मौजूद नहीं है) को बाहर निकालती है। यह अस्पष्ट है कि यदि नई रेखा का अनुगमन ठीक है या नहीं ... इस नियम के आधार पर, हमें gc $PSCommandPath|write-host -n31 बाइट्स के लिए कुछ कठिन काम करने की आवश्यकता हो सकती है ।
AdmBorkBork 13


5

सी, 49 बाइट्स

s[];main(){read(open(__FILE__,0),s,48);puts(s);}

संपादित करें: स्पष्ट करने के लिए, 49 वीं बाइट एक नई रेखा है।

यह स्रोत कोड को नई लाइन के लिए खाते के अंत में न्यूलाइन को पढ़ता है जो putsआउटपुट के अंत में संलग्न होगा।


यह कोड दो बार अपरिभाषित व्यवहार को आमंत्रित करता है।
जोशुआ

5
खैर, यह कोड गोल्फ है। मेरा कोड वांछित आउटपुट उत्पन्न करता है इसलिए यह एक मान्य सबमिशन है।
xsot

1
@xsot उस स्थिति में, आपको संभवतः संकलक संस्करण + विकल्प सूचीबद्ध करना चाहिए; अन्यथा यह सत्यापित नहीं हो सकता है।
जस्टिन

1
यदि अपरिभाषित व्यवहार की अनुमति दी जाती है जब तक कि आपके पास कुछ कंपाइलर हो सकते हैं जो चंद्रमा के कुछ चरण के दौरान किसी मशीन पर वांछित आउटपुट उत्पन्न करते हैं, तो मैं int main (शून्य) {* 0; } समाधान के रूप में। आखिरकार, मानक एक कार्यान्वयन की अनुमति देगा जो उस प्रोग्राम को संकलित करता है जो समस्या को हल करता है। जब तक आप संकलक निर्दिष्ट करते हैं, तब तक कार्यान्वयन-निर्भर व्यवहार का उपयोग करने के साथ मैं ठीक हो जाऊंगा, लेकिन अपरिभाषित व्यवहार के साथ, आप यह भी गारंटी नहीं दे सकते कि यदि आप उस पंक्ति में दस बार भाग गए तो आपको दस अलग-अलग उत्तर नहीं मिलेंगे। एक ही मशीन।
रे

1
@MDXF मैं गंभीरता से यह सुझाव नहीं दे रहा था कि हम उस समाधान को लिखें। मैं अपरिभाषित व्यवहार की अनुमति देने के खिलाफ बहस कर रहा था। मौजूदा कंपाइलरों पर भी काम int main() {*0;} हो सकता है , क्योंकि इसमें अपरिभाषित व्यवहार होता है। इसी तरह, xsot का समाधान मौजूदा संकलक पर काम कर सकता है , क्योंकि इसमें अपरिभाषित व्यवहार होता है। समस्या को हल करने के लिए न तो गारंटी दी जाती है। (हालांकि xsot के ऐसा करने की संभावना अधिक है , लेकिन यह आसानी से दुर्घटनाग्रस्त हो सकता है)। मेरा वास्तविक तर्क यह है कि हमें ऐसे समाधानों की अनुमति देनी चाहिए जो कार्यान्वयन-निर्भर या अनिर्दिष्ट व्यवहार पर निर्भर करते हैं, लेकिन अपरिभाषित व्यवहार पर नहीं।
रे


4

पायथ, 25 बाइट्स

$import sys$h'e$sys.argv

यह इसका फ़ाइल नाम पढ़ता है। अनिवार्य रूप से, यह argv दिखता है, फ़ाइल को उसके अंतिम तर्क के अनुरूप खोलता है, और इसकी पहली पंक्ति प्रिंट करता है।


तुम बस नहीं कर सकते h'$__file__$?
kirbyfan64sos

@ kirbyfan64sos जो मुझे त्रुटि देता है NameError: name '__file__' is not defined। अजगर को पायथन में संकलित किया जाता है, और फिर परिणामी स्ट्रिंग को निष्पादित किया जाता है। इसलिए मुझे उम्मीद नहीं होगी कि मैं काम करूंगा।
isaacg

4

जाओ, १३३ बाइट्स

सभी को स्पष्ट? जाओ!

package main
import("fmt"
"io/ioutil"
"runtime")
func main(){_,f,_,_:=runtime.Caller(0)
s,_:=ioutil.ReadFile(f)
fmt.Print(string(s))}

2
इसने मुझे गो में अपना (और बहुत पहले) कोड-गोल्फ समाधान लिखने के लिए प्रेरित किया। कुछ सामान्य तरकीबों की तलाश में, आप संकुल के लिए एकल-अक्षर नामों को लागू करके यहां 123 वर्णों तक आसानी से जा सकते हैं r"runtime"
tomasz

4

> <> , 13 बाइट्स

0:0go:c=?;1+!

दोनों ऑनलाइन और ऑफलाइन दुभाषियों पर परीक्षण किया। gआदेश स्रोत फ़ाइल से पढ़ने के लिए और अगर यह इस चुनौती के प्रयोजन के लिए शामिल नहीं किये जाते मैं अपनी प्रविष्टि चिह्नित कर देंगे गैर प्रतिस्पर्धा में सक्षम होने के सबसे करीब है; मेरा मानना ​​है कि इसे सामान्य तौर पर क्वीन के लिए "धोखा" माना जाता है।

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


4

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

विज्ञान के लिए!

import System.Environment
main=getProgName>>=readFile>>=putStr

केवल runhaskellकमांड के साथ काम करता है । हालांकि बहुत अच्छा
HEGX64

4

> <> , 31 बाइट्स

डिस्क्लेमर: इसमें कोई फ़ाइल I / O> <> नहीं है, हालांकि मुझे लगा कि इसके कोडस्पे I / O को दिखाना दिलचस्प होगा, जो कि प्रेरित भाषा में से एक है <>।

00voa0+1;!?$~<
1+> :r:@g: ?!^o$

कुछ समय पहले बनाया गया एक सेल्फ रीडिंग क्वीन, आप इसे यहाँ आज़मा सकते हैं

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


मैं> <> में पोस्ट करने की सोच रहा था, लेकिन मुझे लगा कि <> नियम के कारण असंभव होगा: "आपको स्रोत कोड पढ़ने के लिए फ़ाइल I / O का उपयोग करना होगा"
Sp3000

@ Sp3000 वूप्स वास्तव में, लगता है जैसे मैंने चुनौती को अच्छी तरह से नहीं पढ़ा है। मैं एक अस्वीकरण जोड़ूंगा
हारून

3

एफ #, 54 बाइट्स

printf"%s"(System.IO.File.ReadAllText __SOURCE_FILE__)

उपयोग:

fsi --exec a.fsx

3

पर्ल 5, 15 13 बाइट्स

इसे प्रेरित करने के लिए बैश समाधान का श्रेय:

print`cat $0`

संपादित करें: अर्ध-बृहदान्त्र या पहले स्थान की आवश्यकता नहीं है।


शुद्ध पर्ल नहीं है, इसे कुछ अन्य निष्पादन योग्य, अर्थात् cat, वर्तमान और में खोजने योग्य चाहिए $PATH। लेकिन अगर यह मौजूद है, तो इसे केवल एक कमांड के रूप में उपलब्ध माना जा सकता है perl, तो क्यों नहीं।
गोलेर रामबलर

3

नोड.जेएस, 66 63 बाइट्स

p=process;p.stdout.write(require('fs').readFileSync(p.argv[1]))

का उपयोग नहीं करता है console.log, जो एक नई पंक्ति जोड़ता है।


1
आप तुल्यकालिक एपीआई का उपयोग करके कुछ बाइट्स बचा सकते हैं:p=process;p.stdout.write(require('fs').readFileSync(p.argv[1]))
टिहरीश्री

1
console.log(require('fs').readFileSync(process.argv[1]))\n57 बाइट्स के लिए क्यों नहीं ?
कॉनर ओ'ब्रायन

यह हमेशा काम नहीं करता है। कहते हैं फ़ाइल का नाम है test.js। इसे चलाकर इसे लागू करना मान्य है node test, जिसके कारण यह त्रुटि हो सकती है।
पैट्रिक रॉबर्ट्स

3

सी, 31 बाइट्स

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

बैश समाधान इतना छोटा है, तो इस पर सी समाधान का आधार क्यों नहीं है?


3

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

{-#LANGUAGE CPP#-}main=putStr=<<readFile __FILE__

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

(जीएचसी) हास्केल में सी प्रीप्रोसेसर का उपयोग करने के लिए एक एक्सटेंशन है (आमतौर पर संस्करणों और आर्किटेक्चर के बीच पोर्टेबिलिटी के लिए उपयोग किया जाता है।) उम्मीद है कि आत्म-व्याख्यात्मक।


3

जावास्क्रिप्ट के साथ HTML, 115 बाइट्स (वास्तव में गिनती नहीं है)

<!DOCTYPE html><html><title>x</title><script>alert(new XMLSerializer().serializeToString(document))</script></html>

क्या यह गिनती है? मुझे कोई आपत्ति नहीं है, यह मजेदार था :)

तकनीकी रूप से यह एक फ़ाइल नहीं खोलता है। यह एक सुव्यवस्थित एचटीएमएल 5 दस्तावेज भी है। XMLSerializer एकमात्र उपकरण था जिसने DOCTYPE भाग भी लौटाया, लेकिन यह गैर-मानक है। फिर भी, यह क्रोम और फ़ायरफ़ॉक्स पर काम करता है, और मैं अन्य ब्राउज़रों को शर्त लगाता हूं।

और बोनस के रूप में:

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

alert(document.currentScript.textContent)

हटाना ";" अंत में, 1 बाइट बचाएं :)
евгений Новиков

1
@ You'reвгенийНовиков आप सही हैं, मुझे यकीन नहीं है कि मैंने उस समय वापस क्यों छोड़ा था। ऐसा लगता है जैसे मैंने इसकी गिनती नहीं की है।
डोमिनोज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.