Tout entier positif peut être obtenu en commençant par 1 et en appliquant une séquence d'opérations, chacune étant soit «multipliée par 3», soit «divisée par 2, en éliminant tout reste» .
Exemples (écrire f pour * 3 et g pour / 2):
4 = 1 *3 *3 /2 = 1 ffg
6 = 1 ffggf = 1 fffgg
21 = 1 fffgfgfgggf
Écrivez un programme avec le comportement suivant:
Entrée : tout entier positif, via stdin ou codé en dur. (S'il est codé en dur, le numéro d'entrée sera exclu de la longueur du programme.)
Sortie : une chaîne de f et de g telle que <input> = 1 <string>(comme dans les exemples). Une telle chaîne dans l'ordre inverse est également acceptable. NB: La sortie ne contient que des f et g, ou est vide.
Le gagnant est l'entrée avec le moins d'octets de programme-plus-sortie lorsque 41 est l'entrée.
x mod 3: si x=3yconstruire y puis appliquer f; si x=3y+1construire 2y+1et appliquer falors g; si x=3y+2alors cela devient compliqué mais essentiellement récursif.