कोड इंजेक्शन C # में भी काम करता है!


15

निम्नलिखित C # प्रोग्राम आउटपुटिंग को देखते हुए False, कोड के एक 'दुर्भावनापूर्ण' लाइन को इंजेक्ट करें जैसे कि प्रोग्राम आउटपुट True

class Program
{
    static void Main()
    {
        System.Console.Write("False");
        ;
    }
}

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

सबसे छोटा जवाब जीत जाता है।


आपका उद्देश्य जीतने की कसौटी क्या है?
जेबी

@JB क्या पहेलियों को जीतने की कसौटी चाहिए? संपादित करेंगे।
केंडल फ्रे

मैं ज्यादातर कोड-गोल्फ टिप्पणी पर प्रतिक्रिया दे रहा हूं, लेकिन बिंदु खड़ा है: जो स्वीकृत उत्तर होगा?
जेबी

@ जेबी सबसे छोटा जवाब सबसे अच्छा जवाब है।
केंडल फ्री

खैर यह है कोड गोल्फ, यह है, तो नहीं है?
जेबी

जवाबों:


17

५२ अक्षर

}static Program(){System.Console.Write(0<1);for(;;);

तो पूरी बात बन जाती है:

class Program
{
    static void Main()
    {
        System.Console.Write( "False" );
    }
    static Program()
    {
        System.Console.Write( 0 < 1 ); 
        for ( ; ; ) ;
    }
}

अपने उत्तर के बीच में प्रश्न को संपादित करने के लिए क्षमा करें। न्यूलाइन्स की अब अनुमति नहीं है, आपको उपयोग करना होगा Write
केंडल फ्रे

ठीक है, मैं बदल WriteLineगया हूँWrite
Danko Durbić

1
आप शायद बाहर निकलने के स्थान पर कुछ बाइट्स बचा सकते हैं for(;;);, कुछ भी नहीं मैंने देखा है कि कार्यक्रम की आवश्यकता है ...?
जोआचिम इस्कासन

@JoachimIsaksson हां, यह निर्दिष्ट के रूप में आवश्यकताओं को पूरा करता है।
केंडल फ्रे

4
}static Program(){System.Console.Write(0<1);for(;;);हमेशा बन सकता है}static Program(){for(System.Console.Write(0<1);;);
एनपीएसएफ ३०००

7

सी #, 51 अक्षर

Console.Write("\b\b\b\b\b");Console.Write("True ");

केवल मानक आउटपुट पर काम करेगा


पहली बात मैंने कोशिश की, दुर्भाग्य से यह प्रारंभिक के कारण काम नहीं करेगा WriteLine
वीरोस

3
अब यह है Write: / मुझे नहीं पता कि हम इसे हल करने का प्रबंधन कैसे करेंगे अगर यह बदलता रहता है ...
वीरोस

@ वीरोस मैं 'न्यूलाइन या नो न्यूलाइन' की अस्पष्टता को दूर करना चाहता था।
केंडल फ्रे

3
आपको 2 उदाहरणों की आवश्यकता नहीं है Console.Write, और आप \r5 \bs के बजाय उपयोग कर सकते हैं । Console.Write("\rTrue ");
ब्रायन एस

मुझे नहीं लगता कि यह मानदंडों को पूरा करता है। यह वास्तव में पहले गलत को आउटपुट करता है, जो बाद में ट्रू द्वारा ओवरवेट हो जाता है।
माइक्रोबियन

1

यदि आप स्टैडआउट को किसी फ़ाइल पर पुनर्निर्देशित किया गया है, तो आप अभी भी काम करने के लिए RamonBoza के उत्तर को सामान्य कर सकते हैं।

प्रोग्राम को लिनक्स पर मोनो के तहत चलाता है, असेंबली Mono.Posix.dllलोड के साथ:

if(Mono.Unix.Native.Syscall.isatty(1))
{
    Console.Write("\rTrue ");
}
else
{
    // Truncate the output file first
    Console.OpenStandardOutput().SetLength(0);
    Console.Write("True");
}

मुझे संदेह है कि यह विंडोज पर काम करता है, लेकिन संभवतः इसके बराबर है isatty()


1

83 ... डब्ल्यूआईपी

मैं उम्मीद कर रहा था कि यह काम करेगा, लेकिन जाहिरा तौर पर "गलत" को नजरअंदाज नहीं किया जा सकता है क्योंकि मैं अपने कंपाइलर में आशा करता हूं

//}unsafe static Program(){fixed(char*f="False"){*(long*)f=0x65007500720054;*(f+4)=' ';}
}unsafe static Program(){fixed(char*f="False")for(int i=5;i-->0;)*(f+i)="True "[i];

ungolfed

class Program
{
    static void Main(string[] args)
    {
        Console.Write("False");
    }

    unsafe static Program()
    {
        fixed (char* f = "False") for (int i = 5; i-- > 0; ) *(f + i) = "True "[i];
    }
}

1
class Program
{
    static void Main()
    {
        System.Console.Write("False");

        System.Console.Clear(); System.Console.Write("True");

        Console.ReadLine();
    }
}

यदि स्टडआउट पुनर्निर्देशित है तो यह काम नहीं करेगा।
केंडल फ्रे

0

यकीन नहीं होता अगर ये मान लिया जाए।
सवाल कंपाइलर विकल्पों के बारे में कुछ नहीं कहता है, इसलिए मुझे लगता है कि मैं ऐप के प्रवेश बिंदु को बदल सकता हूं।
55 वर्ण, स्वीकृत उत्तर से 3 अधिक

}class P{static void Main(){System.Console.Write(1>0);}

पूर्ण

class Program
{
    static void Main()
    {
        System.Console.Write("False");
    }
    class P
    {
        static void Main() { System.Console.Write(1 > 0); }
    }
}

समुदाय में आपका स्वागत है!
आउटगॉल्फ जूल

@ E @Gʀɪᴋᴛʜᴇ धन्यवाद। यह एक शानदार साइट है !!!
जॉर्ज वोव्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.