편지를 연결


10

이 작은 게임에서 영감을 얻었 습니다 .

도전

다음과 같이 그리드의 초기 위치 (항상 5x5)를 입력으로 지정합니다.

-ABCD
-A---
---C-
---BD
--E-E

-공백을 모두 제거하여 문자 (동일한 문자를 모두 연결)를 연결해야 합니다. 편지는 항상있을 것 A,B,C,D and E입니다.

모든 문자 쌍은 직각으로 구부러 질 수있는 단일 비 분지 선으로 연결되어야합니다 (선을 나타내는 데 동일한 문자를 사용함).

입력은 각각의 시작 문자가 정확히 2 번이어야하며 항상 모든 시작 문자 AE를 갖습니다.

입력은 stdin 또는 일부 함수에 대한 인수로 하나의 유일한 문자열 또는 코딩 언어에 가장 편리한 방법 인 배열 / matriz / char 목록에서 읽을 수 있습니다.

이것은 바이트 단위의 코드 최단 코드 이기 때문에 승리합니다!


각 문제에 대한 해결책은 하나뿐이 아니라 규칙은 모두에 적용됩니다 (빈 공간과 구분 된 문자 없음). 그리고 입력에는 적어도 하나의 올바른 출력이 보장됩니다.

문자 A를 연결해 봅시다 :

AABCD
AA---
AA-C-
AA-BD
AAE-E

이제 문자 B를 연결하십시오.

AABCD
AAB--
AABC-
AABBD
AAE-E

이제 문자 C를 연결하십시오.

AABCD
AABC-
AABC-
AABBD
AAE-E

이제 문자 D를 연결하십시오.

AABCD
AABCD
AABCD
AABBD
AAE-E

그리고 마지막으로 문자 E :

AABCD
AABCD
AABCD
AABBD
AAEEE

다른 샘플

input:
E--E-
BB-C-
AD---
---C-
AD---

output:
EEEEE
BBECE
ADECE
ADECE
ADEEE

input:
A----
---B-
-C-C-
-D-D-
BE-EA

output:
AAAAA
BBBBA
BCCCA
BDDDA
BEEEA

이 도전은 정확한 입력을 보장하기 때문에 @ Sp3000은 dup이 아닙니다.
Nathan Merrill

입력은 각 시작 문자를 정확히 2 번 갖도록 보장됩니까? 항상 모든 시작 문자가 A-E있습니까?
Ton Hospel

1
@NathanMerrill은 약간의 차이가있는 것 같습니다. 용해성 검사가 코드의 대부분을 차지할 것이라고 상상할 수 없습니다.
Martin Ender

1
내 도전 MartinBüttner @, 해결의 가능성에 대한 검사 입니다 전혀 필요 연결 문제는. 두 가지 과제는 비슷하지만 내 생각에는 크게 다릅니다.
Nathan Merrill

4
이와 같은 질문에 가장 좋아하는 기술은 임의의 숫자를 사용하여 역 추적을 피하고 솔루션에 도달하면 중지하는 위치를 채우는 것입니다. 솔루션이 보장되는 경우에만 작동합니다. 그렇지 않으면 프로그램이 영원히 실행될 수 있습니다 (솔루션이 보장되는 경우 긴 런타임이 기하 급수적으로 더 길어질 가능성이 없도록 코드를 작성할 수 있음). 이 기술에 대한 질문 매우 다르다
Ton Hospel

답변:


4

130 128 127 바이트

에 +4 포함 -n0(프로그램이 명령 줄에서 작동하지 않으므로 -공간도 계산 됨)

STDIN의 입력으로 전화하십시오.

perl -n0 connectletters.pl
E--E-
BB-C-
AD---
---C-
AD---

와 Teminate ^D또는 ^Z시스템에 STDIN을 닫 어떤 또는

connectletters.pl:

/-/?map{$_="$`$_$'";s%\pL%$_="$`0$'";1while do{s/[$&-](.{5}|)0|0(.{5}|)[$&-]/0$+0/s};/$&/||$&%eg;!/1/&&do$0}A..E:exit!print
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.