Qualsiasi numero intero positivo può essere ottenuto iniziando con 1 e applicando una sequenza di operazioni, ognuna delle quali è "moltiplica per 3" o "divide per 2, scartando ogni resto" .
Esempi (scrivendo f per * 3 eg per / 2):
4 = 1 *3 *3 /2 = 1 ffg
6 = 1 ffggf = 1 fffgg
21 = 1 fffgfgfgggf
Scrivi un programma con il seguente comportamento:
Input : qualsiasi numero intero positivo, tramite stdin o hard-coded. (Se codificato, il numero di input verrà escluso dalla lunghezza del programma.)
Output : una stringa di f e g tale che <input> = 1 <string>(come negli esempi). È accettabile anche una tale stringa in ordine inverso. NB: L'output contiene solo f e g oppure è vuoto.
Il vincitore è la voce con il minor numero di byte di programma più un output quando 41 è l'input.
x mod 3: se x=3ycostruisci y e poi applica f; se x=3y+1costruire 2y+1e applicare fquindi g; se x=3y+2poi diventa complicato ma essenzialmente è ricorsivo.