꼬인 낱말을 읽으십시오!


13

이 질문 과 유사 하지만 이것은 크로스 워드 변형입니다!

그리드 제곱 당 하나의 문자 대신 하나 또는 두 개의 문자를 가질 수 있습니다 .

입력:

  • 2D 배열 또는 언어로 작동하는 모든 것.
  • 유효한 입력을 가정 할 수 있습니다
  • 모든 배열 크기가 작동해야합니다

산출:

  • 모든 단어의 배열
    • 아래로
    • 모든 단어는 함께 연결되어야합니다. 즉, 끊어지지 않은 단어 체인으로 연결되어야합니다 (거짓이 아닌 경우)
    • 단어는 글자가 아닌 최소한 두 개의 격자 사각형 이어야합니다

예:

[["",  "wo", "r",  "k"],
[ "",   "r",  "",   ""],
[ "he", "l",  "lo", ""],
[ "",   "d",  "ad", ""]]

보고:

["work", "world", "hello", "load", "dad"]

예:

[["he", "ll", "o"],
[ "",   "",   ""],
[ "wo", "r",  "ld"]]

보고:

false

이것은 이므로 2.5ghz 및 16gb 램이있는 Windows 7 에서이 실행합니다. 코드가 실제로 난해한 경우 실제로 실행할 수 있도록 컴파일러에 대한 링크를 제공하십시오.


9
PPCG에 오신 것을 환영합니다!
FlipTack

2
두 공백 부분을 두 개의 격자 사각형으로 바꿔야합니다 .
Gábor Fekete

1
속도는 어떤 크기의 입력 크기로 측정됩니까?
Martin Ender

@MartinEnder 예제
epicbob57

@ epicbob57 신뢰할 수있는 타이밍을 측정하는 작은 방법 인 것 같습니다. 대부분 I / O 및 기타 오버 헤드를 측정합니다.
Martin Ender

답변:


1

파이썬 3

import numpy
from scipy.ndimage import measurements

def crosswords(arr):
    M=numpy.asarray(arr)
    # check connectivity
    if measurements.label(numpy.where(M!='',1,0))[-1] != 1:
        return 'false'

    words = []
    def get_words(mat):
        for r in mat:
            word,counter='',0
            for c in r:
                if c=='':
                    if counter>1:
                        words.append(word)
                    word, counter = '', 0
                else:
                    word, counter = word+c, counter+1
            if counter > 1:
                words.append(word)
    get_words(M)
    # transpose M
    get_words(M.T)
    return words

용법:

함수는 문자열 배열을 입력으로받습니다.

crosswords( [["", "wo", "r", "k"], [ "", "r", "", ""], [ "he", "l", "lo", ""], [ "", "d", "ad", ""]])

false연결성이 여러 레이블을 반환 할 때 문자열을 반환합니다 . 그렇지 않으면 유효한 단어의 배열을 반환합니다.

나는 그것을 함께 시간 초과 timeit, time.time()콘솔 명령 사용 time및하지만 난 하나를 사용할 모르거나 어느 하나를 여기에 게시 할 수 있습니다.


나는 어쨌든, 나는 ()로 time.time를 사용하여 테스트 할 수 있습니다 ... 파이썬 3이없는 것을 깨달았다
epicbob57에게

pip를 사용하여 scipy를 설치할 수없는 것 같습니다.
epicbob57

pip3을 사용 했습니까?
Gábor Fekete

pip 9.0.1 (python 3.5)
epicbob57

오 당신은 창문에있다, 관리자 권한으로 그것을 시도하십시오
Gábor Fekete
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.