প্রাইম গ্রিড গেম


10

আমি এটি সমাধান করতে মজা পেয়েছি, তাই আমি এই গল্ফ চ্যালেঞ্জ প্রস্তাব।

এই উদ্দেশ্য গলফ বৃহত্তম মৌলিক সংখ্যা প্রদত্ত নির্দেশাবলী ব্যবহার করা যাবে এটি হয়।

আপনার ইনপুট হিসাবে একক অঙ্কের 3x3 গ্রিড গ্রহণ করা উচিত। (আপনি কীভাবে এটি করতে চান এটি আপনার উপর নির্ভর করে তবে এটি আপনার প্রোগ্রামে নির্দিষ্ট করুন))

আপনি গ্রিডটি orthogonally (বাম, ডানদিকে, উপরে বা নীচে) ধরে এগিয়ে যেতে পারেন এবং আপনি যখন সরান, আপনি যে অঙ্কগুলি জুড়ে চলেছেন সেগুলি সংযোজন করে চলেছেন।

যেমন

1 2 3
3 5 6 
1 8 9

বলুন আমরা শুরু করি 1, আমরা সংখ্যাটি তৈরি করতে পারি 1236589 তবে 15 টি গঠন করতে পারি না

আপনাকে প্রতিটি শুরু অবস্থানের মূল্যায়ন করতে হবে।

যদি কোনও প্রাইম খুঁজে পাওয়া যায় না, মুদ্রণ করুন -1, অন্যথায় নিজেই মুদ্রণ করুন।

সংক্ষিপ্ততম কোড জিতেছে, এটি 10 ​​সেকেন্ডের মধ্যে চলে তা নিশ্চিত করুন runs

আনন্দ কর!

সম্পাদনা করুন: সম্পূর্ণ সংখ্যায় ঠিক একবারে একটি অবস্থান ব্যবহার করুন।

এখানে একটি পরীক্ষার মামলা রয়েছে

ইনপুট:

1 2 3
4 5 6
7 8 9

আউটপুট: 69854123


আমি মনে করি আমরা অবস্থানগুলি পুনরাবৃত্তি করতে পারি না?
কীথ র্যান্ডাল

না তুমি পারবে না. অন্যথায় এটি অসীম অনুসন্ধান হবে :) দুঃখিত, এটি উল্লেখ করতে ভুলে গেছি। সম্পাদনা করা।
st0le

আমি পরীক্ষার মামলা করতে পারি?
এমটিএনভিউমার্ক

@ এমটিএনভিউমার্ক, আমি পোস্ট পোস্ট টেস্টকেস দিয়েছি এবং আপনার উত্তরটিও নিশ্চিত করেছি। চিয়ার্স! :)
st0le

উত্তর:


4

হাস্কেল, 239 টি অক্ষর

p=2:q[3..]
q=filter(#p)
n#(x:y)=n==x||n`mod`x/=0&&(n`div`x<x||n#y)
(n§m)q=n:maybe[](\i->[q-4,q-1,q+1,q+4]>>=(n*10+i)§filter(/=(q,i))m)(lookup q m)
i=[0,1,2,4,5,6,8,9,10]
main=getLine>>=print.maximum.(-1:).q.(i>>=).(0§).zip i.map read.words

নয়টি সংখ্যার একক লাইন হিসাবে ইনপুট দেওয়া হয়:

$> echo 1 2 3  3 5 6  1 8 9 | runhaskell 2485-PrimeGrid.hs
81356321
$> echo 1 2 3  4 5 6  7 8 9 | runhaskell 2485-PrimeGrid.hs
69854123
$> echo 1 1 1  1 1 1  1 1 1 | runhaskell 2485-PrimeGrid.hs
11
$> echo 2 2 2  2 2 2  2 2 2 | runhaskell 2485-PrimeGrid.hs
2
$> echo 4 4 4  4 4 4  4 4 4 | runhaskell 2485-PrimeGrid.hs
-1

আমি আপনার উত্তরটি নিশ্চিত করতে পারি :)
st0le

3

পাইথন, 286 274 অক্ষর

I=lambda:raw_input().split()
m=['']
G=m*4+I()+m+I()+m+I()+m*4
def B(s,p):
 d=G[p]
 if''==d:return-1
 G[p]='';s+=d;n=int(s)
 r=max(n if n>1and all(n%i for i in range(2,n**.5+1))else-1,B(s,p-4),B(s,p+4),B(s,p-1),B(s,p+1))
 G[p]=d;return r
print max(B('',i)for i in range(15))

এটি ভাসা যুক্তির জন্য অবমূল্যায়নের সতর্কতা দেয় range। এটি উপেক্ষা করুন, বা এর int()চারপাশে মোড়ানোর জন্য আরও 5 টি অক্ষর ব্যয় করুন ।

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