Jelly , 13 personnages significatifs, défi de postdates de langue
R µ ọḊ *@Ḋ ċ >2 µ Ðf
Essayez-le en ligne!
Tous les espaces ici sont insignifiants. Je l'ai utilisé pour montrer la structure de ma réponse, comme le demande la question.
Voici comment ça fonctionne:
R µ ọḊ *@Ḋ ċ >2 µ Ðf
R Ðf Find all numbers n from 1 to the input, such that:
µ µ (grouping marks, like {} in C)
Ḋ Ḋ Take the range from 2 to n
ọ Find the number of times each divides n
*@ Raise the range from 2 to n to these powers
ċ Count the number of times n appears
>2 and the result must be greater than 2
Ainsi, par exemple, lorsque nous testons n = 256, nous vérifions le nombre de fois que chacun des nombres de 2 à 256 se divise en 256. Les seuls nombres qui se divisent plus d'une fois sont 2 (qui se divise 8 fois), 4 (qui divise 4 fois), 8 (qui se divise deux fois) et 16 (qui se divise deux fois). Ainsi, lorsque nous élevons le nombre de divisions aux pouvoirs qui y sont déterminés, nous obtenons:
2⁸, 3, 4⁴, 5, 6, 7, 8², 9, 10, 11, 12, 13, 14, 15, 16², 17, ..., 255, 256
Cela produit la valeur d'origine, 256, un nombre de fois égal à la façon dont 256 est une puissance parfaite, plus un (le dernier élément produit 256 car 256 = 256¹). Donc, si nous voyons 256 plus de deux fois dans le tableau (et nous le faisons dans ce cas; 8² est 64 mais les autres éléments "intéressants" produisent tous 256), cela doit être une puissance parfaite.