La nave di Teseo è una vecchia domanda che si presenta come:
Se a una nave sono state sostituite tutte le sue parti originali, è sempre la stessa nave?
Per questo golf, sostituiremo lentamente le "parti" su una "nave" e vedremo quanto tempo impiegherà per ottenere una nave completamente nuova.
Compito
Una nave è composta da almeno due parti. Le parti sono fornite come una matrice di numeri interi positivi (diversi da zero), che rappresentano le condizioni della parte.
Ad ogni ciclo, scegli casualmente una parte dall'elenco in modo uniforme. Le condizioni di quella parte saranno ridotte di una. Quando la condizione di una parte raggiunge lo zero, viene sostituita da una nuova parte. La nuova parte inizia con lo stesso valore di condizione dell'originale.
Nel primo ciclo in cui tutte le parti sono state sostituite (almeno) una volta, arrestare ed emettere il numero di cicli necessari.
Ad esempio (supponiamo che io scelga parti casualmente qui):
2 2 3 <- starting part conditions (input)
2 1 3 <- second part reduced
2 1 2 ...
2 1 1
2 2 1 <- second part reduced to zero, replaced
1 2 1
1 2 3 <- third part replaced
1 1 3
2 1 3 <- first part replaced
L'output per questo esempio sarebbe 8, poiché ci sono voluti otto cicli per sostituire tutte le parti. L'output esatto dovrebbe differire per ogni serie.
I / O
L'unico input è la lista / matrice di numeri interi per la condizione della parte. L'unico output è un numero di cicli. Puoi prendere / dare questi valori in uno dei modi usuali: STDIO, argomenti / ritorni di funzione, ecc.
Casi test
Poiché l'output non è stato risolto, è possibile utilizzare tutto ciò che si desidera testare, ma ecco un paio per scopi di standardizzazione:
1 2 3 4
617 734 248 546 780 809 917 168 130 418
19384 74801 37917 81706 67361 50163 22708 78574 39406 4051 78099 7260 2241 45333 92463 45166 68932 54318 17365 36432 71329 4258 22026 23615 44939 74894 19257 49875 39764 62550 23750 4731 54121 8386 45639 54604 77456 58661 34476 49875 35689 5311 19954 80976 9299 59229 95748 42368 13721 49790