음, 알고 보니 손잡이의 GitHub의, 레딧, 그리고 다른 사이트에 사용자 이름입니다 KeyboardFire는 . 그게 나에게 아이디어를 제공합니다 ...
작업
특수 키보드를 만드는 회사 인 KeyboardFire Inc.에서 근무합니다. 그리고 "특별한"이라는 말은, 당신이 열쇠를 누를 때마다, 집안의 어떤 것이 불을 붙인다는 것을 의미합니다! 새로운 KeyboardFire Doorknob 시리즈에서는 불이 켜진 물체가 손잡이입니다.
그러나 어리석은 정부 규정으로 인해 사용자는 집안의 어떤 손잡이가 불에 타야하는지 알아야합니다.
QWERTY 키보드의 일부에 대한이 ASCII 기술을 고려하십시오.
1|2|3|4|5|6|7|8|9|0
q|w|e|r|t|y|u|i|o|p
a|s|d|f|g|h|j|k|l
z|x|c|v|b|n|m
( |
의 키 사이의 경계를 나타냅니다.)
이 정확한 ASCII 도면을 일종의 "그래프"로 취급 할 수 있습니다. 여기서 범위의 각 문자 [a-z0-9]
에는 x (가로) 및 y (세로) 인덱스 (0,0)
가 1
있습니다. 예를 들어, 문자 d
에는 좌표가 있습니다 (2,6)
(파이프 및 공간은 좌표 계산에 포함됨).
이제 각 사용자의 집에 대해 생각해 봅시다. 모든 집은 20x4 ASCII 아트로 하향식보기로 그릴 수 있습니다 (이 세상에서는 파괴적인 키보드를 판매하는 것이 합법적이며 모든 집의 크기는 동일합니다). 를 사용 D
하여 집에있는 각 손잡이의 위치를 표시 할 수 있습니다 . 예를 들면 다음과 같습니다.
D D D D
D
D D
이것을 "하우스 맵"이라고합니다. (예, 많은 손잡이가 있습니다!)
아무 키나 누르면 가장 가까운 손잡이가 켜집니다. 예를 들어, 문자의 이전 좌표를 취하면 d
가장 가까운 문 손잡이 (맨해튼 거리 기준)는 좌표에 (1,4)
있습니다. 글자 d
를 칠 때 불이 붙는 손잡이입니다 . 우리가 타오르는 손잡이를 표시 F
하면 결과는 다음과 같습니다.
D D D D
F
D D
사양
프로그램은 두 가지 입력을받습니다 :
- 패턴과 일치하는 문자열입니다
[a-z0-9]+
. - 집지도. 이것은 문자열, 문자열 목록 또는 이와 동등한 것이 될 수 있습니다.
끈의 각 글자를 통과하고 각각의 손잡이를 불에 불을 붙일 필요가 있습니다 (문자를으로 변경하십시오 F
). 가장 가까운 손잡이가 이미 불에 태우면 그대로 둡니다. 이 방법을 사용하여 불에 불을 붙일 수있는 문 손잡이가 두 개 이상인 경우 원하는 것을 불이 켜질 수 있습니다.
이 방법으로 전체 문자열을 처리 한 후 결과 집지도를 인쇄해야합니다.
코드 골프, 가장 짧은 프로그램이 승리합니다. 표준 허점은 평소처럼 금지되었습니다.
예
끈:
helloworld123
집지도 :
D D D D
D
D D
가능한 결과 :
F F F D
F
D F
또는:
F D F D
F
D F
또는:
F F D D
F
F F
또는:
F D D D
F
F F
편집 : 어 ... + 50 현상금으로도 하나의 대답이있는 이유가 있습니까? 지시 사항이 복잡하거나 모호한 것으로 판명되면 의견이나 무언가를 게시하거나 기꺼이 잘못 한 것이 있으면 기쁠 것입니다 ...
편집 2 : 바운티 하루 만에 만료! 다른 것을 게시하십시오! 부디! 부디!!!! :(
d
(2, 6) 코드가 아닌 (2, 2) 코드입니까? 2) 예에 왜 가능한 많은 답변이 있습니까? 3) 불이 어떻게 켜지는지 설명 할 때 왜 이야기하고d
있습니까? 똑바로 누르면a
집에 불이 붙을 것이라고 말하는 것이 어떻습니까? 하는가d
도 그것을 할?