W x H 자릿수에서 가장 큰 N 자릿수를 찾습니다.


25

양의 정수 N과 너비 W와 높이 H (양의 정수임)의 십진 자릿수 (0-9)를 취하는 프로그램 또는 함수를 작성하십시오. N이 W와 H보다 크거나 같다고 가정 할 수 있습니다.

눈금에 가로 또는 세로로 나타나는 최대 연속 N 자리 숫자를 인쇄하거나 반환합니다 (일반 읽기 순서 또는 역순으로 표시).

  • 대각선의 자릿수 줄은 고려되지 않습니다.
  • 그리드는 둘러싸이지 않습니다. 즉, 주기적 경계 조건이 없습니다.

예를 들어 3 × 3 그리드

928
313
049

9N = 1에 94대한 출력, N = 2에 940대한 출력 및 N = 3에 대한 출력을 갖습니다 .

4 × 3 그리드

7423
1531
6810

했을 8N = 1에 대한 출력으로서 86N = 2, 854N = 3 및 7423N = 4에 대한.

3 × 3 격자

000
010
000

1N = 1, 10N = 2 및 N = 3에 대한 출력 을 갖습니다 (N = 3 010에도 유효 함).

1 × 1 그리드

0

0N = 1에 대한 출력 을 갖습니다 .

편리한 형식으로 입력 할 수 있습니다. 예를 들어, 그리드는 줄 바꾸기로 구분 된 문자열, 다차원 배열 또는 숫자 목록 등이 될 수 있습니다. 그리드의 일부인 경우 선행 0이 출력에 허용됩니다.

이것은 이므로 바이트 단위의 가장 짧은 코드가 승리하지만 알고리즘이 계산적으로 효율적이라는 것을 나타낼 수있는 답변에 브라우니 포인트 (즉, 가능성이 높은 투표)를 부여합니다.


1
선행 0을 인쇄 할 수 있습니까?
— PurkkaKoodari

@ Pietu1998 "그리드의 일부인 경우 출력에 리드 제로가 허용됩니다."
— Calvin 's Hobbies

답변:


0

Pyth, 22 19 바이트

Jakube 덕분에 3 바이트.

seSs.:RQ.n,L_MdCB.z

온라인으로 사용해보십시오.

선행 0을 인쇄 할 수 있으면 코드는 18 바이트입니다.

eSs.:RQ.n,L_MdCB.z

앞에 0이있는 문자열을 정수로 변환하면를 사용하여 수행 할 수 있습니다 s.
— Jakube

9

CJam, 39 36 35 34 바이트

qN/)i\[{zW%_}4*]ff{_,@e<ew:i}e_:e>

@Dennis가 깨어나 기 전에 빨리 : P

온라인으로 사용해보십시오 .

설명

기본 알고리즘은 그리드의 네 회전을 모두 수행하고 각 행을 길이의 청크로 분할합니다 N(또는 행 길이 중 작은 쪽). 그런 다음 청크를 정수로 변환하고 가장 큰 값을 가져옵니다.

qN/             Split input by newlines, giving an array of lines
)i\             Drop N from the array and put at bottom
[        ]      Wrap in array...
 {    }4*         Perform 4 times...
  zW%_              Rotate grid anticlockwise and push a copy
                Note that this gives an array of 5 grids [CCW1 CCW2 CCW3 CCW4 CCW4]
ff{         }   For each grid row, mapping with N as an extra parameter...
   _,             Push length of row
     @e<          Take min with N
        ew        Split into chunks
          :i      Convert to ints
e_              Flatten that array
:e>             Take cumulative max

호기심으로, few특별한 일이 있습니까, 아니면 별도의 세 가지 명령입니까?
— ETHproductions

3
@ETHproductions 실제로 연산자는 "또는 추가 매개 변수가있는 맵"을 ew사용하여 적용한 것 f입니다. 예를 들어 ["abcd" "efgh"] 2 few결과는 [["ab" "bc" "cd"] ["ef" "fg" "gh"]]입니다.
— Sp3000

그래도 흥미로운 우연의 일치입니다.
— ETHproductions

문제는 @Dennis가 깨어 나면 다른 사람들은 모두 잃어 버린다는 것입니다. ;)
— kirbyfan64sos

-2

익살 연극

아직 최종 답변은 아니지만 다음과 같이 작동합니다.

blsq ) "7423\n1531\n6810"ln)XXJ)\[jtp)\[_+J)<-_+{3.+ti}m[>]
854
blsq ) "7423\n1531\n6810"ln)XXJ)\[jtp)\[_+J)<-_+{4.+ti}m[>]
7423

N과 그리드는 어떻게 정확하게 제공됩니까?


일반적으로 작동 할 때까지 답변을 게시하기 위해 기다려야합니다. OP에 대한 모든 질문은 게시물에 대한 의견으로 제공되어야합니다.
— Alex A.

코드는 실제로 작동합니다.
— mroman
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.