J - 87 car
Une tentative naïve à ce sujet dans J. Pas d'utilisation de la bibliothèque standard, bien que je doute qu'elle se raccourcisse en l'utilisant.
((sad`happy{~1 e.(,[:+/@:*:,.&.":@{:)^:(1-{:e.}:)^:_);@,' ';'gtv]non-prime'}.~4+4*1&p:)
'((ad`app{~1 .(,[:+/@:*:,.&.":@{:)^:(1-{:.}:)^:_);@, ;onprm}.~4+4*1&p:)']'eighty-seven'
('(ad`app{~1 .(,[:+/@:*:,.&.:@{:)^:(1-{:.}:)^:);@, ;onprm}.~4+4*1&p:']'eighty-seven'"_)
La ligne en haut est un verbe prenant un entier et diagnostiquant son bonheur et sa primauté en tant que chaîne de sortie. La deuxième ligne est une expression renvoyant la chaîne eighty-seven
, tandis que la troisième est une fonction constante faisant de même. J'ai inclus les deux parce qu'ils étaient tous les deux possibles et parce que je ne sais pas quelle sera la décision sur les réponses de fonction par opposition aux réponses de programme, et J n'a pas de fonctions sans argument - vous donnez simplement une fonction argument factice.
Nous perdons la plupart des caractères vérifiant le bonheur. (,[:+/@:*:,.&.":@{:)
est le corps principal qui additionne les carrés des chiffres d'un nombre, et (1-{:e.}:)
est le test pour savoir si ce nombre s'est déjà produit. sad`happy{~1 e.
transforme cela en un résultat de mot, et nous l'attachons à l'avant de la chaîne non-prime
, coupant potentiellement quatre caractères si le nombre était réellement premier.
Dans l'anagramme, nous masquons simplement tous les bits qui ne sont pas 'eighty-seven'
dans une chaîne que nous ignorons. Je pourrais faire mieux si J avait plus de lettres à réutiliser, mais ce n'est pas le cas, alors eh bien.
/*program1*/program2
et ensuiteprogram1/*program2*/
? Je pense que vous devriez interdire les commentaires.