Es bien sabido que aparecerán números primos impares en el triángulo de Pascal exactamente dos veces. Sin embargo, no todos los números que aparecen exactamente dos veces en el triángulo de Pascal son primos. Llamaremos a estos números números primos de Pascal.
Los números primos de Pascal son números compuestos que aparecen exactamente dos veces en el triángulo de Pascal. Los primeros pocos primos de Pascal son
4, 8, 9, 12, 14, 16, 18, ...
Su desafío es tomar un entero positivo n como entrada y salida verdadero o falso, dependiendo de si n es un primo Pascal o no. Este es el código de golf, por lo que gana el programa más corto.
Respuestas:
Wolfram Language (Mathematica) , 45 bytes
Pruébalo en línea!
Cada número compuesto n aparece exactamente dos veces en la fila n y no puede aparecer después. Entonces, la condición para los números primos de Pascal es que no aparecen en absoluto dentro de las primeras n-1 filas.
Por lo que puedo decir, esto es más corto que verificar que aparece exactamente dos veces dentro de las primeras n filas y poder usar
!PrimeQ
en su lugar.fuente
Python 2 , 93 bytes
Pruébalo en línea!
Esta es una función con nombre f , que sale a través del código de salida , 0 para Pascal Primes, 1 de lo contrario.
¿Cómo funciona esto?
Básicamente, esto verifica si n ocurre en las primeras n - 1 filas del triángulo de Pascal o si es primo, y arroja un error si se cumple alguna de estas dos condiciones.
Guardado 1 byte gracias a los ovs .
fuente
Gelatina ,
11109 bytesGracias a:
’
(+1) evite usarn2
(-2), entonces -1 en general.Pruébalo en línea!
Enfoque alternativo , por Jonathan Allan . (defectuoso)
Explicación de la última línea:
n
aparece dos veces en el triángulo de Pascal" es equivalente a "n
no aparece en las primerasn-1
filas".true
si el número no es primo (es decirÆP == 0
) y el recuentoc
es cero. De eso podemos deducir esoÆP == c
.Se puede demostrar que si son iguales, entonces son iguales a 0, porque:
ÆP
devuelve un valor booleano, que solo puede ser 0 o 1.n
es primo, por lo tanto, no puede aparecer en las primerasn-1
líneas (es decir,c == 0
)fuente
1
no es un primo de Pascal; Esto dice que es.Ḷc€ḶFċoÆP¬
funcionaría, creo.ċ=ÆP
Deberia trabajar.Ḷcþ`Fċ=ÆP
, también debería funcionar.Haskell ,
8684 bytesPruébalo en línea!
Explicación
La función
p
define recursivamente un triángulo de Pascal degenerado:Como podemos ver (en esta solución
1
es algo especial) cada númeron
aparece exactamente dos veces en lan+1
fila th y todos los elementos de las filas posteriores solo se hacen más grandes, por lo tanto, solo tenemos que verificar sin
está en algún lugar hasta lan
fila th para ver si un El elemento está descalificado:Ahora tenemos
True
para todos los elementos que aparecen más de dos veces (excepto1
), por lo que todo lo que necesitamos es tener unaisPrime
función defectuosa que regreseTrue
para1
:fuente
APL (Dyalog) ,
44342419 bytes5 bytes guardados gracias a @Cowsquack
Pruébalo en línea!
¿Cómo?
Nos aseguramos de que tampoco
⍳
- rango0
..n-1
,⍳∘.!
- sobre binomio cartesiano con uno mismo⊢∊
- contenern
,⍱
- tampoco⊢|⍨
-n
módulo de cada elemento de2↓⍳
- rango2
..n-1
~0∊
- no contiene0
(también conocido como no divisible)fuente
(∨/1↓1≠⊢∨⍳)∧(~⊢∊⍳∘.!⍳)
es más corto en dos bytes(0∊⊢|⍨2↓⍳)∧∘~⊢∊⍳∘.!⍳
por otros dos, cambié el algoritmo de comprobación de primalidad~
da(~0∊⊢|⍨2↓⍳)⍱⊢∊⍳∘.!⍳
por uno menos bytes.JavaScript (Node.js) ,
103101bytesPruébalo en línea!
fuente
n=>(r=x=>[...Array(n).keys(F=n=>n>0?n*F(n-1):1)].every(x))(i=>r(j=>F(i)/F(j)/F(i-j)-n))>F(n-1)**2%n
threority funciona pero de hecho para un rango pequeñoRubí ,
9795 bytesPruébalo en línea!
Rascó un par de bytes.
fuente
R , 55 bytes
Pruébalo en línea!
sum(!n%%1:n)>2
es la prueba y compuestosouter(1:n-1,1:n,choose)
Calcula filas0
an-1
del triángulo de Pascal, por lo que nos aseguramos de quen
no aparece allí.fuente
05AB1E , 10 bytes
Pruébalo en línea!
Explicación
Verificaciones que
n
ocurren exactamente dos veces en las primeras n + 1 filas del triángulo pascal y no son primos.La comparación funciona ya que no hay números primos que pueden ocurrir 3 veces en el triángulo.
fuente
Haskell , 90 bytes
Pruébalo en línea!
fuente
Pyth , 10 bytes
Pruébalo en línea! o verifique el conjunto de pruebas.
fuente
JavaScript (Node.js) ,
79133130128 bytesPruébalo en línea!
malvado primer corrector +50 bytes :(
fuente
Pitón 2 ,
105104 bytesgracias a user202729 por -1 byte
Pruébalo en línea!
fuente
p+r
parece redundante ...