प्रधानमंत्री ग्रिड खेल


10

मुझे इसे सुलझाने में मज़ा आया, इसलिए मैं इस गोल्फ को चुनौती देता हूं।

इस गोल्फ का उद्देश्य सबसे बड़ा अभाज्य अंक खोजना है जिसे दिए गए निर्देशों का उपयोग करके बनाया जा सकता है।

आपको इनपुट के रूप में एकल अंकों के 3x3 ग्रिड को स्वीकार करना चाहिए। (यह आपके ऊपर है कि आप ऐसा कैसे करना चाहते हैं, लेकिन इसे अपने कार्यक्रम में निर्दिष्ट करें।)

आप ग्रिड के साथ मौखिक रूप से (बाएं, दाएं, ऊपर या नीचे) जा सकते हैं, और जैसे-जैसे आप आगे बढ़ते हैं, आप अपने द्वारा चलने वाले अंकों को जोड़ते रहते हैं।

उदाहरण के लिए

1 2 3
3 5 6 
1 8 9

कहते हैं कि हम शुरू करते हैं 1, हम संख्या 1236589 बना सकते हैं, लेकिन 15 नहीं बना सकते

आपको हर शुरुआती स्थिति का मूल्यांकन करना होगा।

यदि कोई प्राइम नहीं पाया जा सकता है, तो प्रिंट करें -1, अन्यथा प्राइम को ही प्रिंट करें।

सबसे छोटा कोड जीतता है, सुनिश्चित करें कि यह 10 सेकंड के भीतर चलता है।

मज़े करो!

संपादित करें: एक ही स्थिति का उपयोग पूरी संख्या में एक बार करें।

यहाँ एक परीक्षण मामला है

इनपुट:

1 2 3
4 5 6
7 8 9

आउटपुट: 69854123


मुझे लगता है कि हम पदों को नहीं दोहरा सकते हैं?
कीथ रान्डेल

नहीं तुम नहीं कर सकते। अन्यथा यह एक अनंत खोज होगी :) क्षमा करें, यह उल्लेख करना भूल गया। संपादन।
st0le

मैं गंभीर मामलों की जांच कर सकता हूं?
मटनवार्क

@MtnViewMark, मैं पोस्टड टेस्टकेस को खतरे में डालता हूं, और आपके उत्तर की पुष्टि करता हूं। चीयर्स! :)
०२ १२'११

जवाबों:


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 और आकर्षण खर्च करें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.