Opis
Utwórz w pełni działającą grę „Zgadnij liczbę”. W grze bierze udział dwóch graczy:
- gracz jeden wybiera liczbę (A) między 1 a N
- gracz drugi próbuje zgadnąć A wybierając liczbę (B) z tego samego zakresu
- pierwszy gracz odpowiada „wyżej”
if A > B
, „niżej”if A < B
lub „poprawnie”if A = B
. - kroki 2-3 są powtarzane I razy lub do momentu odpowiedzi „poprawne”.
- Jeśli usłyszysz „prawidłowe”, gracz dwa wygrywa, w przeciwnym razie przegrywa.
Okular
Minimalne specyfikacje dla prawidłowego wpisu:
- użytkownik może grać jako gracz jeden lub gracz drugi.
- komputer odgrywa drugą rolę.
- komputer musi naprawdę zgadnąć numer podczas gry jako gracz drugi (zgadywanie na podstawie danych lub ignorowanie danych jest oszustwem)
- N = 100 lub dane wprowadzone przez użytkownika (do wyboru)
- I = 5 lub dane wprowadzone przez użytkownika (twój wybór)
- program musi ogłosić zwycięzcę na końcu.
- pełne instrukcje czytelne dla człowieka, co robić na każdym etapie (np. „Graj jako gracz jeden lub gracz drugi?” , „Podaj inną odpowiedź:” itd.) - nie zwariuj na tym punkcie ; po prostu to proste.
Warunki wygranej
W tej kolejności:
- Wpis o najwyższej liczbie głosów wygrywa, jeśli uzyska co najmniej 3 głosy przed drugim w kolejności numerem w głosowaniu.
- Zwycięża najkrótsza pozycja.
code-challenge
game
Eelvex
źródło
źródło
Odpowiedzi:
Windows PowerShell, 289
Historia:
while
→for
else{if...}
→elseif
- zapisuje nawiasy klamrowe.switch
aby uniknąć nazywania pętli. Teraz mogę też użyć justbreak
i pipeline. Ogłoszenie zwycięzcy zostało przeniesione do używanego filtraexit
więc nigdy nie jest wymagana przerwa.elseif
łańcucha do sprawdzania zgadywania po prostu używam łańcucha formatu o różnych wartościach dla wartości ujemnych, dodatnich i zerowych. Dużo oszczędza.źródło
TRS-80 BASIC, 249 znaków
Myślę, że może to być pierwszy raz, kiedy przesłałem odpowiedź na tę stronę, którą napisałem przed jej istnieniem.
W rzeczywistości napisałem to zanim istniała ogólnoświatowa sieć. W latach 80., gdy TRS-80 stały się nieistotne.
To jest przykład „jednej linijki” - próby dopasowania najciekawszego programu, jaki można zastosować do jednej linii języka BASIC. To był mój pierwszy jednoliniowy i niezbyt imponujący. (Było tam kilka niesamowitych jedno-liniowców.)
Linia TRS-80 BASIC była ograniczona do 255 znaków, minus kilka narzutów. Chociaż czasem można to było przekroczyć, ponieważ prawdziwy limit wynosił 255 bajtów po tokenizacji - ale edytor obcinałby również linię, która miała ponad 255 znaków przed tokenizacją, i trzeba było używać sztuczek w edytorze linii, aby wstawić dosłowne znaki sterujące jak nowe linie w swoich ciągach.
I tak, aby wyjaśnić, te podziały wiersza na liście są dosłownie znakami nowej linii. (Aby umieścić je w kodzie, trzeba było użyć
C
polecenia hange podczasEDIT
wstawiania wiersza. Całkowity ból, ale warto zastąpić osiem lub więcej znaków+CHR$(13)
jednym).Cholera, grałem w golfa od dłuższego czasu.
źródło
C 397 Znaków
W bardziej czytelnej formie.
źródło
DO#:
Liczba znaków: ze spacjami: 575 Bez spacji: 464
Edycja do while jest teraz „Goto” ( dreszcz )
źródło
Dobra stara zwykła C
źródło
JavaScript
Nowa zminimalizowana wersja (odrzucone
var
i zredukowanealert
połączenia:268 znaków
Aby uruchomić wywołanie
g(100);
, samodzielne wykonanie nie jest liczone, ponieważ dodaje zmienną liczbę znaków (275 znakówg(100);
).oryginał (około 600 znaków, w tym białe znaki):
Zminimalizowane (312) :
źródło
Python 2,7
334335327314300 znaków (mój pierwszy golf)(335) Zapomniałem uciec od nowej linii.
(327) Usunięto zbędne 100 dla randinta. Porównanie pierwszego znaku odpowiedzi zamiast całego łańcucha.
(314) Zaktualizowano drukowanie, który wygrał.
(300) Zmieniono, gdy gracz był graczem 1: zmieniono zgadywanie numeru jako komputera
źródło
BASIC, 184
Oto wersja bez AI.
źródło
code-golf
.Lua 360 Chars
Wersja bez gry w golfa:
źródło
JavaScript
Ma około 800 znaków i obejmuje podstawowy wybór binarny „AI” dla połowy gracza komputerowego. Prawdopodobnie mógłbym uratować kilka postaci, gdybym pozbył się wszystkich
var
ale nie lubię przeciekać zmiennych, nawet podczas gry w golfa. Zrobiłem również dwa kroki: „Czy to jest poprawne?” / „Czy to jest wyższe?” rzecz z potwierdzaniem wyskakujących okienek zamiast dawania szybkiego wyskakującego okienka i sprawdzania „poprawnego” / „wyższego” / „niższego”, chociaż może to również uratować niektóre znaki, tak naprawdę nie sprawdzałem.Testowałem go tylko w Firefoksie 4, więc nie wiem, czy niektóre rzeczy, które robię, działają konsekwentnie, w szczególności łącząc nieprawidłowe wejście, parsowane jako NaN, do wartości domyślnej w mojej
wp
funkcji.źródło
Java, 1886 znaków
Wersja bez gry w golfa:
źródło
int a=5,b=10
(34). Możesz nazwać argumenty w konstruktorze innym niż pola, których należy unikaćthis.
(10). MożeszL
całkowicie wyeliminować, ponieważ zawsze pozostaje na1
(4). Możesz zrezygnować z inicjowaniaH
iG
które i tak zostaną ustawione w konstruktorze (6). Możesz używać nazw jednoliterowych dla wszystkich zmiennych i metod (235).fuzzify
za pomocą operatora warunkowego (20). Możesz wstawićBufferedReader
ingetInt
(19). Możesz użyć,String#matches
aby uniknąćPattern
iMatcher
wgetInt
(48). Możesz również użyć operatora warunkowego wprocessGuess
(30). Jestem teraz w dół do 1360 zamiast twojego początkowego 1953.Radio z budzikiem, 5756 bitów (2159 bajtów)
Już wkrótce w pobliżu budzik! Nowe linie służą wyłącznie do odczytu. Wartości ASCII są czasami używane zamiast dosłownego wyświetlacza numerycznego na ekranie. Pasuje do specyfikacji. Używa wartości domyślnych dla
A
iI
. Przy pierwszym wprowadzeniu użyj wartości NULL, aby zgadnąć, w przeciwnym razie ustawisz liczbę. PADSIZE MUSI BYĆ 4! KOMÓRKI MUSZĄ BYĆ 7-BITOWE I ZWIJANE! Turing-kompletny! Wyjściahigher
,lower
,correct
,you won
, iyou lost
.źródło
Rubinowy 1.9 (298)
Jednak niezbyt przyjazne instrukcje.
źródło
Czułem potrzebę oddania Java trochę sprawiedliwości. :)
Java -
486437421414Grał w golfa
Nieznacznie niepoddany golfowi
źródło