Y2K… 2019 সালে?


18

এটি আগস্ট 10 ই, 2019, তবে আপনার কার্যটিতে এখনও Y2K জড়িত। অদ্ভুত, তাই না?

এমন একটি প্রোগ্রাম তৈরি করুন যা এতে মুদ্রিত হয় এবং এতে দুটি সংখ্যার সংযুক্ত থাকে। প্রথমবার আপনি এটি চালানোর সময়, এটির আউটপুটটিতে এটি 00 যুক্ত করা উচিত (এর উত্স কোড, কারণ এটি একটি চক্র বৈকল্পিক)। আপনি যখন এই আউটপুটটি চালাবেন, মূল অঙ্কটি দুটি সংখ্যার সংখ্যা ছাড়াই হবে তবে এটির মূল প্রোগ্রামটি আউটপুট করা উচিত, তবে এতে 01 যুক্ত করা হবে। ০২ টি যুক্ত করে ওজি প্রোগ্রাম পেতে সেই আউটপুটটি চালান, তারপরে 03 দিয়ে প্রোগ্রামটি পেতে ... এই চেইনটি 99 অবধি চলতে হবে That প্রোগ্রামটি আউটপুট হওয়া উচিত BREAKING NEWS: WORLD ENDS

যদি আপনার প্রোগ্রামটি হয় Y2Kparanoia: yes:

  1. এটি আউটপুট করা উচিত Y2Kparanoia: yes00
  2. যে আউটপুট মুদ্রণ করা উচিত Y2Kparanoia: yes01
  3. যে আউটপুট মুদ্রণ করা উচিত Y2K paranoia: yes02
  4. পদক্ষেপ 100 পর্যন্ত পুনরাবৃত্তি করুন: এই প্রোগ্রামটি নির্দিষ্ট কিয়ামতের সংবাদকে আউটপুট করে

এটি কোড গল্ফ, তাই এই পদক্ষেপগুলি জয় করার পরে সংক্ষিপ্ততম প্রোগ্রাম যা নিজে মুদ্রণ করতে পারে।


7
বিবরণ অনুসারে আমরা যে 99 তম বার দৌড়াব আমরা চালাচ্ছি 2Kparanoia: yes97এবং উত্পাদন করব 2Kparanoia: yes98, সুতরাং (4) পড়া উচিত নয় Repeat to step 100, but step 101 will output "BREAKING NEWS: WORLD ENDS"? (অর্থাত্ 2Kparanoia: yes99সংবাদটি উত্পন্ন করে)
জোনাথন অ্যালান

উত্তর:


7

পার্ল 6 , 122 114 106 বাইট

-8 বাইট শেলভাকুকে ধন্যবাদ

END {<print $!-199??"END \{<$_>~~.EVAL};\$!="~($!-1&&$!-99)+100!!"BREAKING NEWS: WORLD ENDS">~~.EVAL};$!=1

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

স্ট্যান্ডার্ড কুইন ফর্ম্যাট নেয় এবং ব্রেকিং নিউজ স্ট্রিংয়ের পাশাপাশি যুক্ত সংখ্যার সাথে একটি নতুন ফাংশন কল যুক্ত করে। ENDপ্রোগ্রামটি শেষ হয়ে গেলে এটি ফাংশনটি কার্যকর করতে ব্যবহার করে।


আপনি আরও একটি বাইট ENDএবং একটি ourভেরিয়েবল ব্যবহার করে সংরক্ষণ করতে পারেন :END {<print $s-199??"END\{<$_>~~.EVAL};our\$s="~($s-1&&$s-99)+100!!"BREAKING NEWS: WORLD ENDS">~~.EVAL};our$s=1
শেলভাকু

আপাতত, এটি বর্তমান বিজয়ী।
অ্যান্ড্রু

7

রুবি, 158 154 146 128 122 100 বাইট

এই উত্তর দ্বারা অনুপ্রাণিত ।

eval s=%{$><<(D>198?'BREAKING NEWS: WORLD ENDS':'eval s=%%{%s}<<D=%d'%[s[0..-2],D<2?100:D+1])#}<<D=1

সম্পাদনা: আমি এটিকে অপসারণ করতে (s.split(35.chr)[0]+35.chr).inspectএবং প্রতিস্থাপন করতে সক্ষম হয়েছি s[0..-2](শেষ ব্যতীত প্রতিটি মানের সীমা) এবং %{ ... }আমি আগে ব্যবহার করেছি স্ট্রিং সিনট্যাক্সটি। 22 বাইট সংরক্ষিত!

পুরাতন রুপ:

সম্পাদনা: "BREAKING NEWS: WORLD ENDS"একদম সঠিক বৈধ বিন্যাসের স্ট্রিং বুঝতে পেরে এক জোড়া পেরেন (এবং ডেটা বিভাগে সংশ্লিষ্ট জুটি) সংরক্ষণ করা হয়েছে এবং রুবি কোনও এক্সট্রিনো পরামিতি উপেক্ষা করে।

END{$><<(q=S>198?"BREAKING NEWS: WORLD ENDS":%{END{$><<(q=S>198?"BREAKING NEWS: WORLD ENDS":%%{%s})%%[q,S<2?0:S-99]}
S=1%02d})%[q,S<2?0:S-99]}
S=1

যখন এই আমি উপলব্ধি যে যেহেতু শুরুর নম্বর হবে আছে প্রোগ্রাম খুব শেষে যেতে, এবং রুবি ভেরিয়েবল ব্যবহার করার আগে তারা ঘোষণা করা অনুমতি দেয় না, আমি কোড রান করতে হবে পরে ডিজিটের একরকম। আমি এমন কিছু করতে পারতাম def a(s) ... end;a 1যা হয়ে উঠবে ...end;a 100, তবে রুবির কম পরিচিত ENDবাক্য ব্যবহার করে কম বাইট ব্যবহার করা হয়। যাইহোক, ব্লকটির অভ্যন্তরটি ENDঅন্যরকম স্কোপে রয়েছে, সুতরাং Sঅবশ্যই একটি বৈশ্বিক পরিবর্তনশীল বা ধ্রুবক হতে হবে।

ব্যাখ্যা:

  • END{ ... };S=1: প্রোগ্রাম শেষ হওয়ার ঠিক আগে কোডের ব্লক চালান; সেট ধ্রুব Sকরার 1(অথবা 100- 199ভবিষ্যৎ পুনরাবৃত্তিও মধ্যে)
  • $><<( ... ): $>স্টাডাউটের রুবিতে একটি শর্টকাট, এবং <<একটি আইওতে আইও-কে লেখা হয়। পেরেনগুলি প্রয়োজনীয়, অন্যথায় এটি হয়ে যায়($><<S)>198...
  • S>198?"BREAKING NEWS: WORLD ENDS":(q=...)%[q,S<2?0:S-99]: আমি যদি এটিকে কিছুটা আরও যুক্তিসঙ্গত কোডে বিভক্ত করতাম তবে তা হ'ল:

    if S > 198
      "BREAKING NEWS: WORLD ENDS"
    else
      q = ...
      number_to_append = if S < 2
        0
      else
        S - 100 + 1
      end
      q % [q, number_to_append]
    end

    %অপারেটর একটি স্ট্রিং প্রয়োগ কার্যকরভাবে হয় printfLHS ফরম্যাট স্ট্রিং হচ্ছে ও RHS আর্গুমেন্ট হচ্ছে।

  • %{ ... (q=%%{%s}) ... S=1%02d}: রুবিতে স্ট্রিংগুলির জন্য একটি আকর্ষণীয় বাক্য গঠন রয়েছে যা ভারসাম্যহীন যতক্ষণ না কোনও স্ট্রাইটিং ছাড়াই স্ট্রির মধ্যে জোড়া কোঁকড়ানো বন্ধনী উপস্থিত হতে দেয়। এটি খুব সহায়ক, অন্যথায় অনুরূপ কুইনটিকে স্ট্রিং আক্ষরিক হিসাবে নিজের মধ্যে রাখার জন্য স্ট্রিংটি এড়িয়ে যেতে হবে। বিন্যাস স্ট্রিংয়ের দুটি বিকল্পগুলি %sনিয়মিত স্ট্রিংয়ের %02dজন্য এবং অক্ষরের সাথে 2 আকারের ডান-প্যাডযুক্ত 0

আরও ছোট করার বিষয়ে আমার চিন্তাভাবনা:

  • এর sপরিবর্তে ব্যবহার করতে সক্ষম $sহওয়াই ভাল লাগবে তবে এর সংজ্ঞা দেওয়া s=$s;বা একটি ফাংশন তৈরি করা def a(s) ...উভয়ই সেভ করার চেয়ে বেশি বাইট ব্যবহার করে এবং এটি করার কোনও উপায় আমি ভাবতে পারি না। সম্পাদনা: ধ্রুবকগুলি বিশ্বব্যাপী এবং এটি একটি চরিত্র হতে পারে!
  • ততক্ষণে যদি Sকম থাকত তবে ভালো লাগবে 100, যাতে এটি 3-সংখ্যার পরিবর্তে 2-সংখ্যার সংখ্যা ব্যবহার করে তুলনা করা যায়। যাইহোক, যদি আমি ব্যবহার S=0শেষে, পরবর্তী দুটি সংখ্যা অকট্যাল হিসেবে ব্যাখ্যা করা হয়, এবং 8এবং 9অবৈধ এবং সব পালান হয়। S=কেবল বৈধ নয়, এবং দুটি অঙ্ক সংযোজন করার আগে এবং পরে উভয়ই মানকে বৈধ করার কোনও উপায় আমি জানি না। নোট, এর 0(এবং প্রত্যেক অন্যান্য পূর্ণসংখ্যা) হল truthy রুবি হবে।

কীভাবে এই খাটোটি করা যায় সে সম্পর্কে কোনও চিন্তাভাবনা, দয়া করে আমাকে জানান!

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


আপনি যদি ব্যবহার করতে পারেন s=100-1? তারপরে s99, 0, -1 ...- 99 -sহবে এবং -99, 0 ... 99 হবে।
বেগুনি পি

@ পুরপ্পি যাই হউক না কেন চেষ্টা করি আমি এটি করার কোনও উপায় খুঁজে পাচ্ছি না এবং অক্ষরগুলি সংরক্ষণ করতে পারি।
শেলভাকু

5

যান, 382 366 354 340 305 298 272 বাইট

জিতবে না তবে আমি চ্যালেঞ্জটি সহ মজা করেছি।

package main
func main(){if n<199{s+="\x60,"
print(s[:135],s,100+(n/100)*(n%100+1))}else{print("BREAKING NEWS: WORLD ENDS")}}
var s,n=`package main
func main(){if n<199{s+="\x60,"
print(s[:135],s,100+(n/100)*(n%100+1))}else{print("BREAKING NEWS: WORLD ENDS")}}
var s,n=`,1

গো খেলার মাঠে এটি ব্যবহার করে দেখুন!

একটি কুইনের উপর ভিত্তি করে। যদি ভেরিয়েবলটি n199 এর চেয়ে কম হয়, তবে এটি স্ট্রিং ভেরিয়েবলটিকে nএকটি গুরুতর অ্যাকসেন্ট ( \x60) যুক্ত করে, বহু লাইন স্ট্রিংগুলির জন্য গো এর অক্ষর এবং তারপরে একটি কমা ,। এটা তোলে প্রথম 147 টি অক্ষর মুদ্রণ দ্বারা অব্যাহত s(মুদ্রণ প্রতিরোধ ,কারণ যে শুধুমাত্র শেষে পড়ে) তারপর ছাপে sসামগ্রিকভাবে, এবং পরিশেষে কপি করে প্রিন্ট 100যদি n == 1এবং n+1অন্যথায়। ফলস্বরূপ যে ক্রমাগত রানগুলি nপ্রোগ্রামের শেষে ভেরিয়েবলটি 100, 101 ইত্যাদি এ পরিবর্তন করে। যদি ভেরিয়েবলটি n199 বা তার বেশি হয় তবে এটি ব্রেকিং নিউজ প্রিন্ট করে।



2

জাভাস্ক্রিপ্ট (ES6), 116 বাইট

setTimeout(s="alert((n-1?++n:n=100)-200?`setTimeout(s=${JSON.stringify(s)}),n=`+n:'BREAKING NEWS: WORLD ENDS')"),n=1

94 বাইট, স্ট্রিংফাইং ফাংশন অনুমোদিত হলে

f=_=>((p=`f=${f}`.split`|`)[4]=p[4]-1?-~p[4]:100)-200?p.join`|`:'BREAKING NEWS: WORLD ENDS'||1

2
আপনি আপনার নিজস্ব উত্স কোডটি ( f=${f}) পড়তে পারবেন না , এটি কোডগলফ.মেটা.স্ট্যাকেক্সেঞ্জিং.com/a/4878/13400 অনুসারে কোয়েন নয়
শেলভাকু


1

পাইথ , 81 80 বাইট

.vh,K"?>J198\"BREAKING NEWS: WORLD ENDS\"s[\".vh,K\"N:KN+C92NN\"J\"?<J2*TT+J1"J1

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

ব্যাখ্যা:

.vh,K" ... "J1
.v               Eval pyth code
  h              Get the first item in list
   ,             Make a list of the next two items
            J1   Set J = 1 (J = 100 to 199 in future iterations)
    K" ... "     Set K to the given string

এবং স্ট্রিংয়ের কোডটি হ'ল (ব্রেকিং নিউজ সংক্ষিপ্ত):

?>J198"BNWE"s[".vh,K"N:KN+C92NN"J"?<J2*TT+J1
?                                              Ternary: If A then B else C
 >J198                                         Test if J > 198
      "BNWE"                                   String literal; If ternary was true, return this (which is then implicitly printed)
            s[".vh,K"N:KN+C92NN"J"?<J2*TT+J1   ternary else
            s                                  concatenate list of strings
             [                                 create list
              ".vh,K"                          string literal, list[0]
                     N                         N is set to the double-quote character, list[1]
                      :KN+C92N                 list[2]
                      :                        Regex substitution. In A, replace B with C
                       K                       Variable K (set to the string being eval'd)
                        N                      N is double-quote
                         +C92N                 A backslash followed by a double-quote
                         +                     concat two strings
                          C92                  character with code point 92 (backslash)
                             N                 N is double-quote
                              N                N is double-quote, list[3]
                               "J"             String literal, list[4]
                                  ?<J2*TT+J1   Inner ternary, list[5]
                                   <J2         If J < 2 ..
                                      *TT      return T * T (10 * 10), else
                                          +J1  return J+1
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.