পাইথন, 740 টি অক্ষর (665 টি অক্ষর সংকুচিত)
কোড :
R=range
G=lambda:[[0]*4for _ in R(4)]
J=[(0,4,1),(2,-1,-1),(1,4,1)]
H=[0,-1,1]
def M(P,d):
C=G();g,z=[(0,-1),(1,0),(0,1),(-1,0)][d];Q=H[g];W=H[z]
while 1:
N=[r[:]for r in P]
for x in R(*J[g]):
for y in R(*J[z]):
s=N[y][x];q,w=y-W,x-Q;d=N[q][w];a,b,c=(((0,s,d),(1,0,s+d))[s==d],(0,0,s or d))[s<1 or d<1];
if 2-a-(C[y][x]+C[q][w]>0):N[y][x]=b;N[q][w]=c;C[q][w]+=a
if N==P:break
P=N
return N
def F(N):
for x in R(4):
for y in R(4):
if N[y][x]==0:N[y][x]=2;return N
def Z(P,i):
X=[d for d in R(4)if M(P,d)!=P]
return i==0and(sum((256,c)[c>0] for v in P for c in v)+P[3][3]*10+P[3][2]*9,-1)or max((Z(F(M(P,d)),i-1)[0],d)for d in X)if X else(-1,-1)
B=G()
B[0][0]=2
h=''
while B[3][3]!=2048:_,X=Z(B,4);h+=`X`;B=F(M(B,X))
print h
(কয়েকটি বাইট সংরক্ষণের জন্য ফাঁকা স্থানগুলির সাথে ট্যাবগুলি মিশ্রিত করে)
আমি অবশ্যই এটি গল্ফ করে চুষে ফেলেছি কারণ আমি যদি উপরের কোডটি কেবল সারণি করি তবে বেস-64৪ এটি এনকোড করে এবং exec
এটি, এটি কেবলমাত্র 6565 characters অক্ষর। নিম্নলিখিতটি উপরেরটির ঠিক সমান, কোনও হার্ড-কোডেড সমাধান বা কোনও কিছুই:
exec"""eJxVUl1vozAQfMa/wn2qnRjJcNzpDnf7QKS2qlRE+1IUy2oJkARdwl2hbT5+/a0NiXqSZXYH78zY
u0/QFe2qJrewKbaLqoi1lmYSLf909IU2LX1iETfkHjSTIhIBFywUfoALo8AhhtyBlhYMDKnqJX1g
mah4TOgMbhlXK3F01WOJxF06It8mRldGPcKdXhn1jJ+jIXS3bjY1DWLipaA7HRvrprNuMkM8m+wH
a5N7LEMlj1rwcAaPDvR6SPXB6L1Rb2IHB/9Z7P1HVSH6ZvTOqEIsRAmMoZ8eHTt3op9WnOseoDLW
KAIUuR12FbjwKjAK2ZslDf3CZ7NBYzobWK8lj0dZWKhRCko1/p5CQWxpCpDFi64ufhMvg5TQrn7/
6Fqauie8Yal9wC9XjeyNvtzS5dQSjVogz7Kh+o9sjv1oLF0OunKc1YmjOXXrAvBpTx4aJCvaivUf
W8bC7z9EyXV5LY2r/XR9cGFpw08+zfQ3g2sSyCEMzeSXbTce2RZ7xubshg0yXDSI44RhfDaSWxs5
rTd9zYbRIomdHJLgQVwQkjVcXpJhLJJB7AJCGf2MX0QOc5aIiKv1FF7zV5WAFUtEzjn52zXtO13/
AwRvylc=""".decode('base64').decode('zip')
উত্তর :
1111-মুভ ক্রমটি পেতে ~ 47 সেকেন্ড (17 সেকেন্ড অবরুদ্ধ) লাগে:
2221230232213120120232222222221221203211012312310123123101223113322222123230210302321222323223212322101202323123322032132021233212312332023123312111123231223113312312322312232123222021221332111332221012222312222302232021233212312332023212222222123221202332023120312123223221232232222222122122323222222212212232222222221322233231222322200232122312232313132022322212312332121332312320212211332312323223212320232322322133223213212323202123123321231313332122232310112113322212323222220130231233211313332122232312312223232231231232312222220232212312220212232312232123222021221332111332221012222312222302232021233212312332023212222222123221202332023120312123223221322323223312230230323312232313133232223233212312323123323222332222222132221321320323233223232121323212232013221323233032021223320231233220322203132123202123321231233202131321221111231213232131210212312232332132103123130213133213232213321323212332332212222123323322202302333121220222323232113123323221223032131201123212133123131222323313133313300123231332011222221223232331313313112312113230231121232332122323232321312323213212232313212323211330231231012
নিম্নলিখিত চূড়ান্ত বোর্ড অবস্থান এবং পদক্ষেপ সহ:
4 2 16 4
2 8 128 8
2 . . 1024
. . . 1024
Best move: s, with EV=25654
ট্রিভিয়া: সমাধানটি জিএসপিড এবং বেস 64-এনকোডড থাকলে 309 বাইট গিজিপিড এবং 418 বাইট রয়েছে। সুতরাং এটি কেবল ডিকোড করা এবং এটিকে মুদ্রণ করা একটি ছোট প্রোগ্রাম হবে, তবে এটি কোনও মজাদার নয় ।
ব্যাখ্যা :
এখানে সরল সংস্করণটির একটি পেস্টবিন যা প্রতিটি পদক্ষেপের পরে বোর্ডটি প্রিন্ট করে, দেখতে খুব মজাদার!
এটি একটি খুব সাধারণ প্রাণশক্তি এআই। এটি প্রতিটি বোর্ড পদের জন্য একটি ইভি নিয়োগ করে:
ev = 256 * number of spaces
+ sum_of_values
+ 10 * board_bottom_right
+ 9 * board_bottom_2nd_right
এটি গভীরতার-প্রথম অনুসন্ধানে চারটি এগিয়ে চলে এবং চারটি মুভের মধ্যে সর্বোচ্চ ইভি বাড়ে এমন পথ বেছে নেয়। এভ ক্রিয়াকলাপটি বোর্ডটি পরিষ্কার করতে এবং কোণে সর্বাধিক মূল্যবান টুকরো রাখার জন্য উত্সাহ দেয়, যা শেষ পর্যন্ত বেশ অনুকূল হয়ে যায়। এটি সেখানে পাওয়া যথেষ্ট!
আপনি যদি অন্য বোর্ড স্পটে উচ্চতর মান স্থাপনের জন্য EV ফাংশনটি পরিবর্তন করেন তবে এরকম কিছু:
1 1 1 1
1 1 1 1
1 1 9 10
1 9 10 11
এই ফাংশনটি এটি যতদূর পেতে পারে:
2 8 4 2
16 32 64 16
64 128 512 1024
2 256 2048 8192
16 কে :
ইউরেকা! 4 এর পরিবর্তে 5-পদক্ষেপযুক্ত চেহারা এবং নীচের ওজনগুলি:
1 1 4 4
1 1 4 10
1 1 14 16
1 16 18 20
এটি প্রায় 32k পায়, যা শেষ হয়:
2 128 4 2
64 256 512 4
4 128 1024 4096
16 2048 8192 16384
ক্রম এখানে ।
32 কে :
হ্যাঁ মহিলা ও ভদ্রলোক, আমরা 32k চিহ্ন পেয়েছি। ইভি ফাংশনটি একটি ধ্রুবক দ্বারা স্কোয়ারগুলি বাড়ানোর পরিবর্তে প্রতিটি বর্গটি নিম্নলিখিত শক্তিতে উত্থাপন করে এবং সেগুলি যুক্ত করে। x
মানে বর্গটি জড়িত নয়:
x x x 3
x x x 4
x x 5 6
x 6 7 8
এটি এখনও সমস্ত মান একবারে যোগ করে এবং প্রতিটি খালি স্কোয়ারের জন্য 256 যোগ করে। লুকাহেড 32 কিলোমিটার পর্যন্ত 4 টি ছিল এবং তারপরে এটি 5 অবধি ধাক্কা খেয়েছে তবে এটি খুব বেশি কিছু করবে বলে মনে হয় না। শেষ বোর্ড:
2 128 8 2
64 256 512 4
4 128 1024 2048
16 4096 8192 32768
24,625-সরানো সিকোয়েন্সের পেস্টবিন ।