Chà, hóa ra tên người dùng của Doorknob trên GitHub, Reddit và các trang web khác là KeyboardFire . Điều đó mang lại cho tôi một ý tưởng...
Nhiệm vụ
Bạn làm việc tại KeyboardFire Inc., một công ty sản xuất bàn phím đặc biệt. Và, "đặc biệt", ý tôi là, bất cứ khi nào bạn nhấn một phím, một cái gì đó trong nhà bạn sẽ sáng lên! Với sê-ri Bàn phím Doirenob mới, các vật thể phát sáng là tay nắm cửa.
Tuy nhiên , vì các quy định ngu ngốc của chính phủ, người dùng của bạn cần biết tay nắm cửa nào trong nhà sẽ sáng lửa.
Hãy xem xét nghệ thuật ASCII này của một phần của bàn phím QWERTY:
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
(Các |
'đại diện cho ranh giới giữa các khóa.)
Chúng ta có thể đối xử với bản vẽ ASCII chính xác này như là một "biểu đồ" của các loại, trong đó mỗi nhân vật trong phạm vi [a-z0-9]
có x (ngang) và y (dọc) chỉ số, nơi (0,0)
là 1
. Ví dụ, chữ cái d
có tọa độ (2,6)
(đường ống và khoảng trắng được bao gồm trong phép tính tọa độ).
Bây giờ hãy nghĩ về mỗi ngôi nhà của người dùng. Mọi ngôi nhà đều có thể được vẽ từ trên xuống dưới như một nghệ thuật ASCII 20x4 (trong thế giới này nơi bán bàn phím phá hoại hợp pháp, mọi ngôi nhà đều có cùng kích thước). Chúng ta có thể sử dụng D
để đánh dấu vị trí của mỗi tay nắm cửa trong nhà. Đây là một ví dụ:
D D D D
D
D D
Chúng tôi sẽ gọi đây là "bản đồ nhà". (Vâng, đó là rất nhiều tay nắm cửa!)
Nhấn bất kỳ phím nào sẽ làm sáng tay nắm cửa gần nhất trên lửa. Chẳng hạn, nếu chúng ta lấy tọa độ trước của chữ cái d
, thì tay nắm cửa gần nhất (theo khoảng cách Manhattan) nằm ở tọa độ (1,4)
. Đây là tay nắm cửa sẽ sáng lên khi thư d
được nhấn. Nếu chúng ta đánh dấu tay nắm cửa rực lửa bằng một F
, kết quả sẽ là:
D D D D
F
D D
Thông số kỹ thuật
Chương trình của bạn sẽ có hai đầu vào:
- Một chuỗi phù hợp với mô hình
[a-z0-9]+
. - Một bản đồ nhà. Đây có thể là một chuỗi, một danh sách các chuỗi hoặc một cái gì đó tương đương.
Bạn cần phải đi qua từng chữ cái của chuỗi và thắp sáng tay nắm cửa tương ứng trên lửa (thay đổi chữ cái của nó thành một F
). Nếu tay nắm cửa gần nhất đã cháy, hãy để nguyên như vậy. Nếu có nhiều hơn 1 tay nắm cửa có thể được thắp sáng bằng phương pháp này, bạn có thể thắp sáng bất cứ thứ gì bạn muốn.
Sau khi toàn bộ chuỗi được xử lý theo cách này, bạn cần in bản đồ nhà kết quả.
Code-golf, vì vậy chương trình ngắn nhất sẽ thắng. Sơ hở tiêu chuẩn bị cấm như bình thường.
Thí dụ
Chuỗi:
helloworld123
Bản đồ nhà:
D D D D
D
D D
Kết quả có thể:
F F F D
F
D F
Hoặc là:
F D F D
F
D F
Hoặc là:
F F D D
F
F F
Hoặc là:
F D D D
F
F F
EDIT: Uh ... có một lý do tôi có một câu trả lời, ngay cả với tiền thưởng +50? Nếu bạn thấy các hướng phức tạp / mơ hồ, tôi sẽ rất vui nếu bạn đăng trong các bình luận hoặc một cái gì đó ... hoặc tôi đang làm gì sai ...
EDIT 2: Bounty hết hạn dưới một ngày! Đăng một cái gì đó khác! Xin vui lòng! XIN VUI LÒNG!!!! :
d
coords (2, 6) mà không phải (2, 2)? 2) Tại sao ví dụ có rất nhiều câu trả lời có thể? 3) Khi bạn giải thích mọi thứ sẽ sáng như thế nào, tại sao bạn lại nói về nód
? Tại sao không chỉ cần nói thẳng rằng nhấna
sẽ đốt một số nhà trên lửa? Cód
làm điều đó không?