শর্তাবলী
একটি কীট নন-নেগেটিভ পূর্ণসংখ্যার কোনো তালিকা, এবং তার ডানদিকের (অর্থাত, গত ) উপাদান বলা হয় মাথা । মাথা 0 না হয়, কীট একটি হয়েছে সক্রিয় সেগমেন্ট গঠিত উপাদানের দীর্ঘতম সংলগ্ন ব্লক যে মাথা অন্তর্ভুক্ত এবং মাথা মত বৃহৎ অন্তত তার উপাদানের সব আছে । কমে সক্রিয় সেগমেন্ট মাথা হল 1. উদাহরণস্বরূপ দ্বারা decremented সক্রিয় সেগমেন্ট হয়, কীট 3 1 2 3 2
সক্রিয় সেগমেন্ট হয়েছে 2 3 2
কমে সক্রিয় সেগমেন্ট, এবং2 3 1
।
বিবর্তনের নিয়ম
একটি কৃমি নিম্নলিখিত ধাপে ধাপে বিকশিত হয়:
পদক্ষেপ টিতে (= 1, 2, 3, ...),
যদি মাথা 0 হয়:
অন্যথায় মাথাটি মুছুন : সক্রিয় বিভাগটিকে টি + 1 দ্বারা হ্রাস করা সক্রিয় বিভাগের প্রতিলিপি দ্বারা প্রতিস্থাপন করুন।
ঘটনা : যে কোনও কৃমি অবশেষে খালি তালিকায় বিকশিত হয় এবং এটি করার পদক্ষেপের সংখ্যাটি হ'ল পোকার জীবদ্দশায় ।
( ডি ডি বেকলেমিশেভের একটি কাগজ ওয়ার্ম প্রিন্সিপালে বিশদটি পাওয়া যাবে। একটি সীমাবদ্ধ ক্রম বোঝাতে "তালিকা" ব্যবহার করা এবং তার শেষ উপাদানটির অর্থ "মাথা" ব্যবহার করা এই কাগজ থেকে নেওয়া হয়েছে - এটি বিভ্রান্ত হওয়া উচিত নয়) বিমূর্ত ডেটা টাইপ হিসাবে তালিকার সাধারণ ব্যবহারের সাথে , যেখানে মাথাটি সাধারণত প্রথম উপাদানটিকে বোঝায় )
উদাহরণ (প্রথম বন্ধনীতে সক্রিয় বিভাগ)
কৃমি: 0,1
step worm
0(1)
1 0 0 0
2 0 0
3 0
4 <- lifetime = 4
কৃমি: 1,0
step worm
1 0
1 (1)
2 0 0 0
3 0 0
4 0
5 <- lifetime = 5
কৃমি: 1,1
step worm
(1 1)
1 1 0 1 0
2 1 0(1)
3 1 0 0 0 0 0
4 1 0 0 0 0
5 1 0 0 0
...
8 (1)
9 0 0 0 0 0 0 0 0 0 0
10 0 0 0 0 0 0 0 0 0
...
18 0
19 <- lifetime = 19
কৃমি: 2
step worm
(2)
1 (1 1)
2 1 0 1 0 1 0
3 1 0 1 0(1)
4 1 0 1 0 0 0 0 0 0
5 1 0 1 0 0 0 0 0
6 1 0 1 0 0 0 0
...
10 1 0(1)
11 1 0 0 0 0 0 0 0 0 0 0 0 0 0
12 1 0 0 0 0 0 0 0 0 0 0 0 0
...
24 (1)
25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
...
50 0
51 <- lifetime = 51
কৃমি: ২,০০০
(2 1)
1 2 0 2 0
2 2 0(2)
3 2 0(1 1 1 1)
4 2 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0
5 2 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0(1 1 1)
6 2 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0
7 2 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0(1 1)
8 2 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0{1 0}^9
...
?? <- lifetime = ??
কৃমি: ৩
step worm
(3)
1 (2 2)
2 (2 1 2 1 2 1)
3 2 1 2 1 2 0 2 1 2 1 2 0 2 1 2 1 2 0 2 1 2 1 2 0
4 2 1 2 1 2 0 2 1 2 1 2 0 2 1 2 1 2 0 2 1 2 1(2)
5 2 1 2 1 2 0 2 1 2 1 2 0 2 1 2 1 2 0(2 1 2 1 1 1 1 1 1 1)
6 2 1 2 1 2 0 2 1 2 1 2 0 2 1 2 1 2 0{2 1 2 1 1 1 1 1 1 0}^7
7 2 1 2 1 2 0 2 1 2 1 2 0 2 1 2 1 2 0{2 1 2 1 1 1 1 1 1 0}^6 (2 1 2 1 1 1 1 1 1)
... ...
?? <- lifetime = ??
সরাইয়া
মান পরিপ্রেক্ষিতে নিম্নলিখিত নিম্ন সীমা দ্বারা প্রদর্শিত পোকায় আক্রান্ত জীবনকালের, সাধারণত বড় আকার ধারন করবে দ্রুত বর্ধনশীল অনুক্রমের ফাংশন চ এর α :
worm lower bound on lifetime
---------------- ------------------------------------------
11..10 (k 1s) f_k(2)
2 f_ω(2)
211..1 (k 1s) f_(ω+k)(2)
2121..212 (k 2s) f_(ωk)(2)
22..2 (k 2s) f_(ω^k)(2)
3 f_(ω^ω)(2)
...
n f_(ω^ω^..^ω)(2) (n-1 ωs) > f_(ε_0) (n-1)
লক্ষণীয় বিষয় হল, কীট [3] এর ইতিমধ্যে একটি জীবনকাল রয়েছে যা গ্রাহামের সংখ্যা , জি ছাড়িয়ে গেছে :
চ ω ω (2) = চ ω 2 (2) = চ ω2 (2) = চ ω + 2 (2) = চ ω + 1 (চ ω + 1 (2)) >> ফ ω + 1 (64) > জি।
কোড গল্ফ চ্যালেঞ্জ
নিম্নলিখিত আচরণের সাথে সংক্ষিপ্ততম ফাংশন সাবপ্রগ্রামটি লিখুন:
ইনপুট : কোনও কৃমি।
আউটপুট : কৃমির জীবনকাল।কোডের আকারটি বাইটে পরিমাপ করা হয়।
এখানে একটি উদাহরণ রয়েছে (পাইথন, প্রায় 167 বাইটে গল্ফগুলি):
from itertools import *
def T(w):
w=w[::-1]
t=0
while w:
t+=1
if w[0]:a=list(takewhile(lambda e:e>=w[0],w));a[0]-=1;w=a*(t+1)+w[len(a):]
else:w=w[1:]
return t
নোট : যদি টি (এন) কীটপতঙ্গের জীবদ্দশায় থাকে [n], তবে টি (এন) এর বৃদ্ধির হার মোটামুটি গুডস্টেইন ফাংশনটির । সুতরাং এটি যদি 100 বাইটের নীচে গল্ফ করা যায় তবে এটি বৃহত্তর সংখ্যা মুদ্রণযোগ্য প্রশ্নের জবাব দিতে পারে । (এই উত্তরের জন্য, এন-এ ধাপে-কাউন্টারটি সর্বদা শুরু করে বৃদ্ধির হারকে তীব্রতর করা যেতে পারে - কীট [n] এর সমান মান - এটি 0 থেকে শুরু করার পরিবর্তে)
2 1
একটি যুক্তিসঙ্গত সময়ের মধ্যে জিজ্ঞাসা করতে খুব বেশী হতে পারে, কিন্তু একটি দরকারী পরীক্ষা যে ক্রম শুরু করা উচিত (2 1)
, 2 0 2 0
, 2 0 (2)
, 2 0 (1 1 1 1)
, ...
w[0]
যা সেই তালিকার * বামতম উপাদান?