आपके साक्षात्कार के अंत में, ईविल इंटरव्यूअर आपको बताता है, "हम बनाते हैं कि हमारे सभी आवेदक एक छोटी कोडिंग परीक्षा लेते हैं, यह देखने के लिए कि क्या वे वास्तव में जानते हैं कि वे किस बारे में बात कर रहे हैं। चिंता न करें; यह आसान है और यदि आप बनाते हैं। एक कामकाजी कार्यक्रम, मैं आपको तुरंत नौकरी की पेशकश करूंगा। " वह आपको पास के कंप्यूटर पर बैठने का इशारा करता है। "आपको बस इतना करना है कि एक कार्यशील हैलो वर्ल्ड प्रोग्राम बनाना है। लेकिन" - और वह मोटे तौर पर ग्रिंस करता है - "एक कैच है। दुर्भाग्य से इस मशीन पर हमारे पास एकमात्र कंपाइलर एक छोटा बग है। यह बेतरतीब ढंग से एक चरित्र को हटा देता है। संकलन करने से पहले स्रोत कोड फ़ाइल। ठीक है, पांच मिनट में मिलते हैं! " और वह खुशी से सीटी बजाता हुआ कमरे से बाहर चला गया।
क्या आप गारंटी दे सकते हैं कि आपको काम मिलेगा?
काम
एक प्रोग्राम लिखें Hello, world!
जो फ़ाइल में किसी भी स्थिति से एकल वर्ण हटाए जाने के बाद भी मानक आउटपुट पर प्रिंट करेगा । या जितना संभव हो उतना करीब आएं।
नियम
नो एक्सट्रांसस आउटपुट - Hello, world!
मानक आउटपुट के लिए मुद्रित एकमात्र मूल चीज़ होनी चाहिए। अन्य पात्रों को शामिल करना ठीक है अगर वे स्वाभाविक रूप से आपकी पसंद की भाषा द्वारा निर्मित होते हैं - जैसे कि एक अनुगामी न्यूलाइन या यहां तक कि कुछ ऐसा [1] "Hello, world!"
(उदाहरण के लिए यदि आप आर का उपयोग कर रहे थे), लेकिन इसे हर बार सटीक एक ही प्रिंट करना होगा। उदाहरण के लिए, यह प्रिंट Hello, world!Hello, world!
या Hello world!" && x==1
कुछ समय नहीं कर सकता है । हालाँकि, चेतावनियों की अनुमति है।
परीक्षण अपने स्कोर को निर्धारित करने के लिए परीक्षण करने के लिए, आपको कार्यक्रम के प्रत्येक संभावित क्रमांकन का परीक्षण करना होगा: हटाए गए प्रत्येक चरित्र के साथ परीक्षण करें, और देखें कि क्या यह सही आउटपुट का उत्पादन करता है। मैंने नीचे इस उद्देश्य के लिए एक सरल पर्ल प्रोग्राम शामिल किया है, जिसे कई भाषाओं के लिए काम करना चाहिए। यदि यह आपके लिए काम नहीं करता है, तो कृपया एक परीक्षण कार्यक्रम बनाएं और इसे अपने उत्तर में शामिल करें।
स्कोरिंग आपका स्कोर आपके कार्यक्रम के विफल होने की संख्या है । दूसरे शब्दों में, आपकी फ़ाइल में अलग-अलग पदों की संख्या जहां एक चरित्र को हटाना आपके प्रोग्राम को काम करने से रोकता है। सबसे कम स्कोर जीतता है। एक टाई होने की स्थिति में, सबसे छोटा कोड जीत जाता है।
तुच्छ समाधान जैसे "Hello, world!"
कई भाषाओं में (स्कोर 15) स्वीकार्य हैं, लेकिन वे जीतने नहीं जा रहे हैं। मुझे कम से कम 4 के स्कोर के साथ एक पर्ल समाधान मिला है, जिसे मैं अंततः पोस्ट करूंगा।
अद्यतन: आधिकारिक विजेता ट्यूरिंग-पूर्ण प्रोग्रामिंग भाषा का उपयोग करेगा और प्रिंट करने वाले किसी भी पूर्वनिर्धारित तंत्र का उपयोग नहीं करेगा Hello, world!
। किसी भी बाहरी संसाधन (आपकी भाषा के लिए मानक पुस्तकालयों के अलावा) का उपयोग किया जाता है जो आपके प्रोग्राम का हिस्सा माना जाता है और उसी 1-वर्ण विलोपन के अधीन होता है। ये आवश्यकताएं पोस्ट-इट नोट पर डेस्क से चिपकी हुई थीं। क्षमा याचना यदि आपने उन्हें पहले नहीं देखा था।
अपडेट 2: हां, आपके कार्यक्रम को वास्तव में एक अंक प्राप्त करने के लिए ऊपर वर्णित कार्य को पूरा करना है! मतलब इसे Hello, world!
कम से कम एक बार सफलतापूर्वक प्रिंट करना चाहिए । यह स्पष्ट होना चाहिए था। कमांड-लाइन स्विच और अन्य सेटिंग्स जो कार्यक्षमता को जोड़ते हैं, आपके प्रोग्राम के हिस्से के रूप में भी गिने जाते हैं और एकल वर्ण विलोपन के अधीन हैं। कार्यक्रम को किसी भी उपयोगकर्ता इनपुट के बिना अपने कार्य को पूरा करना होगा। आपकी विफलता की गणना में विफलता का संकलन।
खुश प्रोग्रामिंग, और आपको काम मिल सकता है। लेकिन अगर आप असफल होते हैं, तो आप शायद वैसे भी उस बुरे मालिक के लिए काम नहीं करना चाहते।
पर्ल परीक्षण स्क्रिप्ट:
use warnings;
use strict;
my $program = 'test.pl';
my $temp_file = 'corrupt.pl';
my $command = "perl -X $temp_file"; #Disabled warnings for cleaner output.
my $expected_result = "Hello, world!";
open my $in,'<',$program or die $!;
local $/; #Undef the line separator
my $code = <$in>; #Read the entire file in.
my $fails = 0;
for my $omit_pos (0..length($code)-1)
{
my $corrupt = $code;
$corrupt =~ s/^.{$omit_pos}\K.//s; #Delete a single character
open my $out,'>',$temp_file or die $!;
print {$out} $corrupt; #Write the corrupt program to a file
close $out;
my $result = `$command`; #Execute system command.
if ($result ne $expected_result)
{
$fails++;
print "Failure $fails:\nResult: ($result)\n$corrupt";
}
}
print "\n$fails failed out of " . length $code;
Hello, World!
मुद्रित नहीं होने की ओर जाता है वह एक विफलता है।