रुको ... मैं फिर से क्या कहने जा रहा था?


10

मैं अक्सर भूल जाता हूं कि मैं क्या कहना चाहता था जब शिक्षक मुझे बोलने के लिए बुलाता है। क्या आप इसे हल करने के लिए मुझे एक उपकरण बना सकते हैं?

आवश्यकताएँ:

  • कार्यक्रम को इस प्रकार लूप करना चाहिए:
    • सबसे पहले, इनपुट में लें
    • यदि इनपुट खाली है, तो अंतिम संग्रहीत प्रश्न को प्रिंट करें।
    • अन्यथा, इनपुट को एक प्रश्न के रूप में संग्रहीत करें।

टिप्पणियाँ:

  • यदि कोई प्रश्न संग्रहीत नहीं हैं तो इनपुट कभी खाली नहीं होगा।

स्पष्टता: कार्यक्रम को कई प्रश्नों को संग्रहीत करने की आवश्यकता नहीं है। मैं मूल रूप से इसे कई स्टोर करना चाहता था, लेकिन मैंने कई लोगों द्वारा प्रश्न को गलत समझने के बाद इसे बदल दिया।

याद रखें, यह , इसलिए सबसे कम संख्या में बाइट्स जीतता है।


क्या आपका मतलब "पहले संग्रहित प्रश्न" था? मुझे लगता है कि "अंतिम संग्रहीत प्रश्न" भ्रामक है क्योंकि यह बताता है कि आप एक से अधिक प्रश्नों को संग्रहीत कर सकते हैं।
नील

1
@ नील यह माना जाता है कि यह एक से अधिक प्रश्नों का भंडारण करता है, लेकिन चूंकि कई उत्तर पहले से ही इस प्रश्न को गलत समझते हैं, इसलिए मैं इसे छोड़ दूंगा।
ओलिवर नी

जवाबों:


10

पर्ल, 13 17 14 +1 = 15 बाइट्स

/./?$;=$_:say$

-nध्वज के लिए +1 (@ डाडा के लिए 4 बाइट्स को सहेजा गया)

जब तक इनपुट गाड़ी के रिटर्न के बराबर नहीं होता, तब तक यह इनपुट को स्टोर कर लेता है $;। यदि यह गाड़ी वापसी के बराबर है, तो यह प्रिंट करता है कि पहले से क्या है $;

यह मानता है कि सभी इनपुट को सवालों के रूप में चित्रित किया जा सकता है, भले ही व्याकरणिक रूप से, वे ऐसे नहीं हैं।


आप शायद neइसके बजाय लिखना चाहते थे eq(अभी यह काम नहीं करता है)।
दादा

1
आप ;-) के /./बजाय तीन बाइट बचा सकते हैं;$/ne$_
दादा

8

05AB1E, 12 11 10 बाइट्स

धन्यवाद @daHugLenny और @ अदनान 1 बाइट के लिए!
धन्यवाद @Emigna 1 बाइट के लिए!

[IDõQiX,ëU

1
मैं अब परीक्षण नहीं कर सकता, लेकिन मुझे लगता है कि आप अंतिम चरित्र को हटा सकते हैं।
2

1
हां, आप अंतिम ब्रैकेट को हटा सकते हैं (यह स्वतः पूर्ण हो जाएगा)।
अदनान

2
आप की जगह तो ®और ©साथ Xऔर U, आप बैकस्लैश जरूरत नहीं है।
Emigna

4

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

g s=getLine>>=(#s)
""#s=putStr s>>g s
l#s=g l
g""

यह कैसे काम करता है: से शुरू करें g ""sफ़ंक्शन gका पैरामीटर स्टोर में प्रश्न है। gस्टडिन से अगली पंक्ति पढ़ता है और इसे (और भी) पास करता है #। यदि लाइन खाली है, #तो स्टोर को प्रिंट करता है और gफिर से कॉल करता है । यदि रेखा खाली नहीं है, gतो लाइन के साथ नए स्टोर के रूप में कहा जाता है।


3

जावास्क्रिप्ट, 36 34 31 बाइट्स

for(;;b?a=b:alert(a))b=prompt()

एक अनंत लूप इनपुट मांगता रहता है और इसे स्टोर करता है b। यह इनपुट खाली नहीं है यह तब संग्रहीत किया जाता है a, अन्यथा मूल्य aमुद्रित होता है।

सहेजे गए 2 बाइट्स @ETHproductions की बदौलत


अच्छा उत्तर। आप एक बाइट को हटाकर 1, और दूसरे को b?a=b:alert(a)लूप (यानी for(a=0;;b?a=b:alert(a))b=prompt())
ETHproductions 3

वास्तव a=0में यह आवश्यक नहीं है। चूंकि इनपुट केवल तभी रिक्त हो सकता है यदि संग्रहीत किए गए प्रश्न हैं, aयदि इसे असाइन नहीं किया गया है तो संदर्भित नहीं किया जाएगा।
ओडोल

फ़ायरफ़ॉक्स -49.0.2 के साथ कुछ सेकंड के लिए ब्राउज़र को भी बंद कर देता है
बंक क्लोवेन

1
आपके प्रश्न में एकमात्र आवश्यकता यह है कि खाली इनपुट अंतिम संग्रहीत प्रश्न प्रिंट करता है। आप मुझे पहले से संग्रहीत प्रश्नों के संदर्भ क्यों देना चाहते हैं?
ओरिओल

1
@bunyaCloven मेरे लिए यह केवल ब्राउज़र को रोकता है जब मैं इसे डायलॉग को ब्लॉक करने के लिए कहता हूं। अनंत लूप के कारण यह अपेक्षित है। कुछ सेकंड के बाद ब्राउज़र समस्या का पता लगाता है और जेएस को मारता है।
ओरिओल

2

मैथेमेटिका, 44 बाइट्स

If[(b=InputString[])=="",Print@a,a=b]~Do~∞

पूरा कार्यक्रम। यूनिकोड वर्ण U + 221E की जानकारी है \[Infinity]





1

पायथन 3 - 49 बाइट्स

s=""
while 1:
 b=input()
 if b:s=b
 else:print(s)

1
NameError: name 'b' is not defined
शौकी

@shooqie आह, मैंने अपने फोन के साथ यह टाइप किया तो मैं गलती से निकल गया b=input()। धन्यवाद!
यति

1

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

s=""
while[print(s)]:s=input()or s

यह नहीं है? यह मेरे लिए ठीक काम करता है
ब्लू

3
युक्ति कई प्रश्नों को संग्रहीत करने के लिए नहीं कहती है?
ब्लू

1

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

q=[]
while 1:
 s=input()
 if''<s:q+=[s]
 else:print(q.pop())

0

सीएमडी, 37 बाइट्स

दुख की बात setहै कि खाली इनपुट नहीं लिया जाता है :(

set/p a=
if %a%.=. echo b
set b=%a%
c

एक फ़ाइल नामों में c.cmdया

set/p a=
if %a%.=. echo b
set b=%a%
%0

किसी भी फाइल में। कार्य करना ( -खाली के रूप में उपयोग करें ):

set/p a=
if %a%.=-. echo b
set b=%a%
c

set/pकभी भी एक चर को खाली नहीं करेगा, इसलिए बहुत कम से कम आपको set a=पहली पंक्ति की आवश्यकता होगी ; मुझे भी लगता है कि तुम मतलब है set b=%a%
नील

0

APLX, 19 बाइट्स

a←⍞⋄→(0=⍴a)/1⋄a⋄→1

स्पष्टीकरण:

⍝ Note: the ⋄ symbols are statement separators, so I've replaced them here with newlines

a←⍞           ⍝ get an input string (⍞) and store it in variable a
→(0=⍴a)/1     ⍝ if the length of a (⍴a) is 0, goto (→) the start of this program (1)
a             ⍝ else, print a
→1            ⍝ goto the start of the program (1)

0

सी, 73 63 बाइट्स

g(){char a[99],x;for(;;){gets(a);if(*a)x=*a;else*a=x,puts(a);}}

तर्क को संभालने के लिए केवल 1 बफर और एक चार का उपयोग करता है। यदि उपयोगकर्ता इनपुट कुछ भी नहीं करता है, तो बफर में केवल पहला चार्ट द्वारा अधिलेखित हो जाता है '\0', उस स्थिति में इसे फिर से xमुद्रित और मुद्रित किया जाता है , अन्यथा पहले अक्षर को कॉपी करेंx बाद के उपयोग के लिए करें।

पिछला कोड:

main(){char a[99],b[99];for(;;){gets(a);if(*a)strcpy(b,a);else puts(b);}}

0

जावा 7, 189 187 178 बाइट्स ।।

class M{public static void main(String[]a){String s="",x;do{x=new java.util.Scanner(System.in).nextLine();if(x.isEmpty())Syste‌​m.out.println(s);els‌​e s=x;}while(1>0);}}

-9 बाइट्स new java.util.Scannerसीधे उपयोग करके , @cliffroot को धन्यवाद

संभवत: पहली बार मैंने ए do-while एक कोडगॉल्फ चुनौती में ।

जब कार्यक्रमों के बजाय फ़ंक्शंस की अनुमति दी जाती है, तो यह 135 बाइट्स (अभी भी अधिकांश अन्य उत्तरों की तुलना में कई गुना अधिक है ..)


यह थोड़ा छोटा है और काम करता प्रतीत होता है -void c(){for(String s="",x;(x=new java.util.Scanner(System.in).nextLine())!=null;)if(x.isEmpty())System.out.println(s);else s=x;}
क्लिफरोट

@cliffroot Ummm .. क्या आप एक forया whileकहीं गायब नहीं हैं ? .. क्या है (x=new java.util.Scanner(System.in).nextLine())!=null;)?
केविन क्रूज़सेन

1
हाँ, मैं इससे पहले कि किसी भी तरह से याद करने में कामयाब रहा :) यह होना चाहिए था void c(){for(String s="",x;for(x=new java.util.Scanner(System.in).nextLine())!=null;)if(x.isEmpty())System.out.println(s);else s=x;}और यह वास्तव में 1 बाइट लंबा है और इसके बाद का संस्करण do-whileहै -void c(){String s="",x;do{x=new java.util.Scanner(System.in).nextLine();if(x.isEmpty())System.out.println(s);else s=x;}while(1>0);}
क्लिफरोट

@cliffroot आह .. धन्यवाद!
केविन क्रूज़सेन 12

0

सेड, 10 बाइट्स

/./{x;d};g

स्पष्टीकरण:

      (implicit at start of program) read input, overwriting old input
/./{  If the input is nonempty
  x;  swap the input with the hold space
  d   then restart, without any implicit printing of input
};    end if statement
g     Append the hold space to the [empty] input
      (implicit at end of program) print the input, then restart

एक एक्सोटेरिक (यानी "गूढ़ नहीं") भाषा को कुछ गोल्फिंग भाषाओं के साथ बांधकर देखना अच्छा लगता है!

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