Uma permutao de um conjunto é um bijective função . Por exemplo, se , a função é uma permutação:
Também podemos ter permutações em conjuntos infinitos, vamos como exemplo: A função é uma permutação, trocando o ímpar e o par inteiros em blocos de dois. Os primeiros elementos são os seguintes:
Desafio
Sua tarefa para esse desafio é escrever uma função / programa implementando qualquer permutação 1 nos números naturais positivos. A pontuação da sua solução é a soma dos pontos de código após o mapeamento com a permutação implementada.
Exemplo
Suponha que tomemos a permutação acima implementada com Python:
def pi(x):
return x - 1 + 2*(x % 2)
O caractere d
possui o ponto de código , . Se fizermos isso para cada personagem, obtemos:
A soma de todos esses caracteres mapeados é , essa seria a pontuação dessa função.
Regras
Você implementará uma permutação como uma função ou programa
- dado um número natural , retorno / saída
- com a finalidade de este desafio que não contêm
- a permutação não deve permutar trivialmente um subconjunto infinito de
- sua função / programa não tem permissão para ler sua própria fonte
Pontuação
A pontuação é dada pela soma de todos os pontos de código (zero bytes pode não fazer parte do código-fonte) sob essa permutação (os pontos de código dependem do seu idioma 2 , você pode usar o SBCS, UTF-8 etc., desde que seu idioma suporta).
A finalização com a menor pontuação vence; os empates são interrompidos pela finalização mais antiga.
Exceto as permutações que apenas permitem um subconjunto finito de , significando que o conjunto deve ser infinito.
Se melhorar sua pontuação, você pode, por exemplo, usar um envio Jelly codificado em UTF-8 em vez do SBCS usual.
Respostas:
Geléia , pontuação
288 250 21219938 graças a Erik, o Outgolfer!
Troca mesmo com ímpar.
A pontuação é67+45+44+43=199 - veja a pontuação automática aqui .
Experimente online!
fonte
-*ạ
tem uma pontuação de 300 ... no entanto,-*_@
uma pontuação de 250. Talvez eu deva postar isso como meu, embora seja a mesma permutação.-*N+
pontuações 212C-*+
soa como alguma variação futura deC++
.JavaScript (ES6), Classificação =
276268Experimente online!
fonte
54^54
é0
Perl 6 , Pontuação: 201
Experimente online!
Resposta do porto de Arnauld . Isso se beneficia de xor (
+^
) ter a mesma precedência que-
e+
, e o uso de um lambda Whatever para reduzir caracteres gerais. Fora isso, não consegui encontrar uma maneira de representá-lo de maneira diferente que tivesse uma pontuação melhor.Perl 6 , pontuação
804702Experimente online!
A primeira resposta rápida do tipo quine-y aqui, e acho que é muito boa.
Isso produz a sequência23 , 22 , 25 , 24 ... do corpo da pergunta com o intervalo 1 , 2 , 3 , 4 ... 21 inserido nos índices dos pontos de código classificados exclusivos do código. Por exemplo, os elementos 30 a 35 da sequência são ,50 , 53 , 52 , 1 , 55 , 54 pois o 33º ponto de código é
!
e esse é o ponto de código mais baixo do meu código.fonte
Python 2 score:
742698694 pontosExperimente online!
-44 pontos graças a Ørjan Johansen; -4 pontos thx para xnor.
fonte
96
por~~
.Retina 0.8.2 , 6 bytes, pontuação 260
Experimente online! O link inclui rodapé com pontuação automática. Simplesmente troca dígitos
1
e9
e3
e7
nas representações decimais, de modo que os números que não contêm dígitos coprime para10
não são afetados.fonte
C # (compilador interativo do Visual C #) , 22 bytes, pontuação
247245Experimente online!
Simples, se menor que 66, retorna 66 menos entrada, use a fórmula na pergunta que troca números pares e ímpares.
fonte
A=>A<66?66-A:A
?TI-BASIC, 9 bytes, pontuação
108810511000Troca mesmo com ímpar. Mapas
Ans-1
pares para e mapas ímpares paraAns+1
.O TI-BASIC é tokenizado, portanto, este programa terá os seguintes valores hexadecimais:
Programa de teste de saída:
Quais saídas:
Notas:
Os valores de token da TI-BASIC podem ser encontrados aqui .
Pause
é usado no programa de saída para ver melhor a permutação, pois a calculadora possui apenas 8 linhas. Pressione [ENTER] para visualizar a próxima permutação.fonte
Carvão , 13 bytes, pontuação 681
Experimente online! O link é para a versão com pontuação automática com o cabeçalho para mapear sobre uma matriz de códigos de bytes. (O carvão vegetal tem uma página de código personalizada, portanto, eu inseri manualmente os códigos de bytes corretos na entrada.) Funciona revertendo intervalos de 233 números, para que 117, 350, 583 ... não sejam alterados. Explicação:
fonte
Haskell, pontuação 985
Experimente online!
fonte
a*200
não tem efeito módulo 200, entãoa
não importa.sum[1|...]
sobreif..then..else
deve ajudar.05AB1E , pontuação: 488 na página de código de 05AB1E
Troca ímpares e pares, como a função de exemplo.
Tentará melhorar a pontuação daqui.
Experimente online com entrada no intervalo
[1, 100]
ou Experimente online com os pontos de código.Explicação:
fonte
Brainfuck, 47 bytes, pontuação 2988
Experimente online!
Eu usei a permutação dada na introdução. Como essa é uma bijeção, você pode usá-la como uma cifra simétrica simples, semelhante ao ROT13 ou Atbash. Minha solução funciona em células ilimitadas. No entanto, restringindo-se a células de 8 bits, você pode economizar 2 pontos substituindo
[-]
por[+]
.fonte