Regole di base (diverse dalle mie)
Storia
È l'anno 4579, gli umani ora hanno 2 mani con 1001 dita ciascuna. Le bacchette si sono basate su punti. E @Dennis ha più rappresentanti di @Martin ... I cerchi rossi disegnati a mano sono ora sottoposti a downvoting ... Jon Skeet ha raggiunto 2 trilioni di rep su ogni sito SE ... Sì, lo so, lo so
Le bacchette sono un gioco a mano che è stato risolto. Quindi per aggirare questo l'ho creato mutato. Ho aumentato la quantità di dita.
Le regole del gioco
Il modo in cui questo è giocato
Tutti iniziano con 2 mani. Ogni mano ha 1001 dita. Ogni mano inizia con 1 (un) dito su ogni mano. Durante il tuo turno puoi "colpire" la mano degli altri giocatori. Per colpirti scegli 1 delle tue mani con cui colpire e 1 delle loro mani per colpire. La mano che è stata colpita ora ha la quantità di dita che inizialmente era E la quantità di dita che avevi sulla mano con cui hai colpito.
EX
P1: 1,1
P2: 1,1
. P1[0]
colpi P2[1]
. Adesso sono le dita P1:1,1
P2:1,2
. Adesso P2[1]
colpisce p1[0]
. Le dita ora sono P1: 3,1
P2 1,2
.
Se una mano arriva a 1001 o più dita allora quella mano è fuori. Quindi il giocatore che ha ottenuto una mano (per il proprio turno) può "dividere". La divisione è quando prendi la mano che è dentro e dividi la metà delle dita (arrotondando per eccesso) e dai quelle dita all'altra mano per farla rientrare.
EX
P1: 1000,2
P2 7,7
. P2[0]
colpi P1[0]
. Il punteggio è P1: 0,2
P2 1,1
. P1[1]
si divide per il suo turno e il punteggio è P1: 1,1
e P2 7,7
.
Il gioco termina quando un giocatore ha entrambe le mani. I punti vengono assegnati in base alla quantità di dita del vincitore. Più punti = meglio. Il perdente non guadagna punti.
Ci sono altre regole che vengono utilizzate, ma queste sono quelle utilizzate qui.
Tutti suonano tutti (round robin)
Fine del gioco
Totalizza i tuoi punti per ogni round vinto. Quindi fai la media di tutti i punti. Dividi il totale per i punti medi e ottieni il tuo punteggio finale. La maggior parte dei punti vince.
Regole effettive
Per favore, non provare a risolvere il gioco. In realtà devo essere in grado di eseguirlo: P
Assicurati che il bot possa funzionare velocemente. A giudicare dalla durata dei round, ci vorrà del tempo
Tutte le librerie necessarie nel tuo programma devono essere nella libreria python predefinita. Elenca anche quelli che devi importare. Le importazioni saranno solo le importazioni di base (per la matematica che faccio import math
:)
Le risposte devono funzionare in Python 3.x
handler
Il tuo bot sarà il suo file Python 3 con una play
funzione.
play
saranno passati due elenchi di due numeri ciascuno. Questo numero indica quante dita ci sono su ogni mano. Il primo elenco è di tua mano.
Se scegli di colpire la mano dell'altro giocatore, quindi restituisci un elenco di due bit. Il primo bit è l'indice della mano che stai usando per colpire ( 0
per il primo, 1
per l'ultimo), e il secondo bit è l'indice della mano che stai colpendo sull'avversario.
Se si sceglie di dividere, restituire qualsiasi altro valore di verità.
Tada!
Il controller può essere trovato qui . Salvare ciascun bot nel proprio file ed elencare il nome di ciascun bot (senza .py
) in botnames
.
Nota finale:
Tu e l'altro robot inizierete a turno per primi. Se il gioco non termina in 100.000 (centomila) round, il gioco verrà chiuso e nessuno dei due bot vincerà.
Il controller non è protetto dalle mosse che richiedono un'eternità, ma le spese generali non necessarie saranno fortemente disapprovate.
My handler is very simple, your bot must do it's logic then adjust the the finger scores as needed, remember!
Cosa, quindi siamo noi a fare i calcoli per il KoTH?