দীর্ঘতম পিরিয়ড পুনরাবৃত্তি কুইন


10

যেমনটি আমরা জানি, একটি কুইন একটি প্রোগ্রাম যা তার নিজস্ব উত্স কোডকে আউটপুট করে। যাইহোক, এটি এমন একটি প্রোগ্রাম লিখতেও পারে যা অন্য, ভিন্ন প্রোগ্রামকে আউটপুট করে, যা প্রথম প্রোগ্রামটিকে আবার আউটপুট করে। উদাহরণস্বরূপ, পাইথন 2 প্রোগ্রাম

x = '''x = {}
print 'print '+'"'*3+x.format("'"*3+x+"'"*3)+'"'*3'''
print 'print '+'"'*3+x.format("'"*3+x+"'"*3)+'"'*3

চালানো হবে, নিম্নলিখিত পাঠ্য আউটপুট:

print """x = '''x = {}
print 'print '+'"'*3+x.format("'"*3+x+"'"*3)+'"'*3'''
print 'print '+'"'*3+x.format("'"*3+x+"'"*3)+'"'*3"""

পাইথন প্রোগ্রাম হিসাবে চালিত হলে, এটি আবার আসল কোডটিকে আউটপুট দেয়। একে পুনরাবৃত্ত কুইন বলা হয় । আসল কোডটি ফিরে পেতে আপনাকে এটিকে দু'বার চালাতে হবে, আমরা বলি এর পিরিয়ড 2 রয়েছে । তবে অবশ্যই অনেক বেশি সময়কাল সম্ভব।

আপনার চ্যালেঞ্জটি হ'ল আপনার বাছাইয়ের ভাষায়, 100 বাইট বা তার চেয়ে কম সময়ে, যতটা সম্ভব সময়কালের সাথে একটি পুনরাবৃত্ত কুইন লিখুন । (নোট করুন যে আমার উপরে উদাহরণটি এই অনুকরণের সাথে খাপ খায় না, কারণ এটি অনুমানযোগ্য নিউলাইন সহ ১১৯ বাইট))

নিম্নলিখিত নিয়ম এবং স্পষ্টতা নোট করুন:

  • সাধারণ কুইন বিধিগুলি প্রয়োগ হয়, অর্থাত আপনার প্রোগ্রামটি এমন ভাষা বৈশিষ্ট্যগুলি ব্যবহার করতে পারে না যা এটিকে সরাসরি নিজের উত্স কোডটিতে অ্যাক্সেস করতে দেয়।
  • পুনরাবৃত্তি আউটপুটগুলি শেষ পর্যন্ত আপনার মূল কোডটিতে ফিরে যেতে হবে এবং আপনাকে এটি প্রদর্শন বা প্রমাণ অন্তর্ভুক্ত করতে হবে।
  • আপনি যতক্ষণ বলছেন ততক্ষণ চক্রটি কেন তার একটি ব্যাখ্যা আপনাকে অবশ্যই অন্তর্ভুক্ত করতে হবে। এটি গাণিতিক প্রমাণের স্তরে থাকা উচিত নয়, তবে এটি আপনার ভাষার সাথে পরিচিত কারও কাছে বিশ্বাসযোগ্য হওয়া উচিত। (এই বিধিটি এখানেই রয়েছে কারণ আমি কিছু উত্তর খুব খুব সংখ্যক জড়িত বলে আশা করি))
  • যতক্ষণ আপনি প্রমাণ করতে পারবেন যে এটি কমপক্ষে এত দীর্ঘ। এই ক্ষেত্রে, আপনার স্কোর হবে 1,000,000 অন্যথায়, আপনার স্কোরটি আপনার কুইনের সময়কাল।
  • 100 বাইট সীমাটি কেবলমাত্র আপনার প্রাথমিক প্রোগ্রামের জন্য প্রযোজ্য - এটির আউটপুটগুলির প্রোগ্রামগুলি দীর্ঘতর হতে পারে তবে অবশ্যই আপনার মূল কোডটি আউটপুট দেওয়ার জন্য তাদের শেষ পর্যন্ত 100 বাইটে ফিরে যেতে হবে।
  • আপনি ধরে নিতে পারেন আপনার মেশিনটিতে অসীম র‌্যাম এবং অসীম রানটাইম রয়েছে তবে আপনার ভাষা যদি না থাকে তবে আপনি সীমাহীন নির্ভুলতার ডেটা ধরণের (যেমন পূর্ণসংখ্যার) ধরে নিতে পারবেন না। আপনি ধরে নিতে পারেন যে আপনার পার্সার পরিচালনা করতে পারে তার ইনপুট দৈর্ঘ্যের কোনও সীমা নেই।
  • সর্বোচ্চ স্কোর জয়।

দয়া করে নোট করুন: কুইট হুইনিং নামে একটি বিদ্যমান চ্যালেঞ্জ রয়েছে ; কুইনিং শুরু করুন যা পুনরুক্তিযুক্ত কুইনগুলির সাথে জড়িত। তবে একই ধারণার উপর ভিত্তি করে এগুলি সম্পূর্ণ ভিন্ন ধরণের চ্যালেঞ্জ। অন্যটি হ'ল সোজা কোড গল্ফ, যদিও এটি হ'ল (ইচ্ছাকৃত!) ছদ্মবেশে সত্যই একটি ব্যস্ত বিভারের সমস্যা। এই প্রশ্নের ভাল উত্তর দেওয়ার জন্য প্রয়োজনীয় কৌশলগুলি অন্য প্রশ্নের উত্তর দেওয়ার জন্য যা প্রয়োজন তার চেয়ে খুব আলাদা হতে পারে এবং এটি নকশা দ্বারা খুব বেশি।


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

1
@ ডেভ চ্যালেঞ্জটি হ'ল হ্যাঁ, খুব কম সংখ্যক বাইটে একটি বিশাল সংখ্যক নির্দিষ্ট করার বিষয়ে about এটি পুরো নীতিটি যার চারপাশে এটি নকশা করা হয়েছিল। প্রশ্নটি হল, আপনার ভাষার 100 বাইটে আপনি নির্দিষ্ট করতে পারেন এমন উচ্চতম সংখ্যাটি 3 ^^^ 3, বা এর চেয়েও বড় একটি? এই চ্যালেঞ্জটি এটাই। এটি এর মূল। লোকেরা যা করতে চেয়েছিল তা আমি এটাই করতে চাই। এই কাঠামোর কিছুই নেই এমন চ্যালেঞ্জের একটি অতিমাত্রায় সাদৃশ্যর ভিত্তিতে এটি বন্ধ করে দেওয়া দুর্দান্ত, দুর্দান্ত হতাশার।
নাথানিয়েল

1
@ ডেভ (দ্বিতীয় মন্তব্য) তবে আপনি যদি চালাক হন তবে আপনাকে মেশিনের নির্ভুলতার দ্বারা সীমাবদ্ধ করার দরকার নেই need আমি প্রতিযোগিতামূলক উত্তরগুলির জন্য 2 ^ (2 ^ 64) এর চেয়ে অনেক বেশি সময়ের জন্য প্রত্যাশা করব।
নাথানিয়েল

3
তাহলে আপনি কি কোডগল্ফ.স্ট্যাকেক্সেঞ্জাও.ইউ / 1 / 18028/194 এর সদৃশ হিসাবে এটি বন্ধ করা পছন্দ করবেন ?
পিটার টেলর

1
@ পিটারটেলর এটি একটি খুব কাছের থিম, তবে এটি এখনও একটি খুব আলাদা চ্যালেঞ্জ - একটি সংখ্যা মুদ্রণ অনেক সময় প্রচুর পরিমাণে করা থেকে একেবারে আলাদা। আমি অবশ্যই এটি একেবারে বন্ধ না করা পছন্দ করব।
নাথানিয়েল

উত্তর:


10

পিএইচপি, সময়কাল 2,100,000,000

কে ভাববে যে পিএইচপিতে এটি সম্ভব ?! :-)

এটি আসলে আমার প্রথম কুইন এবং এটি 99 বাইট দীর্ঘ:

<?$i=1;$i*=21e8>$i;printf($a='<?$i=%d;$i*=21e8>$i;printf($a=%c%s%c,++$i,39,$a,39);',++$i,39,$a,39);

যদিও পিএইচপি চেয়ে বড় সংখ্যার সমর্থন 2 * 10^8থেকে সুইচিং দ্বারা integerকরা double, বৃদ্ধি (অসীম লুপ করতে বিশালাকার) আর কাজ করে এবং আমি 100 বাইট মধ্যে অন্য সমাধান যা তড়কা পাই নি। এখনো.

প্রুফটি মোটামুটি সহজ, যেহেতু এটি ২.১ বিলিয়নতে রিসেট পয়েন্টে না পৌঁছানো পর্যন্ত প্রতিটি পুনরাবৃত্তির উপর নির্ভর করে।

ক্রেডিট ডেভ , যিনি মন্তব্য করুন এবং ছদ্ম কোডে পদ্ধতির পোস্ট বব Twells , যাদের থেকে আমি একটি ন্যূনতম পিএইচপি quine কোড অনুলিপি করা হয়েছে।

পরীক্ষা প্রোগ্রাম (স্লুওউও):

<?php
$o = file_get_contents('quine.php');
for ($i = 0; $i < 22e8; $i++) {
    if ($i%2==0) exec('php q > p'); else exec('php p > q');
    $a = file_get_contents(($i%2==0) ? 'p' : 'q');
    echo "\r" . str_pad($i,6,' ') . ":\t$a";
    if ($a == $o) {
        die;
    }
}

ভাল, কমপক্ষে আমি উত্তর দেওয়ার প্রথম ব্যক্তি।


1
পার্শ্ব-নোট: এটি ~ 10 ^ 9.322219295 এর অর্ডারে রয়েছে।
LegionMammal978

8

গণিত, পিরিয়ড E8.5678 # 3 E2.1923 # 4 ~ E6.2695 # 3 # 2

Print[ToString[#0, InputForm], "[", #1 - 1 /. 0 -> "Nest[#!,9,9^9^99!]", "]"] & [Nest[#!,9,9^9^99!]]

লক্ষ করুন যে স্কোরগুলি হাইপার-ই স্বরলিপিতে বর্ণিত হয়েছে । পুনরাবৃত্তিগুলি - 1, - 2, - 3, ..., 3, 2, 1 এবং পিছনে Nest[#!,9,9^9^99!]দশমিক বিস্তারের সাথে ফাইনালের প্রতিস্থাপন করে ।Nest[#!,9,9^9^99!]Nest[#!,9,9^9^99!]Nest[#!,9,9^9^99!]Nest[#!,9,9^9^99!]


কৌতুকগুলি দ্রুত বৃদ্ধি পাবে না?
মাল্টেসেন

1
আমি ম্যাথামেটিকাকে জানি না, তবে এটি কি কোয়েনের নিয়ম লঙ্ঘন নয় - এটি নিজের উত্স কোডটি পড়ে? ToString[#0, InputForm]
ডানিরো

তো, মাত্র 9 !!!! কাজ করে না? আইডি কেউজ এই মুহুর্তে আমার সাথে আমার গণিতের আরপিআই নেই।
মালটিসেন

@ মাল্টেসেন যেটি নয়টি, বা (9%) এর ডাবল ফ্যাক্টরিয়ালটির ডাবল ফ্যাক্টরিয়াল গণনা করে !! ≈ 2.116870635 · 10¹²⁰²
LegionMammal978

@ ডানিরো আমার অর্থ, ধারণাটি একটি স্ট্যান্ডার্ড সিজেমের সাথে সমান {"_~"}_~, সুতরাং আমার ধারণা এটি কার্যকর হওয়া উচিত ...
LegionMammal978

5

আর, প্রত্যাশা 2 ^ 19936-0.5 সহ এলোমেলো সময়কাল

f=function(){
    options(scipen=50)
    body(f)[[4]]<<-sum(runif(623))
    0
    cat("f=")
    print(f)
}

আর-এর ডিফল্ট এলোমেলো সংখ্যা জেনারেটরের পিরিয়ড 2 ^ 19937-1 এবং একটানা 623 মাত্রায় সমীকরণ রয়েছে ribution সুতরাং, এর সময়কালে কোথাও (তবে কেবল একবারেই) একটি শূন্যের 623-দীর্ঘ ভেক্টর হবে। যখন আমরা সেখানে পৌঁছব (এবং অনুক্রমের সূচনার সাথে একত্রিত হয়েছি) পরবর্তী 623 এলোমেলো ইউ [0,1] সংখ্যার যোগফল শূন্য হবে এবং আমরা আমাদের আসল প্রোগ্রামটিতে ফিরে আসব।

নোট করুন যে প্রোগ্রামটি খুব উচ্চ সম্ভাবনার সাথে একই শূন্য-রাজ্যে শূন্যে ফিরে যাওয়ার আগে বেশ কয়েকবার অতিক্রম করবে। উদাহরণস্বরূপ, 311.5 যোগফলটি সবচেয়ে বেশি সম্ভাবনাময় এবং ঘটতে পারে এমন অনেকগুলি উপায় রয়েছে তবে আরএনজি 0 এর সময়কালের জন্য 311.5 এর সময়কালের চেয়ে দীর্ঘতর হতে দেয়।


আপনি এই এন্ট্রিটি নির্ধারণ করতে কোন স্কোরটি চান তা নিশ্চিত নন: পি
জেডিএল

1
নিয়ম অনুসারে: "সঠিক সংখ্যাটি না দিয়ে" কমপক্ষে ১,০০,০০০ পুনরাবৃত্তি "এর মতো কিছু বলা ভাল" সুতরাং আমার মতে এটি "কমপক্ষে 1 টি পুনরাবৃত্তি" কারণ যদি আমরা প্রথম চেষ্টাতে সত্যই ভাগ্যবান হই ...;)
ইয়েটিজিএন

"আমি কিছু এলোমেলো ইনপুট উত্পন্ন করতে পারি, উত্তরটি রয়েছে" এর মতো অনেকগুলি মানক লুফোলের বিপরীতে, এটি একটি খুব পরিষ্কার ঝলকানো প্রমাণ যা সুনির্দিষ্ট উত্তরটি আসতে বাধ্য, এবং একটি খুব ভাল অনুমান দেওয়া হয়েছে। নিস!
Andreï Kostyrka

1
প্রোগ্রামটি একবার একবার তার বেস অবস্থায় ফিরে আসে, তারপরে এটির ঠিক 2 ^ 19937-1 এর একটি এলোমেলো সময়কাল হবে।
জেডিএল

এর আউটপুট প্রকৃত প্রোগ্রামের সাথে মেলে না (হোয়াইটস্পেসের কিছুটা অনুপস্থিত)। এছাড়াও, প্রোগ্রামের কলগুলির মধ্যে রাষ্ট্র সংরক্ষণ করা হবে না, সুতরাং সময়কালটি একটি সঠিক সংখ্যা হবে না বা এটি সামঞ্জস্যপূর্ণও হবে না
জো কিং

1

জাভাস্ক্রিপ্ট, সময়কাল 9,007,199,254,700,000

জিততে যাচ্ছি না, তবে জাভাস্ক্রিপ্ট নিয়ে এই চ্যালেঞ্জটিতে কাজ করা মজাদার ছিল:

a="a=%s;console.log(a,uneval(a),%.0f-1||90071992547e5)";console.log(a,uneval(a),1-1||90071992547e5)

নিম্নলিখিত চক্র অনুসরণ করে:

a="a=%s;console.log(a,uneval(a),%.0f-1||90071992547e5)";console.log(a,uneval(a),1-1||90071992547e5)
a="a=%s;console.log(a,uneval(a),%.0f-1||90071992547e5)";console.log(a,uneval(a),9007199254700000-1||90071992547e5)
a="a=%s;console.log(a,uneval(a),%.0f-1||90071992547e5)";console.log(a,uneval(a),9007199254699999-1||90071992547e5)
a="a=%s;console.log(a,uneval(a),%.0f-1||90071992547e5)";console.log(a,uneval(a),9007199254699998-1||90071992547e5)
// etc...
a="a=%s;console.log(a,uneval(a),%.0f-1||90071992547e5)";console.log(a,uneval(a),3-1||90071992547e5)
a="a=%s;console.log(a,uneval(a),%.0f-1||90071992547e5)";console.log(a,uneval(a),2-1||90071992547e5)
a="a=%s;console.log(a,uneval(a),%.0f-1||90071992547e5)";console.log(a,uneval(a),1-1||90071992547e5)
a="a=%s;console.log(a,uneval(a),%.0f-1||90071992547e5)";console.log(a,uneval(a),9007199254700000-1||90071992547e5)
// and so on

দ্রষ্টব্য: আপনি এটি 18 বাইটকে আরও সংক্ষিপ্ত করে তুলতে পারবেন, তবে কেবলমাত্র 0.08% স্কোর অপসারণ করুন:

a="a=%s;console.log(a,uneval(a),%.0f-1||9e15)";console.log(a,uneval(a),1-1||9e15)

1

সি, পিরিয়ড 2,100,000,000

unsigned long long i;main(a){i=1;i*=21e8>i;printf(a="ungisned long long i;main(a){i=%d;i*=21e8>i;printf(a=%c%s%2$c,++i,34,a);}",++i,34,a);}

পিএইচপি উত্তর ভিত্তিক (স্পষ্টতই)। আমার সময় থাকলে ব্যাখ্যা সহ আপডেট হবে।



1

পাইথন 2

সময়: 9((99↑↑(9((99↑↑(9((99↑↑(9↑↑5-1))9)-1))9)-1))9)+ +1

এর থেকে সময় বাড়ানোর জন্য @ বুবলারকে ধন্যবাদ 99(99↑↑12)+ +1 এখন

b=0;s="print'b=%d;s=%r;exec s'%(-~b%eval('9**9'*eval('9**9'*eval('9**9'*9**9**9**9**9))),s)";exec s

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

কোডে b=0পরিবর্তন b=1তারপর b=2পর্যন্ত এটি ছুঁয়েছে এবং তাই b=decimal expansion of the periodতারপর ফিরে রিসেটb=0


1
9**9**9**9**9**9**9**9**9**9**9**9**9**9**9**9**9**9অনেক বেশী 9**9**99**99**99**99**99**99**99**99**99**99**99**99। এটি বলেছিল, আপনি eval('9**9'*eval('9**9'*eval('9**9'*9**9**9**9**9)))অনেক বেশি সংখ্যার জন্য এমন কিছু করতে পারেন ।
বুবলার

পেরয়েড মানে কি?
এসএস আন


1
@ মুকুন্দান আমার ধারণা আপনার সময়কাল অর্থ হতে পারে তবে আমি নিশ্চিত নই। আমি বুঝতে পারি টেটারেশন কী।
এসএস আন

@ এসএনএ দুঃখিত, এটি টাইপো ছিল, এটি দেখানোর জন্য ধন্যবাদ
মুকুন্দন

0

গোল> <> 70 বাইট, সময়ের 325883196621297064957600206175719056476804879488288708188003274919860959534770101079512433396348062803055739640225395758790852315876868469390603793729639715908136196505908165227136154287969475839017544811926036808089596209081885772040898530121921794489026069641113281250

অন্যান্য জ্ঞানী সত্যই বড় হিসাবে পরিচিত (3.25E270)

":1=l8:*6+=S&Q~:'~'=Q~~'H#'||lPffXfX=?1:1=Q$~$~|:1)lPffXfX(Q?:|r2ssH##

এটি আসলে আমি 500 বাইট পুনরুক্তি করা উত্তরটির পরিবর্তিত সংস্করণ

":1=l8:*6+=S&Q~:'~'=Q~~'H#'||//if last is equal to 1 and length is 71, delete the delete char, if the last char is '~', delete and push 'H#', which will later return to 'H##', completing the cycle!
lPffXfX=?1:1=Q$~$~|          //if length is equal to 15^15^15, then start delete process(append ascii one)
:1)lPffXfX(Q?:|              //if the last character is not 1 (the delete checker), and length is less than 15^15^15, duplicate the last value and append
r2ssH##                      //push the " to the front and output the whole thing

আশা করি আমি স্কোরটি ঠিকই পেয়েছি, এবং কোনও বাগ নেই। আসলে এই মানটি গণনা করার কোনও আসল উপায় নেই , এটি তাত্ত্বিক। কিন্তু মানুষ, এটাই বিশাল সংখ্যা !!!

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

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