Persistent bugger: https://www.codewars.com/kata/55bf01e5a717a0d57e0000ec
📊 Compare perfs of different versions.
Persistent bugger: https://www.codewars.com/kata/55bf01e5a717a0d57e0000ec
📊 Compare perfs of different versions.
| function persistence(num) { | |
| // | |
| // Brouillon | |
| // --- | |
| // ex avec 99 | |
| // 9 9 -> 9*9 -> splitter le num en une liste de digits | |
| // | |
| // Pseudo-code: | |
| // --- | |
| // declarer un compteur | |
| // tant que le prod >= 10 | |
| // splitter les digits | |
| // faire le produit des digits | |
| // compteur++ | |
| // | |
| // retourner le compteur | |
| // | |
| let i = 0; | |
| let prod = num; // 99 | |
| while (prod >= 10) { | |
| // splitter les digits (en un tableau de chiffres) | |
| const digits = (""+prod).split('').map(el => Number(el)) // [9, 9] | |
| // en faire le produit | |
| prod = digits.reduce((acc, el) => acc * el) // 81 | |
| i++ // 1 | |
| } | |
| return i | |
| } |
| // recursive version | |
| function persistence(num, a=0) { | |
| if (num >= 10) { | |
| const digits = (""+num).split('').map(el => +el); | |
| const prod = digits.reduce((acc, el) => acc*el); | |
| return persistence(prod, a+1) | |
| } else { | |
| return a; | |
| } | |
| } |