Cuatro secuencias enteras
En este desafío, probará cuatro propiedades diferentes de un entero positivo, dadas por las siguientes secuencias. Un entero positivo N es
- perfecta ( OEIS A000396 ), si la suma de los divisores propios de N es igual a N . La secuencia comienza con 6, 28, 496, 8128, 33550336, 8589869056, 137438691328, 2305843008139952128 ...
- refactorable ( OEIS A033950 ), si el número de divisores de N es un divisor de N . La secuencia comienza con 1, 2, 8, 9, 12, 18, 24, 36, 40, 56, 60, 72, 80, 84, 88, 96, 104, 108, 128 ...
- práctico ( OEIS A005153 ), si cada número entero 1 ≤ K ≤ N es una suma de algunos divisores distintos de N . La secuencia comienza con 1, 2, 4, 6, 8, 12, 16, 18, 20, 24, 28, 30, 32, 36, 40, 42, 48, 54, 56 ...
- altamente compuesto ( OEIS A002128 ), si cada número 1 ≤ K <N tiene estrictamente menor número de divisores que N . La secuencia comienza con 1, 2, 4, 6, 12, 24, 36, 48, 60, 120, 180, 240, 360, 720, 840, 1260, 1680, 2520, 5040 ...
Cuatro programas
Su tarea es escribir cuatro programas (es decir, programas completos, definiciones de funciones o funciones anónimas que realizan E / S por cualquiera de los métodos estándar ). Cada programa resolverá el problema de membresía de una de estas secuencias. En otras palabras, cada programa tomará un entero positivo N ≥ 1 como entrada, y generará un valor verdadero si N está en la secuencia, y un valor falso si no. Puede suponer que N está dentro de los límites del tipo entero estándar de su lenguaje de programación.
Los programas deben estar relacionados de la siguiente manera. Hay cuatro cuerdas ABCD
tales que
AC
es el programa que reconoce números perfectosAD
es el programa que reconoce números refactibles.BC
es el programa que reconoce números prácticos.BD
es el programa que reconoce números altamente compuestos.
Puntuación
Su puntaje es la longitud total (en bytes) de las cadenas ABCD
, o en otras palabras, el recuento total de bytes de los cuatro programas dividido por dos. El puntaje más bajo en cada lenguaje de programación es el ganador. Aplican reglas estándar de código de golf .
Por ejemplo, si los cuatro cadenas son a{
, b{n
, +n}
y =n}?
, a continuación, los cuatro programas son a{+n}
, a{=n}?
, b{n+n}
y b{n=n}?
, y la puntuación es de 2 + 3 + 3 + 4 = 12.
Respuestas:
JavaScript (ES6), 46 + 55 + 6 + 36 =
282274...158143 bytesUN:
SI:
C:
RE:
El resultado es de 4 funciones anónimas que dan Truthy / valores Falsy para sus respectivas entradas (
AC
,AD
yBC
dartrue
/false
,BD
da1
/0
).Fragmento de prueba
Mostrar fragmento de código
fuente
Gelatina , 8 + 17 +
21 + 2 =2928 bytesUN:
SI:
C:
RE:
Para números prácticos (BC),
0
es falso y cualquier otro resultado es verdadero.AC y BC son programas completos, ya que no son reutilizables como funciones.
fuente
ÆDŒPS€ḟ@RṆµṖÆd<ÆdẠµ
funciona como B por un costo de dos bytes (y hace que BC devuelva 0 y 1 solo como los demás).ŒP
conŒṖ
. ¡Qué lástima! ¿Funciona si arreglas eso? (es decir, prueba mi nueva edición) No es que sea muy fácil probar de todos modos, es por eso que todavía no he incluido un enlace TIO.Haskell , 69 + 133 + 3 + 3 = puntaje 208
UN:
SI:
C:
RE:
Pruébalo en línea!
Sí, es bastante barato, pero no soy lo suficientemente inteligente como para una solución más genial. :PAG
fuente
subsequences
[x|x<-[1..n],mod n x<1]
es más corto quefilter((<1).mod n)[1..n]
.