Contexte
Quand j'étais à l'école primaire, nous jouions à un jeu en classe de mathématiques qui se déroulait comme suit.
Tous les enfants sont assis dans un grand cercle et comptent à tour de rôle, à partir de 1 .
Toutefois, les nombres suivants doivent être ignorés lors du comptage:
- Les nombres qui sont des multiples de 3 .
- Nombres qui ont un 3 dans sa représentation décimale.
Les 15 premiers chiffres que les enfants devraient dire sont
1 2 4 5 7 8 10 11 14 16 17 19 20 22 25
Chaque fois que quelqu'un se trompe dans un numéro - dit un nombre qui n'est pas dans la séquence ou saute un nombre qui est - il est retiré du cercle. Cela continue jusqu'à ce qu'il ne reste qu'un seul enfant.
Tâche
Vous êtes mauvais à ce jeu, alors vous décidez de tricher. Ecrivez un programme ou une fonction qui, à partir d'un numéro de séquence, calcule le numéro suivant de la séquence.
Vous n'avez pas à gérer des nombres qui ne peuvent pas être représentés à l'aide du type numérique natif de votre langue, à condition que votre programme fonctionne correctement jusqu'à l'entrée 251 et que votre algorithme fonctionne pour des entrées arbitrairement grandes.
L'entrée et la sortie peuvent utiliser n'importe quelle base pratique.
Puisque vous devez cacher votre code, il doit être aussi court que possible. En fait, c'est du code-golf , donc le code le plus court en octets l'emporte.
Cas de test
1 -> 2
2 -> 4
11 -> 14
22 -> 25
29 -> 40
251 -> 254
7
qui était omis quand je le jouais, mais vous diriez autre chose, au lieu de passer au numéro suivant.