Bonjour,
Vu qu’il y a besoin de définir une fonction qui n’est même pas comprise dans le problème, je trouve que ce n’est même pas rigolo ou sympathique.
Pour le coup, je préfère largement la version mathématique, avec une variante: écrire les nombres de 1 à X en n’utilisant que le chiffre 4 un minimum de fois. ON peut le faire aussi avec un autre chiffre que 4, avec 9 c’est pas mal non plus.
Par exemple jusqu’à 10 j’arrive avec 23 fois le chiffre 4 (et même 21 si on autorise un petit truc en plus).
C’est certes toujours aussi inutile, mais au moins c’est rigolo et créatif.
Je pense qu’il y a un autre intérêt pour écrire le code avec moins de caractères, l’intérêt serait La compression ,plus dans un texte il y a des caractères répétitives plus la compression serait efficace.
Dans ce cas précis, ce n’est même pas intéressant avec la compression.
Selon la page wikipedia de JSFuck:
< JSFuck code is extremely "verbose": In JavaScript, the code `alert(" Hello World!")` , which causes a pop-up window to open with the text "Hello world", is 21 characters long. In JSFuck, the same code has a length of 4325 characters.
ON a 6 caractères différents, on a donc besoin de log2(6)
= 2.585 bits par caractères, soit 11181 bits au total, contre 21 * 8
= 168 bits pour la version normale.
A partir de là j’ai du mal à croire que les algorithmes sans perte arrivent à compresser à 98%, et on n’a pas pris en compte qu’on peut compresser aussi le JS normal (et gagner sûrement quelques bits).
OK, le calcul est faux, la distribution statistique des 6 caractères n’est pas uniforme, mais je ne pense pas que ça change grand chose à la conclusion.