টিকিট কুইন-বোমা!


9

চ্যালেঞ্জ:

এমন একটি প্রোগ্রাম বা ফাংশন তৈরি করুন যা পূর্ণসংখ্যার ইনপুট নেয়, যা নীচে নির্দিষ্ট করে একটি নতুন প্রোগ্রাম / ফাংশন দেয়।

ইনপুট:

পূর্ণসংখ্যা n: টাইম বোমা বিস্ফোরণের আগে সেকেন্ডে সময়।

আউটপুট:

মূল প্রোগ্রামটি যা nইনপুট হিসাবে সেকেন্ডে সময় নিয়েছিল , একটি নতুন প্রোগ্রাম / ফাংশন আউটপুট দেবে যা নিম্নলিখিতগুলি করে:

  • nআগের প্রোগ্রামটি চালুর পরে কি কয়েক সেকেন্ড কেটে গেছে? ছাপাBOOM!
  • অন্য: একটি প্রোগ্রাম / ফাংশন মুদ্রণ করুন যা নিজে চালিত হলে টাইমারটিকে আবার nসেকেন্ডে পুনরায় সেট করে (এবং প্রথম আউটপুটযুক্ত প্রোগ্রাম / ফাংশন হিসাবে একই কাজ করে)।

দ্রষ্টব্য: এটি প্রথম আউটপুটযুক্ত প্রোগ্রাম / ফাংশনের মতো নয় (বেশিরভাগ ভাষায় কমপক্ষে), কারণ শুরুর সময়টি পরিবর্তিত হয়েছে (নীচে স্পষ্টকরণের উদাহরণ দেখুন)।

সিউডো কোড উদাহরণ:

আসুন ধরা যাক মূল প্রোগ্রামটি ABCএবং ইনপুটটি 60সেকেন্ডের:

ABC& 60ফলাফলগুলি DEF(60)

  • যদি DEF(60)60 সেকেন্ডের মধ্যে চালানো হয় তবে এটি আউটপুট আসবে DEF_G(60), যা ঠিক একইরকমভাবে কাজ করে DEF(60)তবে নতুন শুরুর সময়ের সাথে।
  • যদি DEF(60)60 সেকেন্ড পরে চালানো হয় তবে এটি আউটপুট হবে BOOM!

'শুরুর সময়' দিয়ে আমি কী বোঝাতে চাই তার স্পষ্টকরণের উদাহরণ:

  1. ইনপুট 60সেকেন্ড সহ বেস প্রোগ্রামটি চালানো হয় 12:00:00। এটা শুরুর সময় প্রথম আউটপুট প্রোগ্রামের আউটপুট 12:00:00
  2. প্রারম্ভিক সময়ের সাথে এই প্রথম আউটপুট প্রোগ্রামটি 12:00:00চালানো হয় 12:00:45। এটি শুরুর সময় সহ একটি দ্বিতীয় আউটপুট প্রোগ্রাম আউটপুট করে 12:00:45
  3. প্রারম্ভিক সময়ের সাথে এই তৃতীয় আউটপুট প্রোগ্রামটি 12:00:45চালানো হয় 12:01:25। এটি একটি প্রারম্ভিক সময়ের সাথে চতুর্থ আউটপুট প্রোগ্রাম আউটপুট করে 12:01:25
  4. প্রারম্ভিক সময়ের সাথে এই চতুর্থ আউটপুট প্রোগ্রামটি 12:01:25চালানো হয় 12:05:00। এটি আউটপুট হবে BOOM!

নোট কিভাবে প্রথম আউটপুট প্রিন্ট হবে BOOM!পরে 12:01:00, কিন্তু আউটপুট প্রোগ্রাম তাই, এমনকি যদিও এর অগ্রগতির করেনি 12:01:25ধাপ 3 এ, এটা করবে না এখনো আউটপুট পরিবর্তে আগামী কর্মসূচি BOOM!(যে প্রথম আউটপুট প্রোগ্রাম পরলোক বার শুরু হয়েছে কারন আউটপুট অফ আউটপুট প্রোগ্রাম) ।

চ্যালেঞ্জ বিধি:

  • ডিফল্ট কুইন বিধি প্রযোজ্য।
  • কমপক্ষে nকয়েক সেকেন্ড পার হওয়া উচিত ছিল। সুতরাং যদি ইনপুটটি হয় 60এবং শুরুর সময়টি ছিল 12:00:00তবে 12:01:00এটি এখনও ভি 2 প্রোগ্রাম আউটপুট করবে, তবে 12:01:01এটি আউটপুট দেবে BOOM!
  • আউটপুট প্রোগ্রামগুলি কোনও ইনপুট নেবে না ( খালি অব্যবহৃত প্যারামিটারটি যদি ছোট হয় তবে )। আরম্ভের সময়টি পরবর্তী প্রোগ্রামগুলিকে 'হার্ড-কোডড' মান হিসাবে দেওয়া উচিত (যার কারণে আউটপুট প্রোগ্রামের আউটপুট ঠিক আগের (বেশিরভাগ ভাষায়) এর মতো হয় না।
  • কেবলমাত্র আপনার প্রধান প্রোগ্রাম / ফাংশনের আকারটি বাইটের ক্ষেত্রে গণনা করা হয়।
  • আপনি প্রোগ্রাম / ফাংশনটিকে স্ট্রিং হিসাবে আউটপুট করতে পারেন (বা তুলনীয় যুক্তিসঙ্গত ফর্ম্যাট যেমন বাইট / চরিত্রের অ্যারে / তালিকা) ফাংশন হিসাবে যদি আপনার ভাষা এটি সমর্থন করে, বা অন্যান্য যুক্তিসঙ্গত ফর্ম্যাটগুলি (দয়া করে আপনি নিশ্চিত না হন তবে জিজ্ঞাসা করুন)।

সপ্তাহের দিন:

  • এই , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।
    কোড-গল্ফ ভাষাগুলি আপনাকে নন-কোডগলফিং ভাষার সাথে উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না। 'যে কোনও' প্রোগ্রামিং ভাষার জন্য যতটা সম্ভব সংক্ষিপ্ত উত্তর নিয়ে আসার চেষ্টা করুন।
  • স্ট্যান্ডার্ড নিয়মগুলি আপনার উত্তরের জন্য প্রযোজ্য , সুতরাং আপনাকে সঠিক পরামিতি এবং রিটার্ন-টাইপ, সম্পূর্ণ প্রোগ্রাম সহ STDIN / STDOUT, ফাংশন / পদ্ধতি ব্যবহার করার অনুমতি দেওয়া হবে। আপনার কল
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ।
  • যদি সম্ভব হয় তবে আপনার কোডের জন্য একটি পরীক্ষার সাথে একটি লিঙ্ক যুক্ত করুন।
  • এছাড়াও, প্রয়োজনে একটি ব্যাখ্যা যোগ করুন।

"আউটপুট একটি প্রোগ্রাম" এর অর্থ কী? স্ট্রিং হিসাবে আউটপুট উত্স কোড? বা একটি ফাংশন ফিরে?
tsh

@tsh স্ট্রিং এবং ফাংশন উভয়কেই অনুমতি দেওয়ার জন্য একটি বিধি যুক্ত করেছে।
কেভিন ক্রুইজসেন

উত্তর:


2

জাভাস্ক্রিপ্ট, 51 বাইট

f=(t,o=setTimeout(_=>o=0,t*1e3))=>_=>o?f(t):'BOOM!'

ব্রাউজারে পরীক্ষা করুন

পুরাতন রুপ

f=(t,o=0)=>{setTimeout(()=>o=1,t*1000);return ()=>o?'BOOM!':f(t)}

ব্রাউজারে পরীক্ষা করুন


দেখে মনে হচ্ছে এটি প্রত্যাশার মতো কাজ করছে না।
মার্টেন বিকিনিস

কোনও ভোট ডাউন এড়াতে আপনি পোস্টটি মুছে ফেলতে এবং একবারে স্থির করে মুছে ফেলতে পারেন ।
tsh

আপনি স্থান গল্ফ করতে পারেন return()=>। এবং যদিও আমি জাভাস্ক্রিপ্টে প্রায় কখনও প্রোগ্রাম করি না, তবুও আমি আপনার পরীক্ষা-স্ক্রিপ্টটি পরীক্ষা করেছিলাম এবং এমনকি এটি ফাংশন আউটপুট ফাংশনটির জন্য একটি পরীক্ষা যোগ করে এটি সংশোধন করেছি: এটি এখানে চতুর্থ ফাংশন-অফ-ফাংশন পরীক্ষার মাধ্যমে পরীক্ষা করুন। সমস্ত কিছুই কাজ করে বলে মনে হচ্ছে এবং এটি আশ্চর্যজনকভাবে সংক্ষিপ্ত করে আমি যুক্ত করতে পারি, তাই আমার কাছ থেকে +1 করা। PS: বিধিগুলিতে এটি বলেছে যে এটি কোনও ফাংশনের পরিবর্তে স্ট্রিং আউটপুট করে। তবে আমি উভয়কে অনুমতি দেওয়ার জন্য কিছুটা নিয়ম পরিবর্তন করব। আপনি সম্ভবত স্ক্রিপ্টটি সংশোধন করতে পারেন যাতে এটি পরীক্ষার সময় লগ করতে ফাংশনগুলিও আউটপুট করে?
কেভিন ক্রুইজসেন 29:25

1
f=(t,o=setTimeout(_=>o=0,t*1e3))=>_=>o?f(t):'BOOM!'কাজ করা উচিত
tsh

আপনি একটি উইজার্ড হয়?! প্যারামিটারের ডিফল্ট মান হিসাবে যুক্তি ব্যবহার করার কথা কখনও ভাবেন নি
মার্টেন বিকিনি

4

জাভাস্ক্রিপ্ট, 53 বাইট

f=(d,t=1/0,n=Date.now()/1e3)=>n>t?'BOOM!':_=>f(d,d+n)


পুরানো উত্তর (ফিরতে স্ট্রিং হওয়া উচিত)

জাভাস্ক্রিপ্ট, 78 বাইট

(f=(o,t,d)=>(x=d,n=Date.now()/1e3)=>o&&n>t?'BOOM!':`(f=${f})(${[1,n+x,x]})`)()


দুর্দান্ত উত্তর, এবং আশ্চর্যজনকভাবে পাঠযোগ্য। আমি কিছু পরীক্ষা করেছি এবং সবকিছু ঠিকঠাক কাজ করছে বলে মনে হচ্ছে। আমার কাছ থেকে +1
কেভিন ক্রুইজসেন 27'18

1

জাভা 8, 234 বাইট

n->"v->{long t=System.nanoTime();t/=1e9;String s=\"v->{long t=System.nanoTime();t/=1e9;String s=%c%s%1$c;return t-%d>"+n+"?%1$cBOOM!%1$c:s.format(s,34,s,t);}\";return t-"+(System.nanoTime()/1e9)+">"+n+"?\"BOOM!\":s.format(s,34,s,t);}"

এখনই আমার নিজের চ্যালেঞ্জ পোস্ট করার জন্য দুঃখিত। এটি মূলত চ্যালেঞ্জের আরও ব্যাখ্যা হিসাবে বোঝানো হয়েছে, এবং আমি নিজেই প্রশ্নটিতে এটি যুক্ত করব বা উত্তর হিসাবে পোস্ট করব কিনা তা নিয়ে আমি সন্দেহ করছিলাম (এবং চ্যালেঞ্জ পোস্টকে গোলমাল না করে উত্তর হিসাবে পোস্ট করার সিদ্ধান্ত নিয়েছিলাম)।
এবং যদিও আমি এটি বলতে চাই, এটি কিছু (চেষ্টা এবং) মারারও কিছু, এটি উল্লেখ করার মতোও নয় কারণ, ভাল .. জাভা (প্রায়) সর্বদা মারধর করে। ; p &

এটি অনলাইনে চেষ্টা করুন।

উদাহরণ আউটপুট:

v->{long t=System.nanoTime();t/=1e9;String s="v->{long t=System.nanoTime();t/=1e9;String s=%c%s%1$c;return t-%d>60?%1$cBOOM!%1$c:s.format(s,34,s,t);}";return t-70492.687613232>60?"BOOM!":s.format(s,34,s,t);}

আউটপুটযুক্ত ল্যাম্বদা-ফাংশনটি এখানে চেষ্টা করুন।

উদাহরণ আউটপুট:

v->{long t=System.nanoTime();t/=1e9;String s="v->{long t=System.nanoTime();t/=1e9;String s=%c%s%1$c;return t-%d>60?%1$cBOOM!%1$c:s.format(s,34,s,t);}";return t-70548>60?"BOOM!":s.format(s,34,s,t);}

ব্যাখ্যা:

প্রধান ফাংশনটি একটি পূর্ণসংখ্যার ইনপুট নেয় এবং একটি স্ট্রিং প্রদান করে। এটি মূলত একটি ফাংশন দেয় যা একটি কুইন হয়, পূর্ণসংখ্যার ইনপুট এবং শুরুর সময় (টাইমস্ট্যাম্প হিসাবে সেকেন্ডে) হার্ড-কোডড মান হিসাবে।

প্রধান ফাংশন:

n->        // Method with integer parameter and String return-type
  "v->{long t=System.nanoTime();t/=1e9;String s=\"v->{long t=System.nanoTime();t/=1e9;String s=%c%s%1$c;return t-%d>"
          //  First part of the output-function
  +n      //  With the integer input placed as hard-coded value
  +"?%1$cBOOM!%1$c:s.format(s,34,s,t);}\";return t-"
          //  The second part of the output-function
  +(System.nanoTime()/1e9)
          //  With the current time in seconds as hard-coded starting time
  +">"+n  //  And the integer input again (for the output of the output function)
  +"?\"BOOM!\":s.format(s,34,s,t);}"
          //  The final part of the output-function

n=60 নীচের উদাহরণগুলিতে ব্যবহৃত হয়েছিল:

প্রথম আউটপুট প্রোগ্রাম:

v->{                   // Method with empty unused parameter and String return-type
  long t=System.nanoTime();t/=1e9;
                       //  New starting time in seconds
  String s="v->{long t=System.nanoTime();t/=1e9;String s=%c%s%1$c;return t-%d>60?%1$cBOOM!%1$c:s.format(s,34,s,t);}";
                       //  Unformatted (quine) result-function
  return t-            //  If the difference between the new starting time
    70492.687613232    //  and hard-coded starting time from the main function
    >60?               //  is larger than the hard-coded integer from the main function
     "BOOM!"           //   Return "BOOM!"
    :                  //  Else:
     s.format(s,34,s,  //   Return the formatted (quine) result-function,
              t);}     //   with this new starting time as new hardcoded value

দ্বিতীয় আউটপুট প্রোগ্রাম:

প্রথম আউটপুট প্রোগ্রাম হিসাবে একই, 70492.687613232এটির সাথে প্রতিস্থাপন করা হয় 70548



0

05 এ বি 1 ই , 50 বাইট

"‘ÒÞ!""žažb‚žcª60β"D.VsI’"34ç ìD«ÿÿ©ÿDU-›iX®:ëÿ’D«

অবশ্যই আরও কিছুটা গল্ফ করা যেতে পারে তবে একটি আধা-কুইন আউটপুট করা বেশ কঠিন, যা পরিবর্তিত মান সহ একটি কুইন-প্রোগ্রামকে আউটপুট করে।

এটি অনলাইনে চেষ্টা করুন বা 20-সেকেন্ডের উদাহরণ চালানোর চেষ্টা করুন

ব্যাখ্যা:

"‘ÒÞ!"                     # Push the string "‘ÒÞ!"
"žažb‚žcª60β"              # Push the string "žažb‚žcª60β"
 D                         # Duplicate it
  .V                       # Execute it as 05AB1E code:
                           #  ža          : Push the current hours
                           #    žb        : Push the current minutes
                           #      ‚       : Pair them together
                           #       žcª    : Append the current seconds
                           #          60β : Convert from this integer list to base-60
s                          # Swap the seconds-integer and duplicated "žažb‚žcª60β"-string
I                          # Push the input
"34ç ìD«ÿÿ©ÿDU-›iX®:ëÿ’  "# Push the string '"34ç ìD«ÿÿ©ÿDU-›iX®:ëÿ',
                           # where the `ÿ` are automatically replaced with the stack-values
 D«                        # Duplicate it, and append them together
                           # (after which the string is output implicitly as result)

ফলাফল ফলাফল প্রোগ্রাম:

"34ç ìD«30žažb‚žcª60β©35555DU-›iX®:ë‘ÒÞ!"34ç ìD«30žažb‚žcª60β©35555DU-›iX®:ë‘ÒÞ!

যা ডিফল্ট কুইনের উপর ভিত্তি করে: "34çìD«"34çìD«

"34ç ìD«30žažb‚žcª60β©35555DU-›iX®:ë‘ÒÞ!"
                           # Push this string
 34ç                       # Push 34, converted to a character: '"'
    ì                      # Prepend it in front of the string
     D«                    # Duplicate this string, and append them together
                           # (we now have the quine-string at the top of the stack)
  žažb‚žcª60β              # Get the current time in seconds similar as above
             ©             # Store it in variable `®` (without popping)
              35555        # Push the time this program was generated
                   DU      # Store a copy in variable `X`
                     -     # Subtract the two times
30                    i   # If the original input-integer is larger than this:
  X®:                      #  Replace integer `X` with `®` in the generated quine-string
                       ë   # Else:
  ‘ÒÞ!                     #  Push dictionary string "BOOM!"
                           # (and output the top of the stack implicitly as result)

আমার এই 05AB1E টিপটি দেখুন (অভিধানটি কীভাবে ব্যবহার করবেন? ) কেন ‘ÒÞ!তা বোঝার জন্য "BOOM!"
দ্রষ্টব্য: স্থানটির মধ্যে থাকার কারণটি çìহ'ল অন্যথায় এটি এর triumphকারণে অভিধান-স্ট্রিং ( ) হিসাবে ব্যাখ্যা করে ’...’

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