Le navire de Thésée est une vieille question qui ressemble à:
Si un navire a fait remplacer toutes ses pièces d'origine, est-ce toujours le même navire?
Pour ce golf, nous allons remplacer lentement les «pièces» sur un «navire» et voir combien de temps il faut pour obtenir un tout nouveau navire.
Tâche
Un navire est composé d'au moins deux parties. Les pièces sont données sous la forme d'un tableau d'entiers positifs (non nuls), représentant l'état de la pièce.
À chaque cycle, choisissez au hasard une partie de la liste de manière uniforme. L'état de cette pièce sera réduit de un. Lorsque l'état d'une pièce atteint zéro, elle est remplacée par une nouvelle pièce. La nouvelle pièce commence avec la même valeur de condition que l'original.
Lors du premier cycle où toutes les pièces ont été remplacées (au moins) une fois, arrêtez et affichez le nombre de cycles nécessaires.
Par exemple (supposons que je choisis des pièces au hasard ici):
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
La sortie pour cet exemple serait 8
, car il a fallu huit cycles pour que toutes les pièces soient remplacées. La sortie exacte doit différer pour chaque exécution.
E / S
La seule entrée est la liste / tableau d'entiers pour l'état de la pièce. La seule sortie est un certain nombre de cycles. Vous pouvez prendre / donner ces valeurs de l'une des manières habituelles: STDIO, arguments / retours de fonction, etc.
Cas de test
Étant donné que la sortie n'est pas fixe, vous pouvez utiliser tout ce que vous voulez tester, mais voici quelques exemples à des fins de normalisation:
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