इनपुट नंबर; आउटपुट लाइन नंबर


18

कोड गोल्फ

पूरी तरह से वास्तविक बैकस्टोरी: मैं एक वेबसाइट www पर काम करने वाला ठेकेदार हूं। स्काई.नेट और हमारे कार्यों में से एक यह कुछ आत्म-जागरूक कार्यक्रम या कुछ बनाने के लिए है, मुझे नहीं पता कि मैं वास्तव में बॉस को नहीं सुन रहा था। हमारे कोड को अधिक आत्म-जागरूक बनाने के प्रयास में वैसे भी हमें यह जानने की आवश्यकता है कि प्रत्येक पंक्ति-संख्या पर कोड क्या है।


चुनौती

एक प्रोग्राम या फ़ंक्शन बनाएँ जो इनपुट लेता है nऔर लाइन पर दिए गए प्रोग्राम या फ़ंक्शन का कोड लौटाता है n


नियम

Long आपका प्रोग्राम या फंक्शन कम से कम 4 लाइन लंबा होना चाहिए। प्रत्येक पंक्ति अद्वितीय होनी चाहिए।

➋ आप मान सकते हैं कि इनपुट हमेशा एक सकारात्मक पूर्णांक होगा जो आपके प्रोग्राम / फ़ंक्शन में लाइनों की संख्या से 1 या उससे कम या उससे अधिक है।

/ आपके प्रोग्राम / फंक्शन में पहली लाइन लाइन 1 है, लाइन 0 नहीं है।

Access आप उस फ़ाइल को एक्सेस नहीं कर सकते हैं जो आपका प्रोग्राम चालू है। (अगर किसी को "यह तकनीकी रूप से नियम तोड़ने वाला नहीं है # 4", यह शायद है)

➎ लाइनें रिक्त नहीं हो सकती हैं (इसमें स्थान शामिल है यदि रिक्त स्थान आपकी भाषा में कुछ भी नहीं करते हैं)

➏ लाइन्स किसी टिप्पणी के // नहीं हो सकते हैं / (/ * <! - style)


यह एक तरह की चुनौती है
यह , इसलिए सबसे कम बाइट्स के साथ सबमिशन जीत जाता है!



1
मैं इसे 99 में किया देखना चाहता हूँ :)
जोनाथन एलन

2
@JonathanAllan आप इस मुद्दे पर चल सकते हैं कि हर पंक्ति अद्वितीय नहीं है
MildlyMilquetoast

"लाइनें टिप्पणी नहीं हो सकती हैं, लेकिन मुझे लगता है कि प्रभावी नो-ऑप्स ठीक हैं" (लेकिन ईमानदारी से, कभी-कभी यह कहना मुश्किल है कि क्या एक पंक्ति को नो-ऑप के रूप में गिना जाना चाहिए या नहीं; उदाहरण के लिए मेरे रूबी के जवाब में अंतिम पंक्ति केवल होनी चाहिए; लैंब को समाप्त करने के लिए घुंघराले ब्रैकेट)
मूल्य स्याही

शीर्षक बेहतर हो सकता है "इनपुट नंबर; उस लाइन नंबर के साथ आउटपुट लाइन"? या यहां तक ​​कि "आउटपुट लाइन संख्या से"।
पाओलो एबरमन

जवाबों:


16

विम, 7 बाइट्स

1
2
3
4

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

जहां तक ​​मैं बता सकता हूं, यह सभी नियमों का अनुपालन करता है। डिफ़ॉल्ट रूप से विम में, खाली प्रोग्राम सभी इनपुट को प्रिंट करता है। जबसे

<N><CR>

एक noop है, इनपुट टेक्स्ट में कुछ भी परिवर्तन नहीं होता है, और चूंकि प्रत्येक इनपुट वांछित आउटपुट से मेल खाता है, यह वही दृष्टिकोण किसी भी संख्या में लाइनों के साथ काम करता है।


2
अन्य भाषाओं में काम करेगा - पहला जोड़: पायथ
जोनाथन एलन

रुको, बाइट्स? विम को कीस्ट्रोक में मापा जाता है।
पावेल

@JonathanAllan ऐसा लगता है कि पायो TIO पर गलत तरीके से कॉन्फ़िगर किया गया है। यदि आप डिबग आउटपुट को देखते हैं, तो आप देख सकते हैं कि जो कोड वास्तव में चलाया जा रहा है वह तर्क फ़ील्ड में चीज़ है, कोड फ़ील्ड में चीज़ नहीं है। यह वही है जो वास्तव में चल रहा है जो कोड जैसा दिखता है।
isaacg


2
यह भी Brachylog में काम करता है
घातक

9

रूबी, 70१ 70० 66 बाइट्स

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

->n{
k=["}", "k[-n]%%k.inspect", "k=%s", "->n{"]
k[-n]%k.inspect
}

"धोखा" मोड: 7 + 1 = 8 बाइट्स

-p+1 बाइट के लिए ध्वज की आवश्यकता है । सचमुच वी उत्तर की एक प्रति । इनपुट किए गए नंबर को प्रिंट करता है; संपूर्ण कार्यक्रम प्रभावी रूप से सिर्फ नो-ऑप्स है।

1
2
3
4

क्या करता -pहै?
पावेल

@Pavel यह प्रोग्राम को STDIN की प्रत्येक पंक्ति को पढ़ने का कारण बनता है $_, प्रोग्राम सामग्री चलाता है, और फिर $_स्क्रीन की सामग्री (STDIN की प्रति पंक्ति दोहराते हुए) को प्रिंट करता है । चूंकि प्रोग्राम कुछ भी नहीं करता है, यह व्यावहारिक रूप से सिर्फ यूनिक्स है cat, लेकिन इसका मतलब है कि 1-4 से प्रत्येक इनपुट लाइन की सामग्री का उत्पादन करेगा, क्योंकि प्रत्येक पंक्ति का शाब्दिक रूप से इसकी लाइन नंबर है।
मूल्य इंक

@ अधिक जानकारी के लिए देखें robm.me.uk/ruby/2013/11/20/ruby-enp.html
मूल्य स्याही

मुझे आपका "धोखा" जवाब पसंद है। पर्ल भी है -p, लेकिन 1\n2\n3\n4एक वैध पर्ल कार्यक्रम नहीं है।
ThisSuitIsBlackNot

7

हास्केल, 69 59 बाइट्स

(lines(s++show
 s)
 !!)
s="\n(lines(s++show\n s)\n !!)\ns="

मानक हास्केल क्वीन के आधार पर। पहली अभिव्यक्ति (पहली तीन पंक्तियों में फैली हुई) एक अनाम फ़ंक्शन है जो क्विंटिफाइड स्ट्रिंग से nth लाइन चुनती है s(s++show s ) । +2 इंडेक्सिंग 1-आधारित बनाने के लिए बाइट्स (एक अनावश्यक नियम को लागू करना)।

एक कोशिश के लिए यह ऑनलाइन! संस्करण मुझे उस फ़ंक्शन का नाम देना है जो 4 बाइट्स जोड़ता है।


क्या यह नियम 6 को तोड़ता है? :)
अल्बर्ट रेनशॉ

लाइन इंडेक्सिंग को 0-आधारित नहीं माना जाता है, नियमों को स्पष्ट रूप से 1-इंडेक्सिंग की आवश्यकता होती है।
मूल्य इंक

@AlbertRenshaw: फिक्स्ड
nimi

@ValueInk: फिक्स्ड
nimi

@nimi लोल, " समाधान " इस तरह से मुझे इस लोकप्रियता की प्रतियोगिता बनाने के लिए लुभाया गया। फिर भी, अच्छा काम!
अल्बर्ट रेनशॉ

5

पॉवरशेल , 184 172 बाइट्स

$v=0,
'$v=0,',
"'`$v=0',",(($q='"{0}`$v=0{0},",(($q={0}{1}{0})-f([char]39),$q)')-f([char]39),$q),
(($z='(($z={0}{1}{0})-f([char]39),$z;$v[$args]')-f([char]39),$z);$v[$args]

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

व्याख्या

$vपहली पंक्ति पर एक सरणी बनाकर शुरू होता है । उसी पंक्ति पर, पहला ( 0th) तत्व सेट है 0, और अल्पविराम के लिए, इसकी परिभाषा जारी रखता है।

अगली पंक्ति 1सरणी के अगले तत्व ( ) को स्क्रिप्ट की पहली पंक्ति की सामग्री का प्रतिनिधित्व करने वाले स्ट्रिंग में सेट करती है , ताकि$v[1] पहली पंक्ति वापस आए।

तीसरी पंक्ति पहले सरणी (सूचकांक 2) के तीसरे तत्व को स्क्रिप्ट की दूसरी पंक्ति का प्रतिनिधित्व करने वाली स्ट्रिंग पर सेट करती है, फिर उसी लाइन पर 3क्विन स्निपेट का उपयोग करके 4 वें तत्व (इंडेक्स ) को सेट करती है जो -fबदलने के लिए प्रारूप ऑपरेटर ( ) का उपयोग करता है। एकल उद्धरण के कुछ उदाहरण ([char]39 पंक्ति के ) और प्रारूप टेम्पलेट स्ट्रिंग, स्वयं में, तीसरी पंक्ति की संपूर्णता को पुन: उत्पन्न करने के लिए।

लाइन 4 मूल रूप से एक ही काम करता है, लेकिन यह भी सरणी के निर्माण को समाप्त करता है और फिर आपूर्ति किए गए तर्क का उपयोग करके इसमें अनुक्रमित करता है।


4

अजगर 2, 104 73 67 बाइट्स

6 बाइट बचाने के लिए जोनाथन एलन को धन्यवाद!

s=\
['print s[input()]or s', 's=\\', 0, 'exec s[', '0]']
exec s[
0]

संपादित करें: एक ही बाइट गिनती, लेकिन मुझे यह समाधान बेहतर लगता है

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

वैल्यू इंक के रूबी जवाब का पायथन संस्करण ।

पुराना उत्तर (67 बाइट्स):

1
s=\
['print s[-input()]or s', 0, 's=\\', 1]
print s[-input()]or s

छुटकारा पाकर 6 बचाओ n: टीआईओ
जोनाथन एलन

@ को चुनौती की आवश्यकता होती है, हालांकि स्रोत कोड की न्यूनतम 4 पंक्तियों की आवश्यकता होती है: V
वैल्यू इंक

2

CJam , 19 18 17 बाइट्स

1
{'_'~]ri(=}
_
~

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

मानक CJam-quine के आधार पर। {...}_~चलाता ...स्टैक पर ब्लॉक के साथ ही (और इस मामले में, यह भी 1है कि नीचे)। फिर हम करते हैं:

'_'~  e# Push the third and fourth line.
]     e# Wrap all four lines in a list.
ri    e# Read input and convert to integer.
(=    e# Use as index into the lines.

ये सुन्दर है। इसके अलावा लॉजिक के स्माइली फेस एंडिंग (= हाहा
अल्बर्ट रेनशॉ

1

PHP, 261 बाइट्स

<?php function f($l){
$a="aWYoJGw9PTEpJG09Ijw/cGhwIGZ1bmN0aW9uIGYoXCRsKXsiO2lmKCRsPT0yKSRtPSJcJGE9XCIkYVwiOyI7aWYoJGw9PTMpJG09IlwkYj1cIiR";
$b="iXCI7IjtpZigkbD09NCkkbT0iZXZhbChiYXNlNjRfZGVjb2RlKFwkYS5cJGIpKTt9Pz4iO2VjaG8gJG07";
eval(base64_decode($a.$b));}?>

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

एन्कोडेड स्ट्रिंग है:

if($l==1)$m="<?php function f(\$l){";
if($l==2)$m="\$a=\"$a\";
if($l==3)$m="\$b=\"$b\";
if($l==4)$m="eval(base64_decode(\$a.\$b));}?>";
echo $m;

दिलचस्प! एन्कोडेड स्ट्रिंग्स क्या हैं?
अल्बर्ट रेनशॉ

1
@ अल्बर्ट रेनशॉ I ने इसे स्ट्रिंग के डिकोड किए गए संस्करण को जोड़ने के लिए संपादित किया है।
दिव्य

0

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

$_=q{print+(split/
/,"\$_=q{$_};
eval")[<>-1]};
eval

यह क्लासिक क्वीन पर एक साधारण बदलाव है

$_=q{print"\$_=q{$_};eval"};eval

"पेलोड" है split नई कहानियों पर है और सही सूची को परिणामी सूची में अनुक्रमित करके चुना गया है।

पर्ल, 49 48 बाइट्स (गैर-प्रतिस्पर्धात्मक)

#!/usr/bin/perl -d:A
sub DB'DB{
print${"_<$0"}[<>]}
1

कोड के लिए 38 बाइट्स (शेलबैंग को छोड़कर, जिसमें शामिल हैं -d:A) फ़ाइल नाम के लिए 10 बाइट्स, जो होना चाहिए Devel/A.pmDevelनिर्देशिका में होना चाहिए @INC

तकनीकी रूप से, यह नियम # 4 का उल्लंघन करता है क्योंकि -d:A फ़ाइल को दो बार पार्स किया जाता है, इसलिए यह एक गैर-प्रतिस्पर्धात्मक समाधान है।

यह फ़ाइल की पंक्तियों का उपयोग करने के लिए डिबगर हुक का उपयोग करता है, जो @{"_<$filename"}संकलन समय में सरणी में संग्रहीत करता है।

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