Das Schiff des Theseus ist eine alte Frage, die ungefähr so lautet:
Wenn bei einem Schiff alle Originalteile ausgetauscht wurden, ist es dann immer noch dasselbe Schiff?
Für diesen Golf werden wir langsam "Teile" auf einem "Schiff" ersetzen und sehen, wie lange es dauert, ein ganz neues Schiff zu bekommen.
Aufgabe
Ein Schiff besteht aus mindestens zwei Teilen. Die Teile werden als Array von positiven Ganzzahlen (ungleich Null) angegeben, die den Zustand des Teils darstellen.
Wählen Sie in jedem Zyklus zufällig einen Teil aus der Liste auf einheitliche Weise aus. Der Zustand dieses Teils wird um eins verringert. Wenn der Zustand eines Teils Null erreicht, wird es durch ein neues Teil ersetzt. Das neue Teil beginnt mit demselben Bedingungswert wie das Original.
Halten Sie im ersten Zyklus, in dem alle Teile (mindestens) einmal ausgetauscht wurden, an und geben Sie die Anzahl der Zyklen aus.
Zum Beispiel (nehmen wir an, ich wähle Teile hier zufällig aus):
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
Die Ausgabe für dieses Beispiel wäre 8
, da es acht Zyklen dauerte, bis alle Teile ausgetauscht waren. Die genaue Ausgabe sollte für jeden Lauf unterschiedlich sein.
I / O.
Die einzige Eingabe ist die Liste / das Array von Ganzzahlen für die Teilbedingung. Die einzige Ausgabe ist eine Anzahl von Zyklen. Sie können diese Werte auf eine der üblichen Arten annehmen / angeben: STDIO, Funktionsargumente / Rückgaben usw.
Testfälle
Da die Ausgabe nicht festgelegt ist, können Sie alles verwenden, was Sie testen möchten. Hier einige Beispiele für Standardisierungszwecke:
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