Volevo sapere se sarà possibile risolvere il problema di Josepheus usando la lista in python."Josephus-problem" usando la lista in python
In termini semplici, il problema di Josephus consiste nel trovare una posizione in una disposizione circolare che sarebbe sicura se le esecuzioni fossero gestite usando un parametro di salto che è noto in precedenza.
Ad esempio: data una disposizione circolare come [1,2,3,4,5,6,7]
e un parametro di salto di 3, le persone verranno eseguite nell'ordine come 3,6,2,7,5,1
e la posizione 4
sarebbe la cassaforte.
Ho cercato di risolvere questo elenco utilizzando per un po 'di tempo, ma le posizioni dell'indice diventano difficili da gestire per me.
a=[x for x in range(1,11)]
skip=2
step=2
while (len(a)!=1):
value=a[step-1]
a.remove(value)
n=len(a)
step=step+skip
large=max(a)
if step>=n:
diff=abs(large-value)
step=diff%skip
print a
Aggiornato la questione con il frammento di codice, ma non credo che la mia logica è corretta.
Questo algoritmo è incredibile! Puoi condividere questo come sei arrivato con 'idx = (idx + skip)% len (ls)'? So che funziona, ma non ho idee su come la gente possa scoprire in questo modo. Grazie! –
@JayWong è il modo migliore per passare attraverso un array e avvolgere dall'inizio alla fine –