J - 87 char
Ein naiver Versuch dies in J. Keine Verwendung der Standardbibliothek, obwohl ich bezweifle, dass sie dadurch kürzer werden würde.
((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'"_)
Die Zeile oben ist ein Verb, das eine Ganzzahl nimmt und deren Glück und Ursprünglichkeit als Ausgabezeichenfolge diagnostiziert. Die zweite Zeile ist ein Ausdruck, der die Zeichenfolge zurückgibt eighty-seven
, während die dritte eine konstante Funktion ist, die dasselbe tut. Ich habe beide eingeschlossen, weil beide möglich waren und weil ich nicht weiß, wie das Urteil über Funktionsantworten im Gegensatz zu Programmantworten lauten wird, und J keine Funktionen ohne Argumente hat - Sie geben einfach eine Funktion a Dummy-Argument.
Wir verlieren die meisten Zeichen, die nach Glück suchen. (,[:+/@:*:,.&.":@{:)
ist der Hauptteil, der die Quadrate der Ziffern einer Zahl summiert, und (1-{:e.}:)
ist der Test, ob diese Zahl bereits aufgetreten ist. sad`happy{~1 e.
verwandelt dies in ein Wortergebnis, und wir hängen es an die Vorderseite der Zeichenfolge an non-prime
und schneiden möglicherweise vier Zeichen ab, wenn die Zahl tatsächlich eine Primzahl war.
Im Anagramm verstecken wir einfach alle Bits, die nicht 'eighty-seven'
in einer Zeichenfolge enthalten sind, die wir ignorieren. Ich könnte es besser machen, wenn J mehr Buchstaben zur Wiederverwendung hätte, aber das tut es nicht, also na ja.
/*program1*/program2
und dannprogram1/*program2*/
? Ich denke, Sie sollten Kommentare nicht zulassen.