এটি 2017 পর্যন্ত বাড়ুন


16

এই চ্যালেঞ্জের মধ্যে আপনি এমন একটি প্রোগ্রাম তৈরি করবেন যা বয়সের মধ্য দিয়ে চলে যাওয়ার সাথে সাথে বাড়বে… এটি ২০১৩ অবধি।

চ্যালেঞ্জ

যখনই এই চ্যালেঞ্জের বিবরণটি "প্রোগ্রাম" বলে, আপনি "ফাংশন "ও পড়তে পারেন।

আপনার জমা, কার্যকর করা হলে, এমন একটি প্রোগ্রাম আউটপুট দেয় যা THE LENGTH OF YOUR SUBMISSION+ 1বাইট দীর্ঘ।

যখন সেই প্রোগ্রামটি কার্যকর করা হয়, এটি এমন একটি প্রোগ্রাম আউটপুট দেয় যা THE LENGTH OF YOUR SUBMISSION+ 2বাইট দীর্ঘ ... এবং আরও কিছু হয়।

যাইহোক , যখন আপনার প্রোগ্রামটি 2017 বাইটের দৈর্ঘ্যে পৌঁছেছে, তার পরিবর্তে আউটপুট 2017এবং প্রস্থান করতে হবে।

বিধি

  • চূড়ান্ত প্রোগ্রামের আউটপুট কেবল 2017এবং কেবল হতে হবে 2017। এটা একটা স্ট্রিং বা একটি পূর্ণসংখ্যা হতে পারে, কিন্তু এটা পড়তে হবে 2017এবং 2017.0বা 0x7E1বা এই ধরনের অন্যান্য আজেবাজে কথা।
  • কোনও মানক ফাঁক নেই
  • কেবলমাত্র আপনার প্রাথমিক প্রোগ্রামটির জন্য ইনপুট প্রয়োজন, যা আপনার বাইটোকন্টে যুক্ত হবে।
    সুতরাং যদি আপনার প্রাথমিক প্রোগ্রামটি 324 অক্ষর দীর্ঘ হয় এবং 13 বাইটের একটি ইনপুট নেয়, আপনার মোট স্কোর 324 + 13 = 337 হবে এবং এর দ্বারা আউটপুট করা প্রোগ্রামটি অবশ্যই 338 বাইট দীর্ঘ হবে।
    • কমান্ড লাইন ফ্ল্যাগগুলি (যেমন perl -X) ব্যবহার করা ভাল, তবে - যতক্ষণ না আপনার প্রাথমিক প্রোগ্রামের পাশাপাশি সমস্ত উত্পন্ন প্রোগ্রাম একই পতাকা ব্যবহার করে । এছাড়াও, তারাও মোট বাইটকাউন্টের দিকে গন্য করে। কমান্ড লাইনের পতাকার সামনে ড্যাশ, স্ল্যাশ ইত্যাদি মোটের সাথে গণনা করে না, উদাহরণস্বরূপ একটি অতিরিক্ত বাইট perl -Xহিসাবে গণনা করা ।
  • আপনি যদি কোনও ফাংশন ফিরিয়ে দেন তবে এটি একটি আসল ফাংশন হওয়া উচিত এবং স্ট্রিং নয় যা মূল্যায়ন করার পরে একটি ফাংশন তৈরি করে।
  • অনুপযুক্ত কুইন্স (যদি আপনার প্রোগ্রামটি কুইন হয়) অনুমোদিত নয়।

উদাহরণ

সিউডোকোড, 99 বাইট

IF (PROGRAM LENGTH == 2017)
  PRINT 2017
ELSE
  PRINT (THE SOURCE OF THIS PROGRAM + 1 BYTE PADDING)

আপনার জমাটি যতক্ষণ না উপরের নিয়মগুলি মেনে চলে ততক্ষণ ভিন্নভাবে কাজ করতে পারে।


শুধু এনওপি যুক্ত করার ;;;অনুমতি রয়েছে কি?
ফ্লিপট্যাক

@ ফ্লিপট্যাক হ্যাঁ ·
ব্যবহারকারী 2428118

"কমান্ড লাইনের পতাকার সামনে ড্যাশ, স্ল্যাশ ইত্যাদি মোটের সাথে গণনা করে না, যেমন, পার্ল-এক্সকে অতিরিক্ত বাইট হিসাবে গণনা করা হয়।" - মেটাতে বর্ণিত হিসাবে এটি কি ইচ্ছাকৃতভাবে এখানে আদর্শের বিপরীতে? সাধারণত, ড্যাশস, স্ল্যাশ ইত্যাদির মাঝে মাঝে গণনা করা উচিত, সেই বিকল্পের পরিবর্তে অনুরোধটি কী
এইচডিভি

@ এইচভিডি মনে হয় না যে আমি এটি পড়েছি, তাই না, এটি উদ্দেশ্যমূলক নয়। এটি বলেছিল, আমি মনে করি না যে এগুলি উপেক্ষা করার মতো খুব বেশি ক্ষতি আছে তাই আমি এই চ্যালেঞ্জের জন্য এটি পরিবর্তন করব না।
ব্যবহারকারী 2428118

উত্তর:


6

*> <> , 29 28 30 বাইট

" r::2+l'-':*7-(?ul1-n;Ol?!;ou

এখানে চেষ্টা করুন! (* 2017 বাইট দিয়ে চেষ্টা করে দেখুন )
* দেরি 0 মিমি স্থির করুন বা আপনাকে দীর্ঘ সময় অপেক্ষা করতে হতে পারে

এটি প্রতিটি প্রতিটি পরবর্তী রান যোগ করে। যদি এটির 2017 বাইট থাকে এবং এটি চালিত হয় তবে এটি 2017 আউটপুট দেবে এবং অন্য কোনও আউটপুট ছাড়াই কার্যকর করা বন্ধ করবে।

আপডেট: দৈর্ঘ্যের সমান না হয়ে 2017 এর চেয়ে কম কিনা তা পরীক্ষা করে 1 বাইট সংরক্ষণ করা হয়েছে

আপডেট 2: +2 বাইটের জন্য স্থির আউটপুট

ব্যাখ্যা

" r: 2+                         build quine
    :                           copy extra " "
       l                        push length to stack
        '-':*7-                 push "2018" to stack
               (?u     O        if not length < 2018:
                  l1-n;           output length-1 and exit
                       Ol?!;ou  output entire stack and exit

হ্যাঁ, পুরোপুরি ঠিক when your program has reached a length of 2017 bytesনয়, 2016 নয়
ধ্বংসাত্মক লেবু

@ আবিষ্কারযোগ্য জলছবি নির্ধারিত
রেড স্টারকোডার

4

পাইথন 2.7, 90 বাইট

এখানে তুলনামূলকভাবে সহজ একটি:

p='q';s=r"p+='q';print('p=\''+p+'\';s=r\"'+s+'\";exec s')if len(p)<1929 else'2017'";exec s

এখানে প্রথম পুনরাবৃত্তি চেষ্টা করুন! এখানে পেনাল্টিমেট পুনরাবৃত্তি চেষ্টা করুন! এখানে চূড়ান্ত পুনরাবৃত্তি চেষ্টা করুন!

Ungolfed:

p='q'      # The length of string p is the number of iterations so far.

s=r"p+='q';print('p=\''+p+'\';s=r\"'+s+'\";exec s')if len(p)<1928 else'2017'"

exec s     # s contains the source code, but also contains a line saying "p += 'q'",
           # which makes the byte count longer. When the length of p is 1928 (i.e. when the
           # entire program is 2017 bytes long), 2017 is printed instead.

@redstarcoder চূড়ান্ত পুনরাবৃত্তির ঠিক 2017 অক্ষর রয়েছে। আমি মনে করি উপরের ডানদিকে আপনি বাইট গণনা দেখতে পাবেন ....
Calconym

আহা আমার ভুল, কীভাবে ঘটেছিল তা নিশ্চিত নয়, দুঃখিত!
redstarcoder

আপনি ব্যবহার করতে পারেন p='';...এবং 1929else, তবে নোট করুন যে মুদ্রণটি শেষে একটি নতুন লাইনও প্রিন্ট করে, সুতরাং আপনার প্রোগ্রামে একটি অনুবর্তনযোগ্য নিউলাইন যুক্ত করা উচিত, অন্যথায় এটি প্রথম রান করার পরে দুটি বাইট বাড়ায়।
mbomb007

2

মাইক্রোস্ক্রিপ্ট দ্বিতীয়, 38 বাইট

{v{h}sl+s""+vK#s2017=(2017ph)lp"~"ph}~

1

> <> , 34 বাইট

":l' '95**)b*f3++0.1-}'#'r>o<:ln;#

এটি অনলাইন চেষ্টা করুন! মনে রাখবেন, ছোট মানগুলির জন্য এটি পরীক্ষা করতে আপনার মান (বিয়োগ 1) অবশ্যই 7 বাইটে উত্পন্ন করতে সক্ষম হবে।

ব্যাখ্যা

":l' '95**)b*f3++0.1-}'#'r>o<:ln;#
".................................   push this string
 :                                   duplicate
  l                                  push length of stack
   ' '95**                           push 2016
          )                          1, if length > 2016, 0 otherwise
           b*                        multiply by 11
             f3++                    add 18
                 0.                  jump to that character on this line
                                     if the length is sufficiently long, this skips the
                                     next 10 characters, to the 11th (`b` from earlier):
                             :ln;    (if length is > 2016)
                             :         duplicate
                              l        push length
                               n       output as number
                                ;      terminate
                   1-}'#'r>o<        (if length <= 2016)
                   1-                  subtract 1 from the last char, `#`, to get `"`,
                     }                 which is then moved to the bottom
                      '#'              pushes `#` (will be appended)
                         r             reverses the stack
                          >o<          output stack, until error (accepted by default)
                                 #   This is never reached, but is used to generate `"`

1

জাভা, 251 বাইটস (Elpipse IDE)

import java.io.*;class G{public static void main(String[]args) throws Exception{File x=new File("./src/G.java");if(x.length()==2017){System.out.print("2017");}else{PrintWriter y=new PrintWriter(new FileOutputStream(x,1>0));y.print("A");y.close();}}}//

এটি ধরে নেওয়া হচ্ছে যে প্রকল্পটি .javaকার্যদিবসের এসআরসি-তে ফাইলের কনভেনশনটি ব্যবহার করে Eclipse এ তৈরি হয়েছিল । উত্সটি কোথায় আছে তা সনাক্ত করার অন্যান্য উপায় রয়েছে তবে আমি মনে করি এটি কোনও নিয়মের বিরুদ্ধে নয়।

মূলত। জাভা উত্স-কোডটি খোলে এবং 2017 পর্যন্ত যুক্ত হয় (একটি মন্তব্যের পরে)। উত্সের ফাইল-আকারটি সর্বমোট 2017 বাইটে পৌঁছে যায়, পরিবর্তে এটি 2017 প্রিন্ট করবে।



1

পাইথন 2, 217 167 78 বাইট

মনে রাখবেন এখানে একটি অনুবর্তনযোগ্য নতুন লাইন থাকা উচিত। আমি ক্যালকনিয়াম যা ব্যবহার করেছে তার অনুরূপ ধারণাগুলি ব্যবহার করেছি, তাই অনুপ্রেরণার জন্য ধন্যবাদ!

p='q';s='p+=p[0];print"p=%r;s=%r;exec s"%(p,s)if len(p)<1941else 2017';exec s

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

2016 এ চেষ্টা করুন ; 2017 এ চেষ্টা করুন


পূর্ববর্তী সংস্করণ:

এই প্রোগ্রামটি inspectবর্তমান লাইন নম্বর পেতে মডিউলটি ব্যবহার করে । তারপরে, এটি নিজে মুদ্রণ করে তবে আমদানির পরে অতিরিক্ত লাইন দিয়ে, যা পরবর্তী প্রোগ্রামের জন্য লাইন নম্বর পরিবর্তন করে। এখানে একটি ট্রেলিং নিউলাইনও থাকা উচিত।

from inspect import*
n=stack()[0][2];s='from inspect import*%sn=stack()[0][2];s=%r;print(s%%(chr(10)*n,s))if n<1852else 2017';print(s%(chr(10)*n,s))if n<1852else 2017

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


1

সিজেম , 39 33 30 বাইট

33q:X~

ইনপুট সহ

2017:N=N{33')X+`":X~"+}?

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

এটি আমার পূর্ববর্তী সংস্করণের সাথে কার্যত সমতুল্য, ব্যতীত এটি उद्धरणগুলি লেখার এবং এড়ানোর প্রয়োজনকে এড়িয়ে চলে। পূর্ববর্তী সংস্করণ:

33"2017:N=N{33')X+`\":X~\"+}?":X~

কোন ফলাফল

33")2017:N=N{33')X+`\":X~\"+}?":X~

যা ফলাফল

33"))2017:N=N{33')X+`\":X~\"+}?":X~

ইত্যাদি। পরিশেষে, প্রোগ্রাম

33"))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))2017:N=N{33')X+`\":X~\"+}?":X~

আউটপুটস 2017

কিভাবে এটা কাজ করে

33      Push 33
  q     Read the input: 2017:N=N{33')X+`":X~"+}?
   :X   Store it in variable X
     ~  Eval it

কিন্তু ইনপুট কোডটি আসলে কী করে?

 2017:N                      Push 2017 and store it in N
       =                     Check if the other number (33 on first run) equals 2017
        N                     If it does, push 2017
         {                    Else, execute this block:
          33                   Push 33
            ')                 Push the ) character
              X                Push X
               +               Concatenate with ')
                `              String representation (wraps it in quotes, escapes quotes inside)
                 ":X~"       Push the string ":X~"
                      +      Concatenate
                       }?    (end of block)

যদি প্রোগ্রামটির প্রথম সংখ্যাটি 2017 এর সমান না হয়, তবে এটি এমন একটি প্রোগ্রাম আউটপুট দেবে যেখানে সেই সময়ের চেয়ে এই সংখ্যাটি আরও একবার বাড়ানো হয়েছে। যদি এটি 2017 এর সমান হয় (যেমন এটি 1984 বার বাড়ানো হয়েছে), তবে কেবল 2017 টি চাপুন এবং শেষ করুন। প্রথম সংখ্যাটি 33 (কোডের দৈর্ঘ্য) হিসাবে শুরু হয়; প্রতিটি বর্ধিতকরণের দ্বারা কোডের দৈর্ঘ্য 1 এবং সেই সংখ্যাটি 1 বাড়ানো হয়, সুতরাং যখন 33 এ 2017 হওয়ার জন্য যথেষ্ট পরিমাণে বর্ধিত করা হয়েছে তখন কোডটিও 2017 বাইট দীর্ঘ হবে।


0

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

এটি বেশ চ্যালেঞ্জ ছিল ... অনুমান করুন যে আসল ফাংশনগুলি কেবল ফাংশনের উত্স নয়, ফেরত দেওয়া প্রয়োজন for

আসল ফাংশন

function x(){return "3".length>1933?2017:Function(`return ${x}`.replace(/3/,33))()}

আমি এখানে functionপরিবর্তে ব্যবহার করছি =>কারণ পরবর্তীকৃত নামকৃত ফাংশন সমর্থন করে না, কেবল একটি চলককে বেনামে ফাংশন বরাদ্দ করে।

প্রথম পুনরাবৃত্তি

আপনার ব্রাউজার কনসোলে উপরেরটি চালানো একটি ফাংশন দেয় যা কোনও স্ট্রিংয়ে কাস্ট করা হলে মনে হয়:

function x(){return "33".length>1933?2017:Function(`return ${x}`.replace(/3/,33))()}

2017 এ যাচ্ছি

যেহেতু প্রতিটি ফাংশন নতুন ফাংশন দেয়, তাই আপনি 2017 পেতে মূল ফাংশন / তার ফলাফলকে 1934 বার কল করতে পারেন ।

console.log((
function x(){return "3".length>1933?2017:Function(`return ${x}`.replace(/3/,33))()}
)()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
)

ফায়ারফক্সের সাথে পরীক্ষিত।

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