সংক্ষিপ্ততম সমাপনী প্রোগ্রাম যার আউটপুট আকার গ্রাহামের সংখ্যার বেশি ex


37

নিম্নলিখিত প্রয়োজনীয়তাগুলি সন্তুষ্ট করে সংক্ষিপ্ততম প্রোগ্রাম (দৈর্ঘ্য বাইটে পরিমাপ করা) লিখুন:

অনুমান প্রোগ্রাম পর্যন্ত "স্বাভাবিক" একটি অন পরিসমাপ্তি চালানো আদর্শ কম্পিউটার 1 এক্সেস সীমাহীন সম্পদ করতে সক্ষম, এবং সাধারণ প্রোগ্রামিং ভাষার প্রয়োজনে এটি মঞ্জুরি দিতে (সিনট্যাক্স পরিবর্তন না করে) সংশোধন করছেন। এই অনুমানগুলির কারণে, আমরা এটিকে এক ধরণের গেডাঙ্কনেক্স্পেরিমেন্ট বলতে পারি।

জিনিস শুরু করতে এখানে একটি 73-বাইট রুবি প্রোগ্রাম যা দ্রুত বর্ধমান শ্রেণিবিন্যাসে f ω + 1 (99) গণনা করে :

f=proc{|k,n|k>0?n.times{n=f[k-1,n]}:n+=1;n};n=99;n.times{n=f[n,n]};puts n

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


এটি আমার টিটারেশন প্রশ্নটিকে পুরো নতুন স্তরে নিয়ে যায়!
মিঃজান্ডার

1
একবার বিগনাম বেকওফ নামে একটি অনুরূপ প্রোগ্রামিং প্রতিযোগিতা ছিল। কিছু এন্ট্রি বেশ আকর্ষণীয়; ফলাফলগুলি এখানে: djm.cc/bignum-results.txt
ড্যানি চিয়া

উত্তর:


11

গল্ফস্ক্রিপ্ট ( 49 47 টি)

4.,{\):i\.0={.0+.({<}+??\((\+.@<i*\+}{(;}if.}do

প্রচুর ব্যাখ্যার জন্য একটি পোকার লাইফটাইম দেখুন । সংক্ষেপে, এটি f ω ω (2) এর চেয়ে বড় একটি সংখ্যা মুদ্রণ করে ।


f_ (ω ^ ω) (2) প্রায় g_ (f_8 (8)) এর মতো বড়, তাই অভিব্যক্তির বোঝার মতো ওভারকিল নয়।
কেবল সুন্দর আর্ট

21

Haskell,, 59 57 55 63

(f%s)1=s;(f%s)n=f.(f%s)$n-1
main=print$((flip((%3)%(3^))3)%4)66

এটি কীভাবে কাজ করে: %কেবল একটি ফাংশন নেয় এবং n-1উপরে এটি বার বার রচনা করে s; অর্থাত্ %3একটি ফাংশন নেয় fএবং এর ক্রিয়াকলাপটি একই সাথে nএটি প্রয়োগ করে f3 টি, n-1একটানা কয়েকবার। যদি আমরা এই উচ্চ-আদেশ ক্রিয়াকলাপটির পুনরাবৃত্তি করি, তবে আমরা কার্যকারিতাগুলির দ্রুত বর্ধমান ক্রম পাই - ক্ষতচিহ্ন দিয়ে শুরু করে, এটি হ'ল নুথ-তীর-বন মাপের ক্রম:
((%3)%(3^))1 n = (3^)n     = 3ⁿ = 3↑n
((%3)%(3^))2 n = ((3^)%3)n = (3↑)ⁿ⁻¹ $ 3 = 3↑↑n
((%3)%(3^))3 n = (((3^)%3)%3)n = (3↑↑)ⁿ⁻¹ $ 3  = 3↑↑↑n
এবং আরও কিছু। ((%3)%(3^))n 3হয় 3 ↑ⁿ 3যা কি গ্রাহামের সংখ্যার হিসাব প্রদর্শিত। যা করতে হবে তা হ'ল ফাংশনটি রচনা করা(\n -> 3 ↑ⁿ 3) ≡ flip((%3)%(3^))3গ্রাহামের সংখ্যার চেয়ে আরও বড় সংখ্যা পেতে, 4 এর উপরে (গণনা শুরু হওয়া তীর সংখ্যা) এর উপরে, 64 বারেরও বেশি। এটি সুস্পষ্ট যে লোগারিদম (এটি কি এক লম্বা ধীর ফাংশন!) এর g₆₅চেয়েও বড় g₆₄=G, তাই আমরা যদি সেই সংখ্যাটি প্রিন্ট করি তবে আউটপুট দৈর্ঘ্য অতিক্রম করে G


যখন আমি এটি দিয়ে পরীক্ষা করি print$((flip((%3)%(3*))3)%2)1, রান-টাইম ত্রুটি আছে - আপনি বলতে পারেন কেন? এটি সফল হয় যখন 2পরিবর্তিত হয় 1(আউটপুট 81 হয়)।
মাঝামাঝি

ওহ ... আইডিয়োন মনে হয় 32-বিট সংস্করণটি চালাচ্ছে, তাই এটি Intদ্রুত উপচে পড়ে যায়। একটি 64-বিট সিস্টেমে, যা পুনরুত্পাদন করতে অত্যধিক মেমরি গ্রহণ করে, তবে অবশ্যই এটি এখনও পৌঁছতে দেয় না G। আমার (বিগ-ইন) Integerটাইপ দরকার, তাই আমি ব্যবহার করতে পারি না !!; অপেক্ষা করুন ...
পাল্টা

এখনই এটি ঠিক করা হয়েছে, বাস্তবায়নের জন্য সুস্পষ্ট পুনরাবৃত্তি ব্যবহার করতে হয়েছিল %
জবাবদিহি করা বন্ধ করে দিয়েছে

আমি ((%3)%(3*))2 nআসলে আপনার বলার চেয়ে দ্রুত বৃদ্ধি পেয়েছি (একটি ভাল জিনিস) তবে আমার হাস্কেল-ফু কেন তা বুঝতে অপ্রতুল। জন্য n = 0, 1, 2, ..., দান পরিবর্তে 3, 3^3, 3^(3^3), ..., এটা দেয় 3, 3^(3+1), 3^((3^(3+1))+1), ...
রেস

আমি যেমন বলেছি: " ((%3)%(3*))n 3হয় বৃহত্তর তুলনায় 3 ↑ⁿ 3"। না আপনি অন্য কিছু বোঝাতে চান? যাইহোক, আমি সংজ্ঞাটি পরিবর্তন করেছি যাতে এটি সমস্ত সাম্যতাগুলি (কমপক্ষে আমার মনে হয়, এখনই চেক করতে অলস হয়ে ...) বরং বড়-থানদের চেয়ে। এবং আপনি যদি পরিবর্তিত 66হন 65, এটি আসলে Gনিজেই উত্পাদন করে, এতো সুন্দর না?
পাল্টা

5

পাইথ , 29 28 বাইট

M?*GHgtGtgGtH^ThH=ZTV99=gZTZ

হাইপার-অপারেশনের জন্য একটি ল্যাম্বডা সংজ্ঞায়িত করে এবং পুনরাবৃত্তভাবে এটি কল করে। গ্রাহামের সংখ্যার জন্য সংজ্ঞাটি পছন্দ করুন তবে বড় মান সহ with

এই:

M?*GHgtGtgGtH^3hH

একটি ল্যাম্বডা সংজ্ঞা দেয়, মোটামুটি পাইথনের সমান

g = lambda G, H:
  g(G-1, g(G, H-1)-1) if G*H else 3^(H+1)

এটি হাইপার-অপারেশন ফাংশন দেয়, জি (জি, এইচ) = 3 ↑ জি + 1 (এইচ + 1)।
সুতরাং, উদাহরণস্বরূপ, g (1,2) = 3 ↑ 2 3 = 7,625,597,484,987, যা আপনি এখানে পরীক্ষা করতে পারেন

V<x><y>একটি লুপ শুরু হয় যা শরীরকে y, xসময়কে কার্যকর করে।
=gZTএখানে লুপের দেহ, যা সমানZ=g(Z,10)

কোড:

M?*GHgtGtgGtH^3hH=Z3V64=gZ2)Z

গ্রাহামের নম্বর দিয়ে পুনরাবৃত্তভাবে above৪ বারের উপরে হাইপারোপরেশন কল করা উচিত।

আমার উত্তরে, তবে, আমি একক সংখ্যার সাথে প্রতিস্থাপন করেছি T, যা প্রাথমিকভাবে 10 এ পরিণত হয়েছে এবং পুনরাবৃত্তির গভীরতা 99 এ বৃদ্ধি পেয়েছে Gra গ্রাহাম অ্যারে নোটেশনটি ব্যবহার করে গ্রাহামের সংখ্যা [3,3,4,64], এবং আমার প্রোগ্রামটি বৃহত্তর [10,11,11,99] আউটপুট করে। আমি )এমন একটি অপসারণও করেছি যা একটি বাইট সংরক্ষণ করতে লুপটি বন্ধ করে দেয়, তাই এটি 99 পুনরাবৃত্তিতে প্রতিটি ধারাবাহিক মান মুদ্রণ করে।


3

পাইথন (111 + এন), n = দৈর্ঘ্য (এক্স)

যদিও এটি উত্তরদাতার রুবি প্রোগ্রামের মতো ছোট নয়, তবে এই সম্ভাবনাটি অস্বীকার করার জন্য, আমি যাইহোক এটি পোস্ট করব।

এটি অ্যাকারম্যান ফাংশনটি ব্যবহার করে এবং একারম্যান ফাংশনটিকে এম এবং এন সহ কল ​​করে যা অন্য কল থেকে অ্যাকারম্যান ফাংশনে মান হয় এবং 1000 বার পুনরাবৃত্তি করে।

এটি গ্রাহামের সংখ্যার চেয়ে সম্ভবত বড়, তবে আমি নিশ্চিত নই, কারণ এর সঠিক দৈর্ঘ্য কেউ জানে না। এটি বড় না হলে সহজেই বাড়ানো যেতে পারে।

x=999
b='A('*x+'5,5'+')'*x
def A(m,n):n+1 if m==0 else A(m-1,A(m,n-1)if n>0 else 1)
exec('print A('%s,%s')'%(b,b))

stdout যাও আউটপুট? এছাড়াও, আপনার একটি returnবিবৃতি বা একটি দরকার lambda
বুথবি

7
এছাড়াও যদি এ (এম, এন) একক মান ফেরত দেয়, তবে এ (এ (5,5)) আর্গুমেন্ট মিস করছে না? ... এটি এর মতো চ্যালেঞ্জের সাথে সমস্যা: এটি লোককে তাদের কোডটি পরীক্ষা না করার জন্য উত্সাহ দেয়, কারণ একটি সম্পূর্ণ রান খাঁটি তাত্ত্বিক।
ব্রেডবক্স

আপনি যদি আপনার শেষ লাইনটি এর সাথে প্রতিস্থাপন করেন exec'x=A(x,x);'*x;print xতবে প্রোগ্রামটি ঠিক আছে এবং আউটপুট আনুমানিক f_ (ω + 1) (x) (একারম্যান ফাংশন কোডটি সঠিক বলে ধরে নেওয়া হয়), এতে x = 99 এর জন্য জি বাইটেরও বেশি রয়েছে বলে, । (আমার রুবি অনুষ্ঠানে f[m,n]একটি সংস্করণ A(m,n)।)
মাঝামাঝি

@ ব্রেডবক্স - উত্তম পয়েন্ট ... এর মতো তাত্ত্বিক প্রশ্নগুলির জন্য আমাদের নিশ্চিত হওয়া দরকার যে কোনও প্রোগ্রাম ছোট-পরামিতিগুলির (যেমন নন-তাত্ত্বিক) পরীক্ষার ক্ষেত্রে ঠিক আছে, যা সঠিক উত্তর দেওয়ার জন্য স্পষ্টতই সাধারণীকরণ করে।
মাঝামাঝি

1
এটি দীর্ঘ, তবে আপনি যদি এর evalপরিবর্তে ব্যবহার করতে চান তবে execআপনার শেষ লাইনটি হতে পারে f=lambda x:A(x,x);print eval('f('*x+'x'+')'*x)। এছাড়াও, বুথবাইয়ের মন্তব্যে আপনার ডি (ডি, এম) এর সংশোধন করা দরকার।
মাঝামাঝি

2

রুবি, 54 52 50 বাইট

f=->b{a*=a;eval"f[b-1];"*b*a};eval"f[a];"*a=99;p a

রুবি, 85 81 76 71 68 64 63 59 59 বাইট

f=->a,b=-a{eval"a*=b<0?f[a,a]:b<1?a:f[a,b-1];"*a};p f[99]

খুব বেশি দ্রুত বর্ধমান শ্রেণিবিন্যাস f (a + 1)> f much + 1 (এ) দিয়ে।


রুবি, 61 বাইট

f=->a,b=-a{a<0?9:b==0?a*a:f[f[a-1,b],b>0?b-1:f[a,b+1]]};f[99]

মূলত একটি মোড় সহ একটি অ্যাকারম্যান ফাংশন।


রুবি, 63 59 বাইট

n=99;(H=->a{b,*c=a;n.times{b ?H[[b-1]*n*b+c]:n+=n}})[n];p n

আরেকটি রুবি, 74 71 বাইট

def f(a,b=a)a<0?b:b<0?f(a-1):f(a-1,f(a,b-1))end;n=99;n.times{n=f n};p n

মূলত একারম্যান নিজেই 99 বার কাজ করে।


0

পাইথন: 85

f=lambda a,a:a*a
exec'f=lambda a,b,f=f:reduce(f,[a]*b,1)'*99
exec'f('*64+'3'+',3)'*64

হয়তো করতে সংক্ষিপ্ত করা যেতে পারে যা 74 + +length(X) :

f=lambda a,a:a*a
exec'f=lambda a,b,f=f:reduce(f,[a]*b,1)'*int('9'*X)
f(3,3)

গ্রাহাম সংখ্যার চেয়ে বেশি Xফলস্বরূপ হাইপারোপরেশন যেখানে যথাযথ বড় সংখ্যা যেখানে 3, 3(যদি এই সংখ্যাটি এর চেয়ে কম হয় 99999999999তবে কিছু বাইট সংরক্ষণ করা হয়)।


দ্রষ্টব্য: আমি ধরে নিই যে পাইথন কোডটি ইন্টারেক্টিভ ইন্টারপ্রেটারে কার্যকর করা হয় ফলে ফলাফলটি স্টাডাউটে মুদ্রিত হয়, অন্যথায় 9কলটির জন্য প্রতিটি সমাধানে বাইট যুক্ত করুন print


2
আপনার ish৪ টি বাইট সমাধানটি যথেষ্ট পরিমাণে বড় আউটপুট উত্পাদন করে না।
lirtosiast

0

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

অন্য একারম্যান ফাংশন সমাধান।

(function a(m,n,x){return x?a(a(m,n,x-1),n,0):(m?a(m-1,n?a(m,n-1):1):n+1)})(9,9,99)

0

জাভাস্ক্রিপ্ট, 68 বাইট, তবে ES6 ব্যবহারের জন্য খালি ছাড়াই

a=(x,y)=>y?x?a(a(x-1,y)*9,y-1):a(9,y-1):x;b=x=>x?a(9,b(x-1)):9;b(99)

a ফাংশনটি বেস 9 সহ আপ-তীর চিহ্নের সমান।

       /a(a(x-1,y)*9,y-1)  x>0, y>0
a(x,y)=|a(9,y-1)           x=0, y>0
       \x                  y=0

bফাংশনটি হ'ল: বি (এক্স) = বি এক্স (9)।

b(99)গ্রাহামের নম্বর <f ω + 1 (64) এর সাথে তুলনা করে ~ f ~ + 1 (99 )।


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