100 বাইটের নিচে আপনি যে ধীর গতিতে বাড়তে পারেন তা তৈরি করুন


23

আপনার কাজটি হ'ল ধীর গতিতে ক্রিয়াকলাপ তৈরি করা যা আপনি 100 বাইটের বেশি আর করতে পারবেন না।

আপনার প্রোগ্রাম ইনপুট হিসাবে একটি nonnegative পূর্ণসংখ্যার হিসাবে নেওয়া হবে, এবং একটি nonnegative পূর্ণসংখ্যার আউটপুট। আসুন আপনার প্রোগ্রাম পি।

এটি অবশ্যই এই দুটি মানদণ্ড পূরণ করবে:

  • এর উত্স কোডটি 100 বাইটের চেয়ে কম বা সমান হতে হবে।
  • প্রত্যেক ট জন্য, একটি এন পায়, তাহলে সেই যে প্রতি এন জন্য> = এন, পি (ঢ)> কে অন্য কথায়, ইন লিম (n-> নোড নেম ∞) পি (ঢ) = ∞ । (এটি "বর্ধমান" হওয়ার অর্থ এটিই))

আপনার "স্কোর" হ'ল আপনার প্রোগ্রামের অন্তর্নিহিত ফাংশনের বৃদ্ধির হার।

আরও সুনির্দিষ্টভাবে, প্রোগ্রাম পি Q এর চেয়ে ধীর গতিতে বৃদ্ধি পায় যদি সমস্ত এন> = এন, পি (এন) <= কিউ (এন) এর জন্য থাকে এবং কমপক্ষে একটি এন> = এন থাকে তবে পি (এন) ) <প্রশ্ন (এন) যদি কোনও প্রোগ্রামই অন্যটির চেয়ে ভাল না হয় তবে এগুলি আবদ্ধ। (মূলত, কোন প্রোগ্রামটি ধীরতর হয় তা লিমের (এন-> ∞) পি (এন) -কিউ (এন) এর উপর ভিত্তি করে )

ধীরে ধীরে বর্ধমান ক্রিয়াকলাপটিকে পূর্বের অনুচ্ছেদে সংজ্ঞা অনুসারে অন্য যে কোনও ক্রিয়াকলাপের চেয়ে ধীর গতিতে বৃদ্ধি পায় বলে সংজ্ঞায়িত করা হয়।

এটি , তাই ধীর ক্রমবর্ধমান প্রোগ্রামটি জয়ী!

নোট:

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


3
একটি কার্যকর কৌশলটি হল একটি দ্রুত বর্ধনশীল ফাংশন লিখুন এবং এর বিপরীতমুখী হওয়া, অর্থাৎ এটির মধ্যে সবচেয়ে ছোট ইনপুট সন্ধান করুন যা কমপক্ষে প্রয়োজনীয় মান উত্পাদন করে। সম্ভবত এই একটি dupe?
xnor

"আরও নির্দিষ্টভাবে" অনুচ্ছেদের একটি তৃতীয়াংশ অনুপস্থিত ছিল কারণ মার্কডাউন মনে করেন যে <কোনও চিঠি অনুসরণ করা এইচটিএমএল ট্যাগের সূচনা। আপনি দয়া করে পোস্ট করার আগে আপনার প্রশ্নগুলির পূর্বরূপ দেখুন: পি
ইটিএইচ প্রডাকশনগুলি

1
আমরা কী বড় কার্ডিনাল অ্যাকোরিওমগুলি ধরে নিতে পারি?
পিটার টেলর

1
আমাদের উত্তরগুলি পরীক্ষা করার জন্য কি টাইম মেশিন সরবরাহ করা হয়েছে?
ম্যাজিক অক্টোপাস উরন

উত্তর:


13

হাস্কেল, 98 বাইট, স্কোর = এফ ε 0 −1 ( এন )

_#[]=0
k#(0:a)=k#a
k#(a:b)=1+(k#(([1..k]>>fst(span(>=a)b)++[a-1])++b))
f n=[k|k<-[0..],k#[k]>n]!!0

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

এটি বেকলেমিশেভের কীট গেম সম্পর্কিত একটি খুব দ্রুত বর্ধমান ফাংশনের বিপরীত গণনা করে । তার বৃদ্ধির হার সাথে তুলনা করা যায় ε 0 , যেখানে α হয় দ্রুত বর্ধনশীল অনুক্রমের এবং ε 0 প্রথম Epsilon সংখ্যা

অন্যান্য উত্তরের সাথে তুলনা করার জন্য, এটি নোট করুন

  • ক্ষয়ক্ষতি 2 এর সাথে তুলনীয় ;
  • পুনরুক্তিযুক্ত ক্ষুদ্রাকর্ষণ ( tetration বা ↑↑ ) f 3 এর সাথে তুলনীয় ;
  • মি তীরগুলির সাথে; f এফ এম + 1 এর সাথে তুলনীয় ;
  • Ackermann ফাংশন সাথে তুলনা করা যায় ω ;
  • অ্যাকারম্যান ফাংশনটির পুনরাবৃত্তিগুলি ( গ্রাহামের সংখ্যার মতো নির্মাণ ) এখনও f ω + 1 দ্বারা প্রাধান্য পায় ;
  • এবং ε 0 সব টাওয়ার ω মাত্রা হল ω ω ω

আমি এখানে বর্ণনা ভাল পছন্দ।
পাইরুলেজ

গুগোলজি উইকির দ্রুত বর্ধমান শ্রেণিবিন্যাসের পরিচিতির একটি লিঙ্ক আপনি রাখতে পারেন
মিল্কিওয়ে 90 ডাব্লু

18

ব্র্যাচল্যাগ , 100 বাইট

llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll

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

এটি সম্ভবত কিছু অভিনব উত্তরগুলির স্লোনেসের কাছাকাছি কোথাও নেই তবে আমি বিশ্বাস করতে পারি না যে কেউই এই সহজ এবং সুন্দর পদ্ধতির চেষ্টা করেছিলেন tried

সহজভাবে, আমরা ইনপুট সংখ্যার দৈর্ঘ্য, তারপরে এই ফলাফলের দৈর্ঘ্য, তারপরে এই অন্যান্য ফলাফলের দৈর্ঘ্য ... মোট 100 বার গণনা করি ।

এটি 100 বেস -10 লগ সহ লগ (লগ (লগ ... লগ (এক্স)) হিসাবে দ্রুত বৃদ্ধি পায়।

আপনি যদি নিজের সংখ্যাটিকে স্ট্রিং হিসাবে ইনপুট করেন তবে এটি যে কোনও ইনপুট আপনি চেষ্টা করতে পারলে এটি অত্যন্ত দ্রুত চলবে, তবে 1: D এর চেয়ে বেশি ফলাফল আর দেখবেন না বলে আশা করবেন না


8
কেবলমাত্র খাঁটি উন্মাদনার জন্য +1: মজাদার ঘটনা: আপনি যদি সমস্ত ক্যাপ তৈরি করেন তবে জেলিতেও কাজ করে। : পি
হাইপার নিউট্রিনো

5
প্রথম সংখ্যা যা 2 বের করে 10 ↑↑ 99।
গম উইজার্ড

11

জাভাস্ক্রিপ্ট (ES6), বিপরীত একারম্যান ফাংশন *, 97 বাইট

* আমি যদি এটি সঠিকভাবে করেন

A=(m,n)=>m?A(m-1,n?A(m,n-1):1):n+1
a=(m,n=m,i=1)=>{while(A(i,m/n|0)<=Math.log2(n))i++;return i-1}

ফাংশন Aহ'ল একারম্যান ফাংশন । ফাংশনটি ইনভার্স অ্যাকারম্যান ফাংশনa বলে মনে করা হচ্ছে । আমি যদি এটি সঠিকভাবে প্রয়োগ করি, উইকিপিডিয়া বলেছে যে এটি সমান না হওয়া পর্যন্ত আঘাত করবে না । আমি কাছাকাছি পেতে ।5m2^2^2^2^16StackOverflow1000

ব্যবহার:

console.log(a(1000))

ব্যাখ্যা:

অ্যাকারম্যান ফাংশন

A=(m,n)=>                           Function A with parameters m and n
         m?                   :n+1  If m == 0, return n + 1; else,
           A(m-1,n?        :1)       If n == 0, return A(m-1,1); else,
                   A(m,n-1)          return A(m-1,A(m,n-1))

বিপরীত একারম্যান ফাংশন

a=(m,n=m,i=1)=>{                                                Function a with parameter m, with n preinitialized to m and i preinitialized to 1
                while(A(i,m/n|0)<=Math.log2(n))                 While the result of A(i, floor(m/n)) is less than log₂ n,
                                               i++;             Increment i
                                                   return i-1}  Return i-1

2
স্ট্যাক ওভারফ্লো যদিও ভাল না?
নন ইনিহির

আপনার বক্তব্য যে মি = 2 ^^ 7 ভুল না হওয়া পর্যন্ত এটি 5 টি আঘাত করবে না। 5 আঘাত না করা পর্যন্ত মি = 2 ^^ 7-3, কিন্তু আছে 2 ^^ 7-1, এটি হল 5. আমি জানি যে -3 হয় খুব 2 ^^ 7, কিন্তু 5A5 = 2 তুলনায় ছোট ^^ 7-3 <2 ^^ 7। (
et টিট্রেশন

8

খাঁটি দুষ্টতা: ইভাল

a=lambda x,y:(y<0)*x or eval("a("*9**9**9+"x**.1"+",y-1)"*9**9**9)
print a(input(),9**9**9**9**9)//1

ইভালের অভ্যন্তরের বিবৃতিটি দৈর্ঘ্যের একটি স্ট্রিং তৈরি করে 7 * 10 10 10 10 10 10 10 8.57 যা ল্যাম্বডা ফাংশনে আরও কিছু কল ছাড়া আর কিছুই থাকে না যার প্রতিটি একই ধরণের দৈর্ঘ্যের একটি স্ট্রিং তৈরি করবে এবং অবশেষে y0 হয়ে যায় Os এটি নীচে এস্কো পদ্ধতির মতোই জটিলতা রয়েছে তবে তবে-এবং-বা নিয়ন্ত্রণ যুক্তির উপর নির্ভর করার পরিবর্তে এটি কেবল একসাথে বিশালাকার স্ট্রিংগুলি টুকরো টুকরো করছে (এবং নেট ফলাফল আরও স্ট্যাক পাচ্ছে ... সম্ভবত?)।

yপাইথন ত্রুটি না ফেলেই আমি যে সরবরাহ করতে পারি এবং গণনা করতে পারি তার বৃহত্তম মানটি 2 যা ইতিমধ্যে 1-এ ফিরে আসার ক্ষেত্রে সর্বোচ্চ-ফ্লোটের একটি ইনপুট হ্রাস করতে যথেষ্ট।

দৈর্ঘ্য 7.625.597.484.987 একটি স্ট্রিং শুধু অত্যন্ত বড়: OverflowError: cannot fit 'long' into an index-sized integer

আমার থামানো উচিত

এশহো Math.log: (সমস্যার দশ) দশকে গিয়ে স্কোর: y = 1 থেকে কার্যকরীভাবে পৃথক পৃথক function

গণিতের পাঠাগারটি আমদানি করা বাইট গণনাটিকে সীমাবদ্ধ করে দিচ্ছে। এটি থেকে দূরে চলে আসুন এবং log(x)ফাংশনটিকে মোটামুটি সমতুল্য কিছু দিয়ে প্রতিস্থাপন করুন : x**.1এবং যার জন্য প্রায় একই সংখ্যক অক্ষর ব্যয় হয়, তবে আমদানির প্রয়োজন হয় না। উভয় ফাংশনের ইনপুট সম্পর্কিত সম্মিলিত আউটপুট রয়েছে তবে এক্স 0.1 আরও ধীরে ধীরে বৃদ্ধি পায় । তবে আমরা পুরোটা যত্ন নিই না, তুলনীয় সংখ্যক অক্ষর ব্যবহার করার সময় এটির বৃহত সংখ্যার সাথে একই ভিত্তি বৃদ্ধির ধরণ রয়েছে (যেমন x**.9, একই সংখ্যক অক্ষর, তবে আরও দ্রুত বৃদ্ধি পায় তাই) হ'ল কিছু মান যা সঠিক একই বৃদ্ধি প্রদর্শিত হবে) same

এখন, 16 টি অক্ষর দিয়ে কী করবেন। কীভাবে ... অ্যাকারম্যান সিকোয়েন্স বৈশিষ্ট্য থাকতে আমাদের ল্যাম্বদা ফাংশনটি বাড়িয়ে দিচ্ছেন? বিপুল সংখ্যক এই উত্তরটি এই সমাধানটিকে অনুপ্রাণিত করে।

a=lambda x,y,z:(z<0)*x or y and a(x**.1,z**z,z-1)or a(x**.1,y-1,z)
print a(input(),9,9**9**9**99)//1

এখানে z**zঅংশটি আমাকে বোধগম্য ইনপুটগুলির নিকটে যে কোনও জায়গায় এই ফাংশনটি চালানো থেকে বাধা দেয় yএবং z, আমি যে বৃহত্তম মানগুলি ব্যবহার করতে পারি তা 9 এবং 3 হ'ল যার জন্য আমি 1.0 এর মান ফিরে পাই, এমনকি বৃহত্তম ভাসমান পাইথন সাপোর্টের জন্যও (নোট: যদিও 1.0 সংখ্যার তুলনায় 7.383838৮8589০৮০৯ এ -০০ এর চেয়ে বেশি, পুনরাবৃত্তির বৃদ্ধি বর্ধিত স্তরগুলি এই ফাংশনটির আউটপুটটিকে 1 এর কাছাকাছি নিয়ে যায়, যেখানে আগের ফাংশনটি 0-এর কাছাকাছি অবস্থিত থাকে তবে 0 এর চেয়ে বেশি থাকে, সুতরাং এই ফাংশনটিতে এমনকি মধ্যম পুনরাবৃত্তিও ঘটে এতগুলি ক্রিয়াকলাপের ফলাফল যা ভাসমান পয়েন্ট সংখ্যাটি সমস্ত উল্লেখযোগ্য বিট হারিয়ে ফেলে ) l

0 এবং 2 এর পুনরাবৃত্তির মানগুলি পেতে মূল ল্যাম্বদা কলটি পুনরায় কনফিগার করা হচ্ছে ...

>>>1.7976931348623157e+308
1.0000000071

যদি তুলনাটি "1 থেকে অফসেট" এর পরিবর্তে "0 থেকে অফসেট" করা হয় তবে এই ফাংশনটি ফিরে আসে 7.1e-9, যা অবশ্যই তুলনায় ছোট 6.7e-05

আসল প্রোগ্রামের বেস রিকার্সন (জেড ভ্যালু) 10 10 10 10 1.97 স্তর গভীর হয়, আপনি নিজেই ক্লান্ত হয়ে পড়লে এটি 10 10 10 10 10 1.97 দিয়ে রিসেট হয়ে যায় (এজন্য 9 টির প্রাথমিক মানই যথেষ্ট) তাই আমি ডন এমনকি মোট পুনরাবৃত্তির সংখ্যার সঠিকভাবে কীভাবে গণনা করা যায় তাও জানেন না: আমি আমার গাণিতিক জ্ঞানের শেষের দিকে পৌঁছেছি। একইভাবে আমি জানি না **nযে প্রাথমিক ইনপুট থেকে দ্বিতীয়টিতে z**zক্ষুদ্রাকর্ষণগুলির কোনও একটি সরানো পুনরাবৃত্তির সংখ্যার উন্নতি করবে কিনা (বিপরীতমুখী)।

আরও বেশি পুনরাবৃত্তি সহ আরও ধীরে ধীরে যেতে দেয়

import math
a=lambda x,y:(y<0)*x or a(a(a(math.log(x+1),y-1),y-1),y-1)
print a(input(),9**9**9e9)//1
  • n//1 - 2 বাইট ওভার সাশ্রয় করে int(n)
  • import math, math.1 বাইট ওভার সাশ্রয় করেfrom math import*
  • a(...) মোট 8 টি বাইট সাশ্রয় করে m(m,...)
  • (y>0)*x একটি বাইট ওভার সাশ্রয়y>0and x
  • 9**9**99বৃদ্ধির আনুমানিক দ্বারা 4 এবং বৃদ্ধি পুনরাবৃত্তির গভীরতা দ্বারা COUNT বাইট 2.8 * 10^xযেখানে xপুরাতন গভীরতা (: 10 বা গভীরতা মাপের একটি googolplex শেষের কাছাকাছি হয় 10 94 )।
  • 9**9**9e9বাইট গণনাটি 5 দ্বারা বৃদ্ধি করে এবং পুনরাবৃত্তির গভীরতা বৃদ্ধি করে ... একটি পাগল পরিমাণ। পুনরাবৃত্তির গভীরতা এখন 10 10 10 9.93 , রেফারেন্সের জন্য, একটি গুগলপ্লেক্স 10 10 10 2 2
  • ল্যামডা ঘোষণা একটি অতিরিক্ত ধাপে পুনরাবৃত্তির বৃদ্ধি: m(m(...))থেকে a(a(a(...)))দাম 7২ বাইট

নতুন আউটপুট মান (9 পুনরাবৃত্তির গভীরতায়):

>>>1.7976931348623157e+308
6.77538853089e-05

পুনরাবৃত্তির গভীরতা সেই বিন্দুতে বিস্ফোরিত হয়েছে যেখানে একই ফলাফলের একই ইনপুট মান ব্যবহার করে পূর্ববর্তী ফলাফলের তুলনায় এই ফলাফলটি আক্ষরিক অর্থহীন:

  • আসলটি log25 বার বলা হয়
  • প্রথম উন্নতি এটি 81 বার কল করে
    • প্রকৃত প্রোগ্রামটি 1e99 কল করবে 2 বা 10 সম্পর্কে 10 2.3 বার
  • এই সংস্করণ এটিকে 729 বার কল করে
    • প্রকৃত প্রোগ্রামটি (9 কল করবে 9 99 ) 3 বা সামান্য কম 10 10 95 বার)।

লাম্বদা ইনসেপশন, স্কোর: ???

শুনেছি তোমাকে ল্যাম্বডাসের মতো, তাই ...

from math import*
a=lambda m,x,y:y<0and x or m(m,m(m,log(x+1),y-1),y-1)
print int(a(a,input(),1e99))

আমি এটি চালাতেও পারছি না, আমি পুনরাবৃত্তির মাত্র 99 স্তর দিয়েও উপচে ফেলেছি ।

পুরানো পদ্ধতি (নীচে) প্রত্যাবর্তন করে (কোনও পূর্ণসংখ্যার রূপান্তরটি এড়িয়ে যায়):

>>>1.7976931348623157e+308
0.0909072713593

নতুন পদ্ধতিটি ফেরত আসবে মাত্র 9 স্তর আক্রমণ (কেবলমাত্র তাদের সম্পূর্ণ গুগলের চেয়ে ) ব্যবহার করে:

>>>1.7976931348623157e+308
0.00196323936205

আমি মনে করি এটি একারম্যান সিক্যুয়েন্সের মতো জটিলতার চেয়ে বড় আকারের পরিবর্তে কেবল ছোট works

এছাড়াও যে জায়গাগুলি আমি বুঝতে পারি নি যেগুলি অপসারণ করা যেতে পারে এমন জায়গাগুলিতে 3-বাইট সঞ্চয় করার জন্য ETH প্রোডাকশনকে ধন্যবাদ।

পুরানো উত্তর:

ল্যাম্বডা ল্যাম্বডাস ব্যবহার করে ফাংশন লগ (i + 1) এর পূর্ণসংখ্যার কাটা 20 25 বার (পাইথন) পুনরাবৃত্তি হয়েছিল ।

পাইআরুলেজের উত্তরটি দ্বিতীয় ল্যাম্বদা প্রবর্তন করে এবং এটি স্ট্যাক করে সংকুচিত করা যেতে পারে:

from math import *
x=lambda i:log(i+1)
y=lambda i:x(x(x(x(x(i)))))
print int(y(y(y(y(y(input()))))))

99 টি অক্ষর ব্যবহৃত হয়েছে।

এটি মূল 12 এর চেয়ে 20 25 এর পুনরাবৃত্তি তৈরি করে , অতিরিক্তভাবে এটি অতিরিক্ত স্ট্যাকের জন্য অনুমতিপ্রাপ্ত int()পরিবর্তে 2 অক্ষর সংরক্ষণ করে । ল্যাম্বদার পরে থাকা স্পেসগুলি যদি সরানো যায় (আমি এই মুহুর্তে চেক করতে পারি না) তবে 5 তম যোগ করা যেতে পারে। সম্ভব!floor()x()y()

যদি from mathপুরোপুরি যোগ্যতাসম্পন্ন নাম ব্যবহার করে আমদানি বাদ দেওয়ার কোনও উপায় থাকে (উদাঃ)x=lambda i: math.log(i+1)) ) আরও বেশি অক্ষর বাঁচাতে পারে এবং অন্য স্ট্যাকের অনুমতি দেবে x()তবে পাইথন এ জাতীয় জিনিস সমর্থন করে কিনা তা আমি জানি না (সন্দেহ করি না)। সম্পন্ন!

এটি মূলত এক্সসি কেডি এর ব্লগ পোস্টে প্রচুর সংখ্যায় ব্যবহৃত একই কৌশল , তবে ল্যাম্বডাস ঘোষণার ক্ষেত্রে ওভারহেড তৃতীয় স্ট্যাককে আটকায় :

from math import *
x=lambda i:log(i+1)
y=lambda i:x(x(x(i)))
z=lambda i:y(y(y(i)))
print int(z(z(z(input()))))

এটি 3 ল্যাম্বডাসের সাথে সম্ভব সবচেয়ে ছোট পুনরাবৃত্তি যা 2 ল্যাম্বডাসের গণিত স্ট্যাকের উচ্চতা ছাড়িয়ে যায় (কোনও ল্যাম্বডা থেকে দুটি কল হ্রাসের জন্য স্ট্যাকের উচ্চতা 18 টি হয়ে যায়, 2-ল্যাম্বদা সংস্করণের চেয়ে নীচে), তবে দুর্ভাগ্যক্রমে 110 টি অক্ষর প্রয়োজন।


এফওয়াইআই, আমি শীর্ষ প্রোগ্রামে 103 বাইট গণনা করি
ইটিএইচ প্রডাকশনস

পছন্দ করুন আমি সম্ভবত intরূপান্তর ছাড়াই একটি গণনা করেছি এবং ভেবেছিলাম আমার কিছু বাড়তি আছে।
ড্রাকো 18s

আমি মনে করি আপনি স্থান importএবং পরে স্থান সরাতে পারবেন y<0। আমি বেশি পাইথন জানি না যদিও আমি নিশ্চিত না
ETH প্রোডাকশন

এছাড়াও, সম্ভবত y<0and x or m(m,m(m,log(x+1),y-1),y-1)অন্য একটি বাইট সংরক্ষণ করা (ধরে xনেওয়া কখনও হয় না is0 যখন y<0)
ETHproductions

2
ভাল ... (ধরণের বড় মানের জন্য ) log(x)যে কোনও ধনাত্মক শক্তির চেয়ে ধীরে ধীরে বৃদ্ধি পায় এবং এল'হোপিটালের নিয়ম ব্যবহার করে এটি দেখানো কঠিন নয়। আমি নিশ্চিত যে আপনার বর্তমান সংস্করণটি পুরো একগুচ্ছ করে। তবে এই শক্তিগুলি কেবল গুণ করে, তাই এটি কার্যকরভাবে , যা একটি (খুব ছোট) ইতিবাচক শক্তি । এর অর্থ এটি লগ ফাংশনের একটি একক পুনরাবৃত্তির চেয়ে দ্রুত বৃদ্ধি পায় (যদিও মঞ্জুর করা হয়েছে, আপনি লক্ষ্য করার আগে আপনাকে অনেক বড় মূল্যবোধের দিকে নজর দিতে হবে ... তবে "অনন্তে যাওয়া" বলতে আমরা এটাই বুঝি )। xx(...(((x**.1)**.1)**.1)** ...)x**(.1** (whole bunch))xx
mathmandan

4

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

f 0 a b=a^b
f c a b=foldr(f$c-1)a$[0..b]>>[a]
i=length.show
0#x=i x
y#x=i$(y-1)#x
g=(f(f 9 9 9)9 9#)

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

এই দ্রবণটি দ্রুত বর্ধমান ক্রিয়াকলাপটিকে বিপরীতে গ্রহণ করে না বরং পরিবর্তে এটি ধীরে ধীরে ক্রমবর্ধমান ফাংশন গ্রহণ করে length.showএবং এটি বেশ কয়েকবার প্রয়োগ করে।

প্রথমে আমরা একটি ফাংশন সংজ্ঞায়িত করি ffকিছুটা দ্রুত বাড়ার জন্য নথের আপোরি সূচনার একটি জারজ সংস্করণ (সামান্য একটি স্বল্পমূলতার কিছুটা হলেও আমরা যে সংখ্যাগুলি নিয়ে কাজ করছি তা এত বড় যে জিনিসগুলির বিশাল পরিকল্পনায় ...)। আমরা বেস ক্ষেত্রে সংজ্ঞায়িত f 0 a bহতে a^bবা aক্ষমতায় b। এরপরে উদাহরণস্বরূপ (f$c-1)প্রয়োগের জন্য আমরা সাধারণ কেসটিকে সংজ্ঞায়িত করি । যদি আমরা কনথের মতো কোনও নথ আপারো নোটেশনটি সংজ্ঞায়িত করে থাকি তবে আমরা এটির উদাহরণগুলিতে প্রয়োগ করব তবে বাস্তবে গল্ফিয়ার এবং দ্রুত বর্ধনের সুবিধা রয়েছে।b+2abab+2

তারপরে আমরা অপারেটরটি সংজ্ঞায়িত করি #। সময় প্রয়োগ করার a#bজন্য সংজ্ঞায়িত length.showকরা হয় b a। প্রতিটি অ্যাপ্লিকেশন length.showপ্রায় 10 লগের সমান যা খুব দ্রুত বর্ধমান ক্রিয়াকলাপ নয়।

এরপরে আমরা আমাদের ফাংশনটি সংজ্ঞায়িত করতে gযা যা পূর্ণসংখ্যার সাথে লাগে এবং length.showবেশ কয়েকবার পূর্ণসংখ্যায় প্রয়োগ হয়। নির্দিষ্ট হতে তা প্রযোজ্য length.showইনপুট f(f 9 9 9)9 9। এটি কতটা বড় তার আগে ুকতে দেওয়া যাক f 9 9 9f 9 9 9হয় তার চেয়ে অনেক বেশী 9↑↑↑↑↑↑↑↑↑9 (নয়টি তীর), একটি বৃহদায়তন মার্জিন দ্বারা। আমি বিশ্বাস করি এটি কোথাও 9↑↑↑↑↑↑↑↑↑9(নয়টি তীর) এবং 9↑↑↑↑↑↑↑↑↑↑9(দশটি তীর) এর মধ্যে রয়েছে। এখন এটি একটি অকল্পনীয় বৃহত সংখ্যা, যেকোন কম্পিউটারে অস্তিত্বের (বাইনারি স্বরলিপিতে) সংরক্ষণ করা অনেক বেশি বড়। তারপরে আমরা এটি নিই এবং এটি আমাদের প্রথম আর্গুমেন্ট হিসাবে রাখি fযার অর্থ আমাদের মানটি তীরের চেয়ে বড় । আমি এই সংখ্যাটি বর্ণনা করছি না কারণ এটি এত বড় যে আমি এটি বিচার করতে সক্ষম হবো বলে মনে করি না।9↑↑↑↑↑↑...↑↑↑↑↑↑9 সঙ্গেf 9 9 9

প্রতি length.show পূর্ণসংখ্যার লগ বেস 10 গ্রহণের সমান। এর অর্থ হ'ল বেশিরভাগ সংখ্যা fতাদের কাছে প্রয়োগ করা হলে 1 টি ফিরে আসবে । 1 ব্যতীত অন্য কিছু ফেরত দেওয়ার সবচেয়ে ক্ষুদ্রতম সংখ্যাটি 10↑↑(f(f 9 9 9)9 9), যা 2 ফিরে আসে a আমরা যে সংখ্যার আগে সংজ্ঞায়িত করেছি তার চেয়ে জঘন্য হিসাবে বৃহত্তর, সবচেয়ে কম সংখ্যক যে 2টি 2 তার নিজস্ব শক্তিতে 10 যা বহুবার ফিরে আসে। থেটস 1 অনুসরণ করেছে 10↑(f(f 9 9 9)9 9)জিরোস।

nক্ষুদ্রতম ইনপুট আউটপুট দেওয়ার সাধারণ ক্ষেত্রে কোনও প্রদত্ত এন অবশ্যই হবে (10↑(n-1))↑↑(f(f 9 9 9)9 9)

মনে রাখবেন যে এই প্রোগ্রামটির জন্য এমনকি ছোট এন (এমনকি মহাবিশ্বের বহুগুণ বেশি রয়েছে) এর জন্য প্রচুর পরিমাণে সময় এবং মেমরি প্রয়োজন, আপনি যদি এটি পরীক্ষা করতে চান তবে আমি f(f 9 9 9)9 9আরও ছোট সংখ্যার সাথে প্রতিস্থাপনের পরামর্শ দিচ্ছি , আপনি চাইলে 1 বা 2 চেষ্টা করুন 1 বাদে অন্য যে কোনও আউটপুট পান।


মেহ, আমি মনে করি না যে এই ধরণের প্রশ্নগুলিতে প্রোগ্রাম চালানোর জন্য কেউ কতক্ষণ সময় নেয় বা কতটা মেমরির প্রয়োজন তা নিয়ে চিন্তা করে।
সুন্দর আর্ট

3

এপিএল, প্রয়োগ করুন log(n + 1), e^9^9...^9বার, যেখানে চেইনের e^9^9...^9দৈর্ঘ্য চেইন বিয়োগের দৈর্ঘ্যের 1 গুণ এবং আরও অনেক কিছু।

⌊((⍟1+⊢)⍣((*⍣(*⍣(*⍣(*⍣(*⍣(*⍣(*⍣(*⍣(*⍣(*⍣(*⍣(*⍣(*⍣(*⍣(*⍣(*⍣(*⍣(*⍣(*⍣(*⍣(*⍣⊢)))))))))))))))))))))9))⊢

আমি কি এটি চালানোর কোনও উপায় আছে?
ড্রাকো 18s

7
@ ড্রাকো 18s কার্যত-অসীম মেমরির সাথে একটি কোয়ান্টাম কম্পিউটার পান, একটি শালীন এপিএল বিতরণ ইনস্টল করুন এবং বার্ধক্য রোধকারী সিরাম তৈরির জন্য অপেক্ষা করার সময়টি ব্যয় করুন, কারণ আপনাকে কয়েক শতাব্দী ধরে শক্ত থাকতে হবে।
উরিল

হা হা। ঠিক আছে তাহলে। : পি
ড্রাকো 18s

আপনি কি নিশ্চিত যে এটি অনন্তের কাছে পৌঁছেছে?
পাইরুলেজ

@ পাইরুলেজ এটি অন্যান্য সমাধানগুলির মতো ঠিক, লগতে আরও অনেকগুলি পুনরাবৃত্তি রয়েছে। তবে আরও পুনরাবৃত্তি এখনও একই সমাপ্তি - ততটা প্রকাশ করে অস্বীকৃতি জানায়। e^n^n...^nঅংশ সম্পর্কে আমি নিশ্চিত ছিলাম না তাই আমি এটিকে ধ্রুবক হিসাবে পরিণত করেছি, তবে এটি সত্য হতে পারে
উরিল

3

এমএটিএল , 42 বাইট

iXI:`2*.]X{oXH1H/16L+XKxI:`Yl.]K+XKXdXzXGx

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

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

যেখানে ~k ~ 1 / 2k

আমি 10000 পর্যন্ত পুনরাবৃত্তি পরীক্ষা করেছি (মতলব এ, যেহেতু এটি টিআইওর জন্য খুব বড়) এবং এটি 10 ​​এর নীচে স্কোর করে, তাই এটি খুব ধীর হয়।

এখানে চিত্র বর্ণনা লিখুন

ব্যাখ্যা:

 iXI      % ask user input (number of iterations)

:`2*.]    % do...while loop, multiply by 2

X{        % convert numeric array into cell array

o         % convert to double precision array 

XH1H/     % copy to clipboard H and divide by 1: now we have an array of 1/2k

16L       % Euler–Mascheroni constant 

+         % addition (element-wise, singleton expansion)

XKxI:`    % save, clear the stack, do...while loop again

  Yl      % logarithm 

  .]      % break, ends the loop

K+XK      % paste from clipboard K, sum all

Xd        % trim: keep the diagonal of the matrix 

Xz        % remove all zeros

XG        % plot (yes it plots on-line too!)

x         % clear the stack
          % (implicit) display

অভিজ্ঞতাগত প্রমাণ: (ln কে ) + 1 সবসময় লাল নীচে ln কে + γ + εk উপরে ।

এখানে চিত্র বর্ণনা লিখুন

(LN) এর জন্য প্রোগ্রাম কে ) + 1 এর তৈরি করা হয়েছিল

মতলব, 47 18 14 বাইট

n=input('')
A=(1:n)
for k=1:n
A(k)=log(k)+1
end

মজার বিষয় লক্ষণীয় যে n = 100 এর জন্য অতিক্রান্ত সময়টি আমার ল্যাপটপে 0.208693s তবে কেবল 0.121945 এর সাথে রয়েছে d=rand(1,n);A=d*0; এবং এর চেয়ে কম, 0.112147 এর সাথে রয়েছে A=zeros(1,n)। শূন্যগুলি যদি জায়গার অপচয় হয় তবে এটি গতি বাঁচায়! তবে আমি বিষয় থেকে সরে যাচ্ছি (সম্ভবত খুব ধীরে)।

সম্পাদনা করুন: স্ট্যাটিকে ধন্যবাদ এই মতলব এক্সপ্রেশনটি হ্রাস করার জন্য, সহজভাবে:

 @(n)log(1:n)+1

কেবলমাত্র একটি দ্রুত ক্রিয়াকলাপের বিপরীত না হয়ে জন্য +1
পাইরুলেজ

1
আপনার আকর্ষণীয় নোট সম্পর্কে একটি আকর্ষণীয় এসও পোস্ট । :)
স্টিভি গ্রিফিন

উপায় দ্বারা, (যেহেতু আপনি বাইট গণনা অন্তর্ভুক্ত) নীচে স্ক্রিপ্ট golfing: শেষ ম্যাটল্যাব স্ক্রিপ্ট কেবল হল: n=input('');A=log(1:n)+1, অথবা একটি নামহীন বেনামী ফাংশন হিসাবে (14 বাইট): @(n)log(1:n)+1। আমি ম্যাটল্যাব সম্পর্কে নিশ্চিত নই, তবে অক্টাভাতে A=log(1:input(''))+1কাজ করি ...
স্টিভি গ্রিফিন

আপনাকে ধন্যবাদ @ স্টিও n=input('');A=log(1:n)+1কাজ করে @(n)log(1:n)+1না, (মতলব-এ হ্যান্ডেল সহ একটি কার্যকর ফাংশন, তবে ইনপুট জিজ্ঞাসা করা হয়নি), A=log(1:input(''))+1কাজ করে এবং সংক্ষিপ্ত করা যায়log(1:input(''))+1
জে দো

বেনামে ফাংশনটি দিয়ে আমি যা বোঝাতে চেয়েছি তা হ'ল এটি । বাইটগুলি সংরক্ষণ করার এই "সাধারণ" উপায় (কমপক্ষে এই সাইটে) ইনপুট প্রয়োজনীয়তার মাধ্যমে কমান্ড লাইনের পরিবর্তে ফাংশন আর্গুমেন্ট (মেটা-পোস্ট) হিসাবে দেওয়া হয় given এছাড়াও, f=গণনা করার দরকার নেই, যেহেতু কেবল এটি করা সম্ভব: প্রথম 10 নম্বর পেতে @(n)log(1:n)+1অনুসরণ করা ans(10)
স্টিভি গ্রিফিন

2

পাইথন 3 , 100 বাইট

ফাংশন লগের ফ্লোর (i + 1) 9999999999999999999999999999999999999 বার পুনরুক্ত হয়েছিল।

উপরের সংখ্যাটিকে আরও বৃহত্তর করে তুলতে কেউ এক্সটেন্ডার ব্যবহার করতে পারেন ...

from math import *
s=input()
exec("s=log(s+1);"*99999999999999999999999999999999999)
print(floor(s))

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


2
সমাধানগুলি কি আসলে কাজ করে? এটি একটি ওভারফ্লো এয়ারর ফেলে দেয়।
ইটিএইচ প্রডাকশনগুলি

2
@ ETH যেমন সমস্যার মধ্যে প্রডাকশন, এটি সাধারণত গৃহীত হয় যে সমাধানগুলি কেবল তাত্ত্বিকভাবে কার্যকর হতে হবে, অসীম স্মৃতি এবং সিপিইউযুক্ত একটি মেশিনে solutions আপনি যদি এটি চেষ্টা করতে চান তবে 99999 ... 999 কেটে কেবল 999 বা তার বেশি কেটে দিন
স্পার

3
তাহলে কেন ব্যবহার 9**9**9**...**9**9e9করবেন না ?
ক্যালকুলেটরফলাইন

2

ফাংশন লগের তল (i + 1) 14 বার পুনরুক্ত করা হয়েছে (পাইথন)

import math
x=lambda i: math.log(i+1)
print int(x(x(x(x(x(x(x(x(x(x(x(x(x(x(input())))))))))))))))

আমি এটি খুব ভাল করবে আশা করি না তবে আমি এটির একটি ভাল সূচনা অনুভব করেছি।

উদাহরণ:

  • e ^ n ^ n ^ n ^ n ^ n ^ n ^ n ^ n ^ n ^ n ^ n ^ n ^ n -> ~ n (প্রায় এন)

আপনি যদি এর intপরিবর্তে ব্যবহার করেন তবে আপনি floorঅন্যটিতে ফিট করতে পারেনx(
বিটা ডিকায়

@ বেটাডেকে ঠিক আছে আমি এটি আপডেট করেছি।
পাইরুলেজ

1
ভাব প্রকাশ করা উচিত নয় e^e^e^e...^n? এছাড়াও, কেন পরে একটি জায়গা আছে :?
ক্যালকুলেটরফলাইন

@ ক্যালকুলেটরফলাইন কারণ এটি কোড গল্ফ নয়, এটি কেবল 100 বাইটের নিচে হওয়া প্রয়োজন।
সাইয়েস

তাই? বাইট সংরক্ষণের এত খারাপ কী যাতে আপনি অন্য x()কল যুক্ত করতে পারেন ?
ক্যালকুলেটরফলাইন

2

রুবি, 100 বাইট, স্কোর -1 = চ ω ω + 1 (এন 2 )

মূলত আমার বৃহত্তম সংখ্যা মুদ্রণযোগ্য থেকে ধার করা , আমার প্রোগ্রামটি এখানে:

->k{n=0;n+=1 until(H=->z,a=[0]*z{b,*c=a;z.times{z+=b ?H[z,b==1?c:[b>1?b-1:z]*z+c]:z};z};H[n*n]>k);n}

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

মূলত দ্রুত বর্ধমান শ্রেণিবিন্যাসে f ω ω + 1 (n 2 ) এর বিপরীত গণনা করে । প্রথম কয়েকটি মান

x[0] = 1
x[1] = 1
x[2] = 1
x[3] = 1
x[4] = 2

এবং তারপর এটি 2খুব দীর্ঘ সময়ের জন্য আউটপুট অবিরত থাকে । এমনকি x[G] = 2, Gগ্রাহামের নম্বরটি কোথায় ।


তবে জি সম্পর্কে কী হবে (f <sub> 009001CK </sub> 3) এফ এফজিএইচ কোথায়?
ব্যবহারকারী 75200

@ user75200 fg অসম্পূর্ণযোগ্য অর্ডিনালগুলির জন্য ভালভাবে সংজ্ঞায়িত হয়নি defined
সহজ সুন্দর শিল্প

এফজিএইচ অসমর্থনীয় অর্ডিনালগুলির জন্য ভালভাবে সংজ্ঞায়িত করা হয়েছে, কারণ তাদের মৌলিক ক্রম রয়েছে। এটি কেবল আপোনাযোগ্য।
ব্যবহারকারী 75200

@ ব্যবহারকারী 75200 নং মৌলিক ক্রমগুলি খুব স্বেচ্ছাসেবী। আমি ω9001CK সংজ্ঞায়িত করতে পারে [X] = এক্স দৈর্ঘ্য ω9001CK, যার মধ্যে একটি মৌলিক ক্রম আছে হয় জন্য সসীম এক্স গণনীয়, কিন্তু খুব সম্ভবত কি আপনি চেয়েছিলেন। "সুস্পষ্টভাবে সংজ্ঞায়িত" দ্বারা আমি বোঝাতে চেয়েছি যে আপত্তিযোগ্য অধ্যাদেশগুলির জন্য প্রত্যেকে সম্মত হতে পারে তার জন্য কোনও মানিক মৌলিক অনুক্রম নেই।
সহজ সুন্দরী শিল্প

যদিও এটি সত্য যে মৌলিক ক্রমগুলি অনন্য নয়, একটি গণনাযোগ্য অর্ডিনালের জন্য একটি মৌলিক অনুক্রম দৈর্ঘ্যের হতে পারে be
অ্যান্ডারস কাসের্গ

0

গণিত, 99 বাইট

(ধরে নিচ্ছি 1 1 বাইট লাগে)

0±x_=1±(x-1);y_±0=y+1;x_±y_:=(y-1)±x±(x-1);(i=0;NestWhile[(++i;#±#±#±#±#±#±#±#)&,1,#<k&/.k->#];i)&

প্রথম 3 টি কমান্ড x±yমূল্যায়ন করার জন্য সংজ্ঞা দেয় Ackermann(y, x)

f(#)=#±#±#±#±#±#±#±#প্যারামিটারের মানটি পাওয়ার আগে ফাংশনের ফলাফলটি 1 বার প্রয়োগ করা দরকার। যেমন f(#)=#±#±#±#±#±#±#±#(যেটি f(#)=Ackermann[Ackermann[Ackermann[Ackermann[Ackermann[Ackermann[Ackermann[#, #], #], #], #], #], #], #]) খুব দ্রুত বৃদ্ধি পায়, ফাংশনটি খুব ধীর গতিতে বৃদ্ধি পায়।


0

ক্লোজার, 91 বাইট

(defn f (apply +(for[n(range %)](/(loop[r 1 v n](if(< v 1)r(recur(* r v)(Math/log v))))))))

যে রকমের গণনা করে sum 1/(n * log(n) * log(log(n)) * ...), যা আমি এখান থেকে পেয়েছি । তবে ফাংশনটি 101 বাইট দীর্ঘ শেষ হয়েছিল তাই আমাকে স্পষ্ট সংখ্যার পুনরাবৃত্তি বাদ দিতে হয়েছিল, এবং পরিবর্তে যতক্ষণ সংখ্যাটি একের চেয়ে বেশি হবে ততবার পুনরাবৃত্তি করতে হবে। ইনপুটগুলির জন্য আউটপুট উদাহরণ 10^i:

0 1
1 3.3851305685279143
2 3.9960532565317575
3 4.232195089969394
4 4.370995106860574
5 4.466762285601703
6 4.53872567524327
7 4.595525574477128
8 4.640390570825608

আমি ধরে নিয়েছি এই পরিবর্তিত সিরিজটি এখনও ডাইভারেজ করেছে তবে এখন কীভাবে এটি প্রমাণ করতে হয় তা জানি না।

আংশিক শর্তগুলি 10 এর বেশি হওয়ার আগে তৃতীয় সিরিজটির জন্য একটি গুগলপ্লেক্স সংখ্যার প্রয়োজন।


0

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

(p=j=>i=>h=>g=>f=>x=>x<2?0:1+p(p(j))(j(i))(i(h))(h(g))(g(f))(f(x)))(_=x=>x)(_)(_)(_)(Math.log)

ব্যাখ্যা :

Idx => xনিম্নলিখিত নিম্নলিখিত বোঝায় ।

প্রথমে একবার দেখে নেওয়া যাক:

p = f => x => x < 2 ? 0 : 1 + p(p(f))(f(x))

p(Math.log)প্রায় সমান log*(x)

p(p(Math.log))প্রায় সমান log**(x)( log*মান সর্বাধিক 1 না হওয়া পর্যন্ত আপনি যে পরিমাণ সময় নিতে পারেন )।

p(p(p(Math.log)))প্রায় সমান log***(x)

বিপরীতমুখী অ্যাকারম্যান ফাংশনটি মান সর্বাধিক 1 না হওয়া অবধি আপনার alpha(x)রচনা করার জন্য সর্বনিম্ন সংখ্যার প্রায় সমান p

আমরা যদি তখন ব্যবহার করি:

p = g => f => x => x < 2 ? 0 : 1 + p(p(g))(g(f))(f(x))

তারপর আমরা লিখতে পারেন alpha = p(Id)(Math.log)

এটি বেশ বিরক্তিকর, তবে, সুতরাং স্তরগুলির সংখ্যা বাড়িয়ে তুলি:

p = h => g => f => x => x < 2 ? 0 : 1 + p(p(h))(h(g))(g(f))(f(x))

এটি আমরা কীভাবে alpha(x)তৈরি না করে তৈরি করার মতো log**...**(x), এখন তা করিalpha**...**(x)

তবে এখানে কেন থামবেন?

p = i => h => g => f => x => x < 2 ? 0 : 1 + p(p(i))(i(h))(h(g))(g(f))(f(x))

পূর্ববর্তী ফাংশন হয়, তাহলে f(x)~alpha**...**(x), এই এক এখন ~ f**...**(x)। আমরা আমাদের চূড়ান্ত সমাধান পেতে এর আরও একটি স্তর করি।


" p(p(x => x - 2)) প্রায় সমান log**(x)( log*মান সর্বাধিক 1 না হওয়া পর্যন্ত আপনি যে পরিমাণ সময় নিতে পারেন )"। আমি এই বক্তব্য বুঝতে পারি না। এটি আমার কাছে মনে হয় p(x => x - 2)" 2মান সর্বাধিক 1 না হওয়া পর্যন্ত আপনি কতবার বিয়োগ করতে পারবেন" হওয়া উচিত । অর্থাৎ, p (x => x - 2) "2 দ্বারা বিভাজন" ফাংশন হওয়া উচিত। অতএব p(p(x => x - 2))"মান সর্বাধিক 1 না হওয়া পর্যন্ত আপনি 2 দ্বারা বিভাজন করতে পারেন এমন সংখ্যা হওয়া উচিত ... ... এটি logফাংশন হওয়া উচিত , না log*বা log**। সম্ভবত এটি স্পষ্ট করা যেতে পারে?
ম্যাথমন্ডন

@ মাথমান্ডান দেখে মনে হচ্ছে যে আমি সেই লাইনে একটি টাইপো তৈরি করেছি, এটি হওয়া উচিত p = f => x => x < 2 ? 0 : 1 + p(p(f))(f(x)), অন্যান্য লাইনের মতো যেখানে pপাস করা হবে p(f), তা নয় f
es1024
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.