Prime Grid游戏


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 2011年

我可以测试用例吗?
MtnViewMark

@MtnViewMark,我发布了测试用例,并确认了您的答案。干杯! :)
st0le 2011年

Answers:


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

输入以九个数字的单行形式给出:

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

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()它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.