Intentemos esto de nuevo.
El objetivo de este concurso es hacer dos piezas de código que sean anagramas entre sí (las dos deben contener los mismos bytes en un orden diferente), y realizarán las siguientes tareas:
Uno debe probar si un número ingresado es feliz o primo , y generar si el número es cualquiera (por ejemplo,
7
debe emitirhappy prime
y4
debe emitirsad non-prime
).El otro debe generar su tamaño de código en bytes como una palabra (se generaría un programa de 60 bytes, se generaría
sixty
un programa de 39 bytesthirty-nine
).
Si necesita alguna aclaración sobre las reglas, no dude en decírmelo.
Esta es una competencia de código de golf, por lo que gana el programa más corto.
code-golf
math
primes
source-layout
Josiah Winslow
fuente
fuente
/*program1*/program2
y luegoprogram1/*program2*/
? Creo que deberías rechazar los comentarios.Respuestas:
CJam,
804948 caracteresACTUALIZACIÓN : inspirada en la implementación de Dennis para calcular la suma de cuadrados de dígitos, aquí hay una versión más corta
Happy / Sad Prime / Non-prime:
Cómo funciona:
cuarenta y ocho
Cómo funciona esto:
Pruébalo en línea
El primer programa lee el número de STDIN
Mi solución original de 80 caracteres
Happy / Sad Prime / Non-prime:
ochenta
fuente
CJam,
5049 bytesTest de felicidad y primalidad
Lee un número de STDIN. Ambas pruebas funcionan solo para enteros de 64 bits.
Pruébalo en línea.
Longitud propia
Impresiones para trece y nueve .
fuente
Golfscript - 81
Este programa prueba si un número es feliz y / o primo.
Este programa, un anagrama del último, genera "ochenta y uno" (su tamaño de bytes es una palabra).
Esto debería servir como un ejemplo.
fuente
J - 87 char
Un intento ingenuo de esto en J. Sin uso de la biblioteca estándar, aunque dudo que se acorte más al usar eso.
La línea en la parte superior es un verbo que toma un número entero y diagnostica su felicidad y primalidad como una cadena de salida. La segunda línea es una expresión que devuelve la cadena
eighty-seven
, mientras que la tercera es una función constante que hace lo mismo. Incluí ambos porque ambos eran posibles y porque no sé cuál será la decisión sobre las respuestas de la función en lugar de las del programa, y J no tiene funciones que no contengan argumentos: simplemente le da a una función un argumento ficticioPerdemos la mayoría de los caracteres que buscan la felicidad.
(,[:+/@:*:,.&.":@{:)
es el cuerpo principal que suma los cuadrados de los dígitos de un número, y(1-{:e.}:)
es la prueba de si ese número ya ha ocurrido.sad`happy{~1 e.
convierte esto en un resultado de palabra, y lo adjuntamos al frente de la cadenanon-prime
, potencialmente cortando cuatro caracteres si el número era realmente primo.En el anagrama simplemente ocultamos todos los bits que no están
'eighty-seven'
en una cadena que ignoramos. Podría hacerlo mejor si J tuviera más letras para reutilizar, pero no es así, así que bueno.fuente