La tarea es simple: su programa lee un número entero como entrada e imprime si es primo o no. Puede imprimir "sí / no", "verdadero / falso" o cualquier cosa que identifique inequívocamente el resultado.
El desafío es que el código tiene que funcionar con sus filas y columnas transpuestas.
Para excluir la solución obvia (la solución "simple" más corta repetida verticalmente char-by-char con el uso de comentarios), la métrica es un poco diferente del código de golf habitual:
Debido a que el formato es muy importante en este desafío , el tamaño del código se mide en el área del rectángulo más pequeño en el que se ajusta el código. En otras palabras, el espacio en blanco sí cuenta y las líneas deben rellenarse para que tengan la misma longitud (no tiene que hacerlo cuando publique la solución, por simplicidad). Por ejemplo
int main()
{
return 0;
}
tendría un tamaño de 4 * 13 = 52 (y obviamente no se ajusta a ninguno de los dos criterios: detección principal y transposición).
El tamaño más pequeño gana.
Puede usar cualquier idioma y cualquier función de biblioteca, excepto si el único propósito de esa función es encontrar, generar o detectar números primos.
Editar:
Si bien el ganador probablemente sería la solución Golfscript, ¡otorgaré una recompensa de 50 puntos por la mejor solución C o C ++!
Respuestas:
GolfScript, 13 × 1
¡GolfScript ataca de nuevo!
Repite la entrada si es primo; de lo contrario, imprime la entrada concatenada con su divisor adecuado más pequeño. Sí, sé que eso está ampliando la definición de "cualquier cosa que identifique inequívocamente el resultado", pero hacer algo más elegante costaría unos pocos caracteres adicionales. Si desea una salida más agradable, agregar los tres caracteres
;]!
al código produce1
primos y0
números compuestos.El algoritmo es realmente ineficiente, solo la división de prueba de fuerza bruta de 2 a n −1. La mayoría de los operadores de GolfScript son solo caracteres individuales, por lo que este código funciona igual de bien transpuesto. Sin embargo, molestamente, el operador de asignación
:
no permite espacios en blanco entre sí y su objetivo, por lo que tuve que hacer esto completamente sin variables.fuente
!
? ¿O tenías algo más elegante en mente?)
antes,
para que siempre encuentre un divisor y=
al final.:
seguido de nueva línea, se asigna al carácter de nueva línea, por lo que no es que el espacio en blanco no esté permitido, es solo que el espacio en blanco es lo que se le asigna:
no permite espacios en blanco, o cualquier otra cosa , entre sí y su objetivo: lo que sea que lo siga inmediatamente, ya sea espacio en blanco o cualquier otro token (sí, incluso números, cadenas o bloques de código), es a lo que se le asigna. Sin embargo, la documentación oficial advierte específicamente sobre el espacio en blanco, y por una buena razón, ya que en la mayoría de los otros lugares, agregar espacios en blanco entre los tokens en GolfScript no hace nada (normalmente, a menos que se haya asignado a ...).C,
2 * 702 * 60Imprime
y
para primos, nada de lo contrario.EDITAR : Se modificó el código para guardar 10 caracteres. Debe ejecutarse sin parámetros (así
m=1
).El método para manejar la transposición es bastante genérico y puede aplicarse a cualquier programa.
Se basa en convertir esto:
A esto:
Y ambos significan simplemente
abcd
.fuente
C - 13x13
Lee la entrada de stdin e imprime a
1
for prime y a0
for not prime.editar: compila con gcc y clang ahora, otros compiladores no fueron probados
fuente
C, 12x12 caracteres
Una solución bidimensional, a diferencia de mi otra respuesta , basada en el mismo código (y al igual que, imprime
y
para prime, nada para composite).La estructura es similar a la respuesta de Quasimodo , pero mi código es más corto y creo que mi uso de comentarios es un poco más eficiente, por lo que puedo ajustar 12x12.
fuente
Perl, 14 x 14
Creo que me estoy acostumbrando a esto. Especifique el número como argumento de línea de comando, salidas
0
o1
. Probablemente más margen de mejora.fuente
Q
Comentarios maltratados para una solución simétrica de carácter ineficiente.
Toma información de STDIN, devuelve un booleano.
fuente
sqrt
de allí. Al buscar números primos en code-golf, generalmente es ventajoso dividir (derrochador) hasta n en lugar de detenerse en sqrt n.Gelatina , cuadrado 2x2
Pruébalo en línea!
Creo que tengo la parte de transposición correcta, y si es así, la versión transpuesta de esto es
Pruébalo en línea!
(que es el mismo código)
fuente
05AB1E ,
1x51x3 (53 bytes )Este no es un gran programa; cada línea es un programa alternativo separado para abordar el primer cheque (sin usar el primo incorporado).
-2 bytes gracias a Grimy .
Los espacios en blanco entre líneas son no-ops en 05AB1E, y dado que solo uso comandos de 1 byte, esto funciona bien después de la transposición.
Salidas
1
/0
para veracidad / falsey respectivamente.Pruebe el primero en línea o verifique algunos casos de prueba más para todos ellos (con eval incorporado
.V
) .Transpuesto: pruebe el primero en línea .
Explicación:
NOTA: Si solo un valor verdadero / falso es válido, y no necesariamente tiene que ser distinto, ya sea
Òg
oÕα
podría usarse como 2 bytes válidos, ya que solo1
es verdadero en 05AB1E, y todo lo demás es falso: Pruebe ambos ellos para algunos casos de prueba .Si se permitieran las incorporaciones, una sola
p
hubiera sido suficiente: Pruébelo en línea o verifique algunos casos de prueba más .fuente
ÑPQ
oÒgΘ
oÒQP
para 3 bytes. (Ñ
yÒ
ambos tienen propósitos distintos a "encontrar, generar o detectar números primos", por lo que no están incluidos en la prohibición, según mi lectura).ÕαΘ
,fQO
,fs¢
,f`Q
Õα
¡Sin embargo, no sabía nada ! Esa es una muy buena.Encantamientos rúnicos , 7 × 1
Pruébalo en línea!
¡Runic no se preocupa por tus débiles intentos de reorganización de la fuente! Cumpliendo con el requisito de seguir funcionando después de tener el costo de la fuente transpuesta +3 bytes (+2 ancho del rectángulo) para el modificador de reflexión y el punto de entrada.
Transpuesta o transpuesto, pero dejando el carácter que combina unido a su padre .
fuente
dzaima / APL, 8 × 9 = 72
¡Prueba el original o transpuesto !
fuente
Python 3 , tamaño 28 x 28
Pruébalo en línea!
fuente
JavaScript (Node.js) ,
2625x5Pruébalo en línea!
Transpuesto:
Pruébalo en línea!
fuente
APL (Dyalog Unicode) , 10x11
Pruébalo en línea!
Se corrigió la función para cumplir con las especificaciones. Gracias @ Adám por el aviso.
Devuelve 0 para verdad, 1 para falsedad .
Cómo
La versión transpuesta es exactamente la misma.
fuente