Jest to oparte na tym wyzwaniu i pomyśle Geobits / CarpetPython, aby je poprawić:
W przypadku tego wyzwania odległość między dwiema liczbami jest mierzona na pętli, więc na przykład odległość między 0 a 999 wynosi 1. To powinno zapobiec strategiom, takim jak zawsze wybieranie najniższej lub najwyższej liczby, wygrywanie prawie za każdym razem. Jedyną inną zmianą jest to, że najniższą liczbą, którą można wybrać, jest teraz 0 zamiast 1.
Podsumuję to tutaj:
- Napisz funkcję w Javie, Pythonie lub Ruby, która pobiera trzy argumenty:
- liczba rozegranych rund do tej pory
- liczba graczy
- liczby wybrane w poprzednich rundach, jako tablica ciągów rozdzielonych spacjami
- Powinien zwrócić liczbę całkowitą od 0 do 999 włącznie
- Wynik dla programu w każdej rundzie jest sumą pierwiastków kwadratowych odległości do liczb, które wybrał każdy inny program
- Program z najwyższym wynikiem po 100 rundach wygrywa.
- Jedna odpowiedź na osobę
Program sterujący jest tutaj:
https://github.com/KSFTmh/src/
Tabela liderów
NumberOne, TheBestOne, wygrywa.
- NumberOne - 9700
- NumberOnePlusFourNineNine - 9623
- AncientHistorian - 9425
- FindCampers - 9259
- WowThisGameIsSoDeep - 9069
- Próbnik - 9014
- Sabotaż Obozowiska - 8545
Najwyraźniej mój sabotaż kampera ... er (?) Nie działa zbyt dobrze.
Oto pełne wyniki: https://github.com/KSFTmh/src/blob/master/results-3
Myślę, że jest to wystarczająco inne, aby nie być duplikatem.
Nawiasem mówiąc, po raz pierwszy zadaję pytanie na Stack Exchange, więc daj mi znać, jeśli robię coś źle.
źródło
Odpowiedzi:
Python 2, Sampler
Ten wpis jest oparty na tym samym kodzie dla Zachowaj odległość, wpis Samplera . Mam nadzieję, że będzie lepiej tutaj, gdzie nie ma zalet 1 i 999.
Z listy miejsc wybierz tę, która jest najbardziej oddalona od ostatnio używanych liczb, ignorując poprzednią kolej (ponieważ inne wpisy mogą przewidywać na podstawie tylko poprzedniej kolejki).
źródło
Numer OnePlusFourNineNine, Java
Logika jest naprawdę prosta. O ile ktoś nie znajdzie prawdziwego algorytmu, który bierze pod uwagę poprzednie wyniki, odpowiedź ta jest dość zoptymalizowana.
Teraz, gdy policzymy odległość w okręgu, maksymalna odległość dowolnych dwóch punktów może wynosić 500. Teraz, gdyby wszystkie wpisy generowały liczby losowe (lub pseudolosowe na podstawie jakiegoś algorytmu), ta odpowiedź w ogóle nie byłaby korzystna . Ale jest co najmniej 1 wpis, który daje stałą odpowiedź, która jest prawie maksymalną odległością. Sprawia, że wynik jest na korzyść 500, ponieważ w każdej rundzie istnieje stałe źródło maksymalnej odległości :)
źródło
AncientHistorian - Python
Jest to ten sam algorytm z poprzedniego, z wyjątkiem tego, że przy obliczaniu potencjalnych wyników używa odległości kołowej. Ponieważ strasznie przegrywam i nie mogę zmusić kontrolera do kompilacji, po prostu próbuję nowej strategii, w której wykorzystuję najgorsze z poprzednich rund.
źródło
i
jest elementemscores.split(' ')
, co oznacza, że jest łańcuchem, a nie liczbą całkowitą.SabotageCampers - Python
Obozowicze wciąż wygrywają. Daj mi znać, jeśli masz jakieś sugestie.
źródło
FindCampers - Python 2
Znajdź wszystkich obozowiczów z ostatnich 10 rund i trzymaj się od nich z daleka. Mam nadzieję, że predyktory mi uciekną. Teraz zignoruję moje stare wybory.
źródło
Numer jeden, Java
Pierwsza odpowiedź. Skopiowano z mojej poprzedniej odpowiedzi .
źródło
WowThisGameIsSoDeep, Java
Analizowałem grę przez 10 lat w klastrze o milionie rdzeni i znalazłem optymalne rozwiązanie.
źródło
Random.nextInt(int)
.Ekstrapolator kołowy, Ruby
źródło
NoMethodError: undefined method `split' for #<Array:0x720f56e2> choose at CircilinearExtrapolator.rb:2
previous_choices
tablica wartości jak["1 6 500","2 8 503"]
?