プライムグリッドゲーム


10

私はこれを解決するのが楽しかったので、このゴルフチャレンジを提供します。

このゴルフの目的は、指定された命令を使用して構築できる最大の素数を見つけることです。

1桁の3x3グリッドを入力として受け入れる必要があります。(どのようにするかはあなた次第ですが、プログラムでそれを指定してください。)

グリッドに沿って直角に(左、右、上または下に)移動できます。移動するにつれて、横切った数字を追​​加し続けます。

例えば

1 2 3
3 5 6 
1 8 9

我々が開始すると言う1、我々は数1236589を形成することができますがすることができない 15を形成します。

すべての開始位置を評価する必要があります。

素数が見つからない場合は印刷し-1、そうでない場合は素数自体を印刷します。

最短のコードが優先されます。コードが10秒以内に実行されることを確認してください。

楽しんで!

編集:整数で1つの位置を1回だけ使用します。

これがテストケースです

入力:

1 2 3
4 5 6
7 8 9

出力: 69854123


ポジションを繰り返すことはできないと思いますか?
キースランドール

いいえ、あなたがすることはできません。そうでなければ、それは無限の検索になります:)すみません、それを言及するのを忘れていました。編集。
st0le

テストケースを実行できますか?
MtnViewMark

@MtnViewMark、私はテストケースを投稿し、あなたの答えも確認しました。乾杯!:)
st0le

回答:


4

Haskell、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

入力は、9つの数値の単一行として与えられます。

$> 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

Python、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))

これにより、へのfloat引数の非推奨警告が表示されますrange。無視するか、5文字以上使っint()て囲みます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.