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 d
ma 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ć D
znaku 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 d
zostanie 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Ę!!!! :(
d
współ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ęciea
zapali jakiś dom w ogniu? Czyd
to też robi?