프라임 그리드 게임


10

나는 이것을 해결하는 것을 즐겼다. 그래서 나는이 골프 도전을 제안한다.

골프 의 목적은 주어진 지침을 사용하여 구성 할 수있는 가장 큰 소수를 찾는 것입니다.

한 자릿수의 3x3 격자를 입력으로 받아 들여야합니다. (어떻게하고 싶은지는 당신에게 달려 있지만 프로그램에서 지정하십시오.)

그리드를 따라 직각 (왼쪽, 오른쪽, 위 또는 아래)으로 이동할 수 있으며 이동할 때 가로 질러 이동하는 숫자를 계속 추가합니다.

예 :

1 2 3
3 5 6 
1 8 9

에서 시작한다고 가정 1하면 숫자 1236589는 구성 할 수 있지만 15 형성 할 수 없습니다 .

모든 시작 위치를 평가해야합니다.

소수를 찾을 수 없으면 print를 인쇄 -1하고 그렇지 않으면 소수를 인쇄하십시오.

가장 짧은 코드가 승리합니다. 10 초 내에 실행되도록하십시오.

즐기세요!

편집 : 전체 숫자에서 한 위치를 정확히 한 번만 사용하십시오.

다음은 테스트 사례입니다

입력:

1 2 3
4 5 6
7 8 9

출력 : 69854123


위치를 반복 할 수 없다고 생각합니까?
Keith Randall

아니 당신은 할 수 없습니다. 그렇지 않으면 무한한 검색이 될 것입니다. :) 죄송합니다. 편집.
st0le

테스트 케이스를 할 수 있습니까?
MtnViewMark

@ MtnViewMark, 테스트 케이스를 게시하고 답변을 확인했습니다. 건배! :)
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

입력은 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

파이썬, 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.