Ca faisait un bout de temps que je n'étais pas repassé ici, je vois que @C.Ret a fait de super programmes sur HP-28S et Ti92 !
Merci @caloubugs ton message est sympa, la gazette est prévue pour quand ?
Bon, comme j'étais plongé dans l'APL depuis quelques semaines (ça a du bon le confinement ), je vous livre une version (piquée sur un site) de la suite de Syracuse dans ce langage :
Code : Tout sélectionner
SYR← {1=⍵:0 ⋄ 1+∇⊃⍵⌽0 1+0.5 3×⍵}
Code : Tout sélectionner
SYR 27
111
- Si 1=⍵ renvoyer 0
- Sinon faire 1+ SYR(prochain_nombre) (∇ pour l'appel récursif avec comme paramètre tout ce qui est droite)
- Calcul du prochain nombre : 0.5 3×⍵ donne la liste [0.5⍵ , 3⍵], on y ajoute la liste [0 ,1] ce qui fait [0.5⍵, 3⍵+1]
- Ensuite l'astuce est de faire tourner ⍵⌽ cette liste ⍵ fois, donc si ⍵ est pair la liste ne bouge pas sinon le 3⍵+1 se retrouve en 1ere position
- On prend le premier élément ⊃ de la liste
- Conclusion, si ⍵ est pair on récupère bien 0.5⍵ sinon 3⍵+1