Quatro seqüências inteiras
Neste desafio, você testará quatro propriedades diferentes de um número inteiro positivo, dadas pelas seguintes seqüências. Um número inteiro positivo N é
- perfeito ( OEIS A000396 ), se a soma dos divisores próprios de N é igual a N . A sequência começa com 6, 28, 496, 8128, 33550336, 8589869056, 137438691328, 2305843008139952128 ...
- refactorable ( OEIS A033950 ), se o número de divisores de N é um divisor de N . A sequência começa com 1, 2, 8, 9, 12, 18, 24, 36, 40, 56, 60, 72, 80, 84, 88, 96, 104, 108, 128 ...
- prático ( OEIS A005153 ), se cada inteiro 1 ≤ K ≤ N é uma soma de alguns divisores distintos de N . A sequência começa com 1, 2, 4, 6, 8, 12, 16, 18, 20, 24, 28, 30, 32, 36, 40, 42, 48, 54, 56 ...
- altamente compósito ( OEIS A002128 ), se cada número 1 ≤ K <N tem estritamente menos divisores do que N . A sequência começa com 1, 2, 4, 6, 12, 24, 36, 48, 60, 120, 180, 240, 360, 720, 840, 1260, 1680, 2520, 5040 ...
Quatro programas
Sua tarefa é escrever quatro programas (ou seja, programas completos, definições de funções ou funções anônimas que executam E / S por qualquer um dos métodos padrão ). Cada programa deve resolver o problema de associação de uma dessas seqüências. Em outras palavras, cada programa terá um número inteiro positivo N ≥ 1 como entrada e emitirá um valor verdadeiro se N estiver na sequência e um valor falso se não estiver. Você pode supor que N esteja dentro dos limites do tipo inteiro padrão da sua linguagem de programação.
Os programas devem estar relacionados da seguinte maneira. Existem quatro seqüências de caracteres ABCD
que
AC
é o programa que reconhece números perfeitos.AD
é o programa que reconhece números refatoráveis.BC
é o programa que reconhece números práticos.BD
é o programa que reconhece números altamente compostos.
Pontuação
Sua pontuação é o comprimento total (em bytes) das seqüências de caracteres ABCD
, ou seja, a contagem total de bytes dos quatro programas divididos por dois. A pontuação mais baixa em cada linguagem de programação é a vencedora. Aplicam-se as regras padrão de código de golfe .
Por exemplo, se as quatro cordas são a{
, b{n
, +n}
e =n}?
, em seguida, os quatro programas são a{+n}
, a{=n}?
, b{n+n}
e b{n=n}?
, e o marcador é 2 + 3 + 3 + 4 = 12.
Respostas:
JavaScript (ES6), 46 + 55 + 6 + 36 =
282274...158143 bytesUMA:
B:
C:
D:
O resultado é 4 funções anónimos que dão truthy / Falsas valores para as respectivas entradas (
AC
,AD
, eBC
dartrue
/false
,BD
dá1
/0
).Snippet de teste
Mostrar snippet de código
fonte
Geléia , 8 + 17 +
21 + 2 =2928 bytesUMA:
B:
C:
D:
Para números práticos (BC),
0
é falso e qualquer outro resultado é verdadeiro.AC e BC são programas completos, pois não são reutilizáveis como funções.
fonte
ÆDŒPS€ḟ@RṆµṖÆd<ÆdẠµ
funciona como B por um custo de dois bytes (e faz BC retornar 0 e 1 apenas como os outros).ŒP
comŒṖ
. Que pena! Funciona se você consertar isso? (ou seja, tente minha nova edição) Não é muito fácil testar de qualquer maneira, é por isso que ainda não incluí um link TIO.Haskell , 69 + 133 + 3 + 3 = pontuação 208
UMA:
B:
C:
D:
Experimente online!
Sim, é bem barato, mas não sou inteligente o suficiente para uma solução mais legal. : P
fonte
subsequences
[x|x<-[1..n],mod n x<1]
é mais curto quefilter((<1).mod n)[1..n]
.