Jak dowiedzieliśmy się z IBM PC AT, YouTube (patrz wideo) , Wikipedia (patrz artykuł) i Sesame Street:
Litera H
jest najbardziej bezlitosną literą alfabetu !
(Nawet jeśli faktycznie składa się z dwóch elementów w Code Page 437. W rzeczywistości jest to WIĘCEJ bezlitosne).
Jak Obcy w ... ehm ... kosmici , Bestie bezlitośnie ścigają wszystkich, którzy odważą się zbliżyć do swoich jaj. Nie ma z nimi uzasadnienia. Musisz je zgnieść, jeśli nie zginiesz.
W tym scenariuszu założymy, że sprowadzasz się do ostatniego życia i spotkałeś zwykłe Bestie w terenie bez jajek (jak na zrzucie ekranu Wikipedii). Nie masz klawiatury numerycznej i możesz poruszać się tylko bezpośrednio w górę / w dół / w lewo / w prawo ... ale bestie najwyraźniej ją mają i mogą poruszać się po skosie.
Wybór ruchu Bestii spośród jej opcji będzie tym, który minimalizuje odległość od gracza. Jeśli odległości są równe, następuje zerwanie remisu, faworyzując lewy + górny nad prawym + dolnym, ale oto macierz jednoznacznej jednoznaczności na ten temat ... najniższa liczba do rozstrzygnięcia:
1 3 4
2 H 5
6 8 7
Bestia nigdy nie śpi, ale na szczęście jest nieco wolniejsza od gracza. Poruszają się co drugą turę (dając graczowi przewagę, zaczynając naprzemiennie w drugiej turze). Muszą się poruszyć, jeśli ruch jest możliwy, niezależnie od tego, czy prowadzi to dalej od gracza.
Zmiażdżysz bestię, jeśli poruszysz pociągiem ruchomych ścian, gdzie stał w zamkniętej szczelinie. Te zwykłe bestie są warte 2 punkty za głowę.
Wejście
Para liczb całkowitych wskazujących rozmiar mapy w kolumnach, a następnie w wierszach.
Liczba wierszy wierszy wejściowych, każdy rozmiar kolumny ... zawierający albo ścianę pełną (
#
), ścianę ruchomą (~
), bestię (H
), odtwarzacz (O
) lub po prostu spację.Dane wejściowe, które będą albo U, D, L, R, wskazują na próbę ruchu przez gracza ... lub W, aby tylko poczekać. Pamiętaj, że próba pchnięcia ruchomej ściany, która jest zablokowana, jest zgodna z prawem, po prostu nie spowoduje żadnego działania.
Wynik
aHHHH!
jeśli bestie zabiły gracza ... lub nic, jeśli gracz wygrał bez bestiiWynik
(Uwaga: do celów debugowania i / lub rozrywki prawdopodobnie będziesz chciał móc wyświetlać stan na każdym kroku; ale to zbyt długo, aby opublikować tutaj.)
Wyjaśnienia
Gwarantujemy, że mapy będą ograniczone solidnymi ścianami.
Kolejność, kto porusza się po kolei, ma znaczenie dla wyniku. Zatem: Gracz zawsze idzie pierwszy, następnie bestie otrzymują porządek na podstawie ich początkowej pozycji na mapie, jeśli przesuwasz się po ekranie od góry do dołu od lewej do prawej. (Bestia z rzędu 1 porusza się przed bestią z rzędu 2, a dwie bestie w tym samym rzędzie to ta o najniższej liczbie kolumn, która poruszałaby się przed drugą)
Ruchome ukośne bestie mogą poruszać się w dowolne otwarte sąsiednie pola po przekątnej, niezależnie od tego, czy wymagają ściśnięcia między ścianami.
Gracz może pchnąć dowolną liczbę ruchomych ścian w linii, pod warunkiem, że na drugim końcu jest miejsce lub bestia. Ale próba wepchnięcia ciągu ścian w Bestię, która nie jest przypięta między ścianami, traktuje Bestię jak ścianę i nie pozwala na ruch.
Decyzja o ruchu Bestii podczas tury zależy od lokalizacji gracza na początku tury. Pożądana optymalizacja „odległości do gracza” polega na obliczeniu „w linii prostej”. Każde przybliżenie, które dałoby taki sam wynik, mierzony od środka jego kwadratu do środka kwadratu gracza, jest w porządku.
Jeśli Bestia nie może wykonać swojego pierwszego preferowanego ruchu w turze, ponieważ Bestia o wyższym priorytecie zajęła swoje miejsce, podejmie następny najlepszy wybór, zamiast pozostać na miejscu (jeśli ruch jest nadal możliwy).
Przykładowe przypadki
Simple Crush
Wejście
5 3
#####
#O~H#
#####
R
Wynik
2
Matryca preferencji -> Śmierć
Wejście
5 5
#####
#O #
# ~ #
# H#
#####
WWDW
Wynik
aHHHH!
0
Matryca preferencji -> Wygrana
Wejście
5 5
#####
#O #
# ~ #
# H#
#####
WRD
Wynik
2
Czekam na żniwiarza
Wejście
5 5
#####
#O #
# ~ #
# H#
#####
WWW
Wynik
aHHHH!
0
Udana porażka w scenariuszu Wikipedii
Wejście
40 23
########################################
#~ ~ ~~ ~ ~ ~~ ~ ~~ ~ ~ ~~ #
#~~ ~ ~~ ~ ~ ~~ ~ #
#~# ~~ ~~~~ ~ ~~~~ ~ ~~~ ~#
# ~ ~ ~ ~~ #~~ ~ #
#~~ ~~~ ~ ~ ~ ~ ~~ ~ ~ ~ ~ #
# ~~ ~ ~ ~ ~~~ H ~ #~ #
# O~ ~ # ~~~ ~ ~ ~~ ~ ~ ~~ #
# ~ ~H~~ ~~ ~ # ~~ ~ #
# ~~ ~ ~~~ ~~ ~~~~ ~ ~#
#~ ~ ~~~ ~ ~ ~ ~ ~~ ~~#
# ~ # ~ ~~ ~~~ ~ ~ ~ # ~#
#~ ~ ~~ ~ ~ H ~~ ~~ ~ ~ ~~~ #
# ~ ~ ~ ~ ~ ~~~ ~ #
# ~~ ~ ~ ~~ ~ ~ ~ ~ ~ #
# ~~ ~ ~ ~ ~ ~~ #
#~ ~ # ~~~~ ~ ~~~H # ~ #
# ~ ~ ~ ~ ~ ~~ ~ #
# ~ ~ #~ ~ ~~ ~ ~ ~#
# ~~ ~ ~ ~~ ~ ~ #
# ~~~ ~ ~~ ~ ~ ~ ~ #
# ~ ~ ~ ~~ ~ ~ ~ #
########################################
RRRUWWWRRRURWWWWRDRRWWRDWWWWD
Wynik
8
Mapa dostarczona przeze mnie, ruchy i wyjście @bobbel, potwierdzone przeze mnie i @Allbeert.
Zwycięskie kryteria
Myślę, że jest to możliwe do gry w golfa, więc stosuję się do zasad golfa, chyba że ludzie narzekają.
Dodatkowy kredyt
Grywalna implementacja Unicode z podwójnie szerokimi znakami przypominającymi obraz!
Odpowiedzi:
Perl 6: 741 znaków, 758 bajtów
Wersja w golfa znajduje się na dole, ponieważ jest zasadniczo płócienna. Powyżej jest moja wersja z golfem. Oba są interaktywne (odczytują jak najwięcej poleceń z pliku wejściowego, jak to możliwe, a następnie przechodzą do używania STDIN, aby uzyskać polecenia). Starają się używać oryginalnych znaków i kolorów.
Użycie jest jak
perl6 beast.p6 beast-input
:Wersja golfowa:
Wesołego Alleluja!
źródło
Java, 1843
Moja pierwsza próba rozwiązania tej zagadki za pomocą Javy. Wiem, że jest wiele ulepszeń, które mogą być krótsze. Ale w końcu na razie działa.
Aby spróbować, musisz utworzyć klasę
C
i wkleić kod.args[0]
(ściśle mówiąca[0]
) służy do wprowadzania danych. Metoda wydruku mapy nie jest uwzględniona, ponieważ nie jest niezbędna do wydruku puzzli.Aby go uruchomić, spróbuj na przykład:
Wyjście z ostatniego dużego scenariusza na jedną turę, zanim bestia zje gracza:
Bez głupich spacji między wierszami: http://pastebin.com/raw.php?i=QhpxKcCT
Tak więc droga graczy kończy się po ruchach
RRDDDRRRWW
, ponieważ w ostatnimW
meczu bestia po lewej stronie pójdzie w prawo, aby zjeść gracza.Kolejny przykład oryginalnej dużej mapy, ale różne ruchy:
http://pastebin.com/raw.php?i=nBWjC3PZ
Zobacz tę animację: http://youtu.be/0DIhEhjWd6s
I ostatni przykład z oryginalną mapą i różnymi ruchami (zgodnie z nowymi zasadami ruchu bestii):
http://pastebin.com/raw.php?i=NNmgzx7U
Zobacz na youtube: http://youtu.be/jXPzL88TU2A
źródło
C -
1004984917Ahh, piękno C. Podążając za duchem drugiej odpowiedzi, również próbowałem sformatować moją :)
Wyobrażam sobie, że wciąż istnieją pewne ulepszenia tu i tam, ale pisanie i granie w golfa było naprawdę fajne. Liczba znaków obejmuje wszystkie niezbędne spacje i nowe linie.
Przetestowałem to ze wszystkimi przykładowymi przypadkami i kilkoma moimi, i wydaje się, że działa poprawnie. Jeśli ktoś znajdzie jakąkolwiek sytuację, w której nie odpowie poprawnie, daj mi znać.
Wejście pochodzi ze standardowego wejścia, a wyjście na standardowe wyjście. Nie ma sprawdzania nieprawidłowego wprowadzania danych. I zwraca wynik, jeśli gracz zostanie zjedzony, lub jeśli gracz żyje po wykonaniu wszystkich ruchów (nawet jeśli nadal
H
jest w pobliżu).Wersja bez golfa:
źródło
RRRUWWWRRRURWWWWRDRRWWRDWWWWD
na dużej mapie dostajesz 6, a on dostaje 8. Zrobił film , być może możesz wydrukować każdy krok i poszukać jakiejkolwiek anomalii ...