Okazuje się, że nazwa użytkownika Doorknob na GitHub, Reddit i innych stronach to KeyboardFire . To daje mi pomysł ...
Zadanie
Pracujesz w KeyboardFire Inc., firmie produkującej specjalne klawiatury. I przez „specjalne” rozumiem, że za każdym razem, gdy naciskasz klawisz, coś w twoim domu zapala się! Dzięki nowej serii klamek KeyboardFire obiektami zapalającymi się są klamki.
Jednak z powodu głupich przepisów rządowych użytkownicy muszą wiedzieć, które klamki w ich domu zapalą się.
Rozważ tę grafikę ASCII części klawiatury 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
(Te |reprezentują granice między kluczami.)
Możemy traktować ten dokładny rysunek ASCII jako swego rodzaju „wykres”, w którym każdy znak w zakresie [a-z0-9]
ma indeks x (poziomy) i y (pionowy), gdzie (0,0)jest 1. Na przykład litera dma współrzędne (2,6)(rury i spacje są uwzględniane w obliczeniach współrzędnych).
Pomyślmy teraz o domu każdego użytkownika. Każdy dom może być narysowany w widoku z góry jako grafika 20x4 ASCII (w tym świecie, gdzie legalna jest sprzedaż niszczących klawiatur, każdy dom ma ten sam rozmiar). Możemy użyć Dznaku do oznaczenia pozycji każdej klamki w domu. Oto przykład:
D D D D
D
D D
Nazwiemy to „mapą domu”. (Tak, to dużo klamek!)
Naciśnięcie dowolnego klawisza zapali najbliższą klamkę w ogniu. Na przykład, jeśli weźmiemy poprzednie współrzędne litery d, najbliższa klamka (według odległości Manhattanu) znajduje się na współrzędnych (1,4). To jest klamka, która zapali się, gdy litera dzostanie trafiona. Gdybyśmy oznaczyli płonącą klamkę za pomocą F, wynik byłby następujący:
D D D D
F
D D
Specyfikacja
Twój program pobierze dwa dane wejściowe:
- Ciąg pasujący do wzorca
[a-z0-9]+. - Mapa domu Może to być ciąg, lista ciągów lub coś równoważnego.
Musisz przejrzeć każdą literę sznurka i zapalić odpowiednią klamkę w ogniu (zmień jej literę na F). Jeśli najbliższa klamka już się pali, pozostaw ją taką, jaka jest. Jeśli za pomocą tej metody można podpalić więcej niż 1 klamkę, możesz zapalić dowolną.
Po przetworzeniu całego łańcucha w ten sposób musisz wydrukować wynikową mapę domu.
Code-golf, więc wygrywa najkrótszy program. Standardowe luki zakazane jak zwykle.
Przykład
Strunowy:
helloworld123
Mapa domu:
D D D D
D
D D
Możliwe wyniki:
F F F D
F
D F
Lub:
F D F D
F
D F
Lub:
F F D D
F
F F
Lub:
F D D D
F
F F
EDYCJA: Uh ... czy jest powód, dla którego mam jedną odpowiedź, nawet z nagrodą +50? Jeśli uznasz, że wskazówki są skomplikowane / niejasne, byłbym zadowolony, gdybyś zamieścił w komentarzach lub coś ... lub że robię coś złego ...
EDYCJA 2: Nagroda wygasa za niecały dzień! Opublikuj coś innego! Proszę! PROSZĘ!!!! :(
dwspółrzędne (2, 6), a nie (2, 2)? 2) Dlaczego przykład ma tak wiele możliwych odpowiedzi? 3) Kiedy wyjaśnisz, w jaki sposób zapali się ogień, dlaczego w ogóle mówiszd? Dlaczego po prostu nie powiedzieć wprost, że naciśnięcieazapali jakiś dom w ogniu? Czydto też robi?