Dies basiert auf dieser Herausforderung und der Idee von Geobits / CarpetPython, sie zu verbessern:
Bei dieser Herausforderung wird der Abstand zwischen zwei Zahlen in einer Schleife gemessen, sodass beispielsweise der Abstand zwischen 0 und 999 1 beträgt. Dies sollte verhindern, dass Strategien wie die Auswahl der niedrigsten oder höchsten Zahl fast jedes Mal gewinnen. Die einzige andere Änderung ist, dass die niedrigste Zahl, die gewählt werden kann, jetzt 0 statt 1 ist.
Ich werde es hier zusammenfassen:
- Schreiben Sie eine Funktion in Java, Python oder Ruby, die drei Argumente akzeptiert:
- die Anzahl der bisher gespielten Runden
- die Anzahl der Spieler
- Die in den vorherigen Runden ausgewählten Zahlen als Array von durch Leerzeichen getrennten Zeichenfolgen
- Es sollte eine Ganzzahl von 0 bis einschließlich 999 zurückgeben
- Die Punktzahl für ein Programm in jeder Runde ist die Summe der Quadratwurzeln der Abstände zu den Zahlen, die jedes andere Programm ausgewählt hat
- Das Programm mit der höchsten Punktzahl nach 100 Runden gewinnt.
- Eine Antwort pro Person
Das Steuerungsprogramm ist hier:
https://github.com/KSFTmh/src/
Bestenliste
NumberOne von TheBestOne gewinnt.
- NumberOne - 9700
- NumberOnePlusFourNineNine - 9623
- AncientHistorian - 9425
- FindCampers - 9259
- WowThisGameIsSoDeep - 9069
- Sampler - 9014
- SabotageCampers - 8545
Anscheinend funktioniert meine Camper-Sabotage ... ähm (?) Nicht sehr gut.
Hier sind die vollständigen Ergebnisse: https://github.com/KSFTmh/src/blob/master/results-3
Ich denke, das ist anders genug, um kein Duplikat zu sein.
Übrigens stelle ich zum ersten Mal eine Frage zu Stack Exchange. Lassen Sie mich wissen, wenn ich etwas falsch mache.
quelle
Antworten:
Python 2, Sampler
Dieser Eintrag basiert auf dem gleichen Code für Abstand halten, Sampler-Eintrag . Ich hoffe, es wird hier besser, wo die Vorteile 1 und 999 nicht existieren.
Wählen Sie aus einer Liste von Orten diejenige aus, die am weitesten von den zuletzt verwendeten Zahlen entfernt ist, und ignorieren Sie dabei die vorherige Runde (da andere Einträge möglicherweise nur auf der Grundlage der vorherigen Runde vorhersagen).
quelle
Nummer OnePlusFourNineNine, Java
Die Logik ist wirklich einfach. Sofern jemand keinen echten Algorithmus findet, der frühere Ergebnisse berücksichtigt, ist diese Antwort ziemlich optimiert.
Nachdem wir nun die Entfernung in einem Kreis gezählt haben, kann die maximale Entfernung von zwei beliebigen Punkten 500 betragen. Wenn nun alle Einträge Zufallszahlen (oder Pseudozufallszahlen basierend auf einem Algorithmus) generieren würden, wäre diese Antwort überhaupt nicht vorteilhaft gewesen . Es gibt jedoch mindestens einen Eintrag, der eine konstante Antwort ergibt, die eine fast maximale Entfernung aufweist. Das macht die Punktzahl zugunsten von 500, da in jeder Runde eine feste Quelle für die maximal mögliche Distanz vorhanden ist :)
quelle
AncientHistorian - Python
Es ist der gleiche Algorithmus wie beim vorherigen, außer dass bei der Berechnung der potenziellen Bewertungen der Kreisabstand verwendet wird. Da ich schrecklich verliere und den Controller nicht zum Kompilieren bringen kann, versuche ich nur eine neue Strategie, bei der ich das Schlimmste aus den vorherigen Runden verwende.
quelle
i
ist ein Element vonscores.split(' ')
, was bedeutet, dass es ein String ist, kein int.SabotageCampers - Python
Die Camper gewinnen immer noch. Lassen Sie mich wissen, wenn Sie Vorschläge dazu haben.
quelle
FindCampers - Python 2
Finde alle Camper der letzten 10 Runden und halte dich von ihnen fern. Ich hoffe, dass Prädiktoren vor mir davonlaufen. Ich werde jetzt meine alten Entscheidungen ignorieren.
quelle
Nummer Eins, Java
Die erste Antwort. Von meiner vorherigen Antwort kopiert .
quelle
WowThisGameIsSoDeep, Java
Ich habe das Spiel 10 Jahre lang auf einem 1-Millionen-Kern-Cluster analysiert und die optimale Lösung gefunden.
quelle
Random.nextInt(int)
.Zirkilinearer Extrapolator, Ruby
quelle
NoMethodError: undefined method `split' for #<Array:0x720f56e2> choose at CircilinearExtrapolator.rb:2
previous_choices
eine Reihe von Werten wie["1 6 500","2 8 503"]
?