অপেক্ষা করুন… আমি আবার কি বলতে যাচ্ছিলাম?


10

যখন শিক্ষক আমাকে কথা বলতে ডাকেন তখন আমি প্রায়শই যা বলতে চাই তা ভুলে যাই। আপনি কি আমাকে এটিকে সমাধান করার সরঞ্জাম হিসাবে তৈরি করতে পারেন?

প্রয়োজনীয়তা:

  • প্রোগ্রামটি নীচের হিসাবে লুপ করতে হবে:
    • প্রথমে ইনপুট নিন
    • যদি ইনপুট খালি থাকে তবে শেষ সঞ্চিত প্রশ্নটি মুদ্রণ করুন।
    • অন্যথায়, প্রশ্ন হিসাবে ইনপুট সংরক্ষণ করুন।

মন্তব্য:

  • কোনও প্রশ্ন সংরক্ষণ না করা থাকলে ইনপুট কখনই খালি হবে না।

স্পষ্টকরণ: প্রোগ্রামটির একাধিক প্রশ্ন সংরক্ষণ করার দরকার নেই। আমি মূলত এটি একাধিক সঞ্চয় করতে চেয়েছিলাম, তবে অনেক লোক প্রশ্নকে ভুল বোঝার পরে আমি এটি পরিবর্তন করেছি।

মনে রাখবেন, এটি , তাই সর্বনিম্ন সংখ্যক বাইট বিজয়ী কোড।


আপনি কি "পূর্বে সঞ্চিত প্রশ্ন" বলতে চাইছেন? আমি "সর্বশেষ সঞ্চিত প্রশ্ন" বিভ্রান্তিযুক্ত হিসাবে এটি পরামর্শ দেয় আপনি সম্ভবত একাধিক প্রশ্ন সংরক্ষণ করতে পারেন find
নীল

1
@ নীল এটি একাধিক প্রশ্ন সংরক্ষণ করার কথা, কিন্তু যেহেতু অনেক উত্তর ইতিমধ্যে প্রশ্নটিকে ভুল বোঝে, আমি কেবল এটি ছেড়ে দেব।
অলিভার নি

উত্তর:


10

পার্ল, 13 17 14 +1 = 15 বাইট

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

-nপতাকাটির জন্য +1 (@ দাদাকে ধন্যবাদ 4 বাইট সংরক্ষিত)

যতক্ষণ ইনপুট ক্যারেজ ফেরতের সমান হয় না, ততক্ষণ ইনপুটটি সঞ্চয় করে $;। যদি এটি ক্যারেজ ফেরতের সমান হয় তবে এটি ইতিমধ্যে কী রয়েছে তা মুদ্রণ করে $;

এটি ধরে নেয় যে সমস্ত ইনপুট প্রশ্ন হিসাবে চিহ্নিত করা যেতে পারে, ব্যাকরণগতভাবে হলেও, সেগুলি তেমন নয়।


আপনি সম্ভবত neপরিবর্তে লিখতে চেয়েছিলেন eq(এখনই এটি কাজ করে না)।
দাদা

1
আপনি ;-) এর /./পরিবর্তে তিনটি বাইট সংরক্ষণ করতে পারেন$/ne$_
দাদা

8

05 এ বি 1 , 12 11 10 বাইট

ধন্যবাদ @ দ্য হাগলেনি এবং @ অ্যাডানান 1 বাইটের জন্য!
ধন্যবাদ ইমেনাকে 1 বাইটের জন্য!

[IDõQiX,ëU

1
আমি এখন পরীক্ষা করতে পারছি না, তবে আমি মনে করি আপনি শেষ চরিত্রটি সরাতে পারেন।
এক্রোলিথ

1
হ্যাঁ, আপনি শেষ বন্ধনীটি সরিয়ে ফেলতে পারেন (এটি স্বয়ংক্রিয়ভাবে সম্পন্ন হবে)।
আদনান

2
তোমাদের স্থলাভিষিক্ত যদি ®এবং ©সঙ্গে Xএবং U, আপনি ব্যাকস্ল্যাশ প্রয়োজন হবে না।
এমিগানা

4

হাস্কেল, 49 বাইট

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

এটি কীভাবে কাজ করে: দিয়ে শুরু করুন g ""sফাংশনটির প্যারামিটারটি gদোকানে প্রশ্ন the gস্টিডিনের পরের লাইনটি পড়ে এবং এটি (এবং গুলি) পাস করে #। লাইনটি ফাঁকা থাকলে, #দোকানটি মুদ্রণ করে gআবার কল করে। লাইনটি খালি না থাকলে লাইনের gসাথে নতুন স্টোর হিসাবে ডাকা হয়।


3

জাভাস্ক্রিপ্ট, 36 34 31 বাইট

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

একটি অসীম লুপ ইনপুট জিজ্ঞাসা করে এবং এটি সঞ্চয় করে b। এটি ইনপুটটি খালি নয় এটি এর পরে এটি সঞ্চিত থাকে a, অন্যথায় এর মান aমুদ্রিত হয়।

2 বাইট সংরক্ষিত হয়েছে @ ইথ প্রডাকশনগুলির জন্য ধন্যবাদ


চমৎকার উত্তর. আপনি অপসারণ করে একটি বাইট সংরক্ষণ করতে পারেন 1এবং অন্যটি b?a=b:alert(a)ফর-লুপের (যেমন for(a=0;;b?a=b:alert(a))b=prompt())
ETH প্রোডাকশনস

আসলে a=0প্রয়োজন হয় না। যেহেতু ইনপুটটি কেবল তখনই খালি থাকতে পারে যদি সেখানে প্রশ্ন সঞ্চিত aথাকে তবে এটি বরাদ্দ না করা থাকলে রেফারেন্স করা হবে না।
ওরিওল

এছাড়াও ফায়ারফক্স -৯৯.০.২ সহ কয়েক সেকেন্ডের জন্য ব্রাউজারটি বন্ধ করে দেয়
বুনিয়াক্লোভেন

1
আপনার প্রশ্নের একমাত্র প্রয়োজন হ'ল খালি ইনপুটটি সর্বশেষ সঞ্চিত প্রশ্ন মুদ্রণ করে। আপনি কেন পূর্ববর্তী সঞ্চিত প্রশ্নের রেফারেন্স রাখতে চান?
ওরিওল

1
@ বুনিয়াক্লোভেন আমার জন্য এটি তখনই ব্রাউজারটিকে থামিয়ে দেয় যখন আমি এটিকে ডায়লগগুলি অবরুদ্ধ করতে বলি। অসীম লুপের কারণে এটি প্রত্যাশিত। কিছু সেকেন্ড পরে ব্রাউজারটি সমস্যাটি সনাক্ত করে এবং জেএসকে মেরে ফেলে।
ওরিওল

2

গণিত, 44 বাইট

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

পুরো প্রোগ্রাম। ইউনিকোড চরিত্রটি হ'ল ইউ + 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

এপিএলএক্স, 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সরাসরি ব্যবহার করে, @ ক্লিফ্রুটকে ধন্যবাদ ।

সম্ভবত আমি প্রথমবার 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;}
ক্লিফ্রুট ot

@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);}
ক্লিফ্রুট

@ ক্লিফরুট আহ অবশ্যই! ধন্যবাদ!
কেভিন ক্রুইজসেন

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

বেশ কয়েকটি গল্ফিং ভাষার সাথে বাঁধা একটি এক্সোটেরিক (অর্থাত্ "গুপ্ত নয়") ভাষাটি দেখে ভাল লাগছে!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.