Este é um caso de policiais e ladrões, se você não estiver familiarizado com o formato, clique na tag para acessar o wiki. Não haverá um tópico de ladrões para esta pergunta.
Policiais
Sua tarefa como Policiais é selecionar duas seqüências da Enciclopédia Online de Sequências Inteiras e escrever um programa que considere o enésimo elemento de uma sequência como entrada e emita o enésimo elemento da segunda sequência. Você faz uma resposta incluindo o código e omitindo as seqüências selecionadas. Os ladrões tentarão encontrar as seqüências que você selecionou e se alguém conseguir encontrar as sequências que você tinha em mente ou algumas outras sequências para as quais seu programa deve marcar sua resposta como Cracked . Se um ladrão informar com um crack que você acredita que não é válido, você poderá apresentar uma prova de que não é um crack. Caso contrário, você deve marcar isso.
De acordo com as respostas usuais que foram decifradas por 7 dias, são elegíveis para serem marcadas como seguras. Um policial pode marcar sua resposta como segura, revelando as seqüências que eles tinham em mente. Uma vez segura, uma resposta não pode mais ser quebrada.
O objetivo é minimizar a contagem de bytes do seu programa enquanto permanece inalterado.
Exemplo
O código Python a seguir converte o enésimo elemento de A000290 (os números quadrados) em A000217 (os números triangulares):
lambda x:sum(range(0,int(x**.5+1)))
Estipulações e Requisitos
Se você escolher uma sequência que não tem provado ser finita, deverá gerar todos os termos que possam existir, não apenas os listados na página OEIS
Como exceção às linguagens de regras anteriores, sem números inteiros de precisão infinita, não é necessário gerar ou inserir números fora de seu intervalo.
O tamanho da sua sequência de entrada não deve ter sido provado ser menor que a sequência de saída.
Sua sequência de entrada não deve ter nenhum elemento de repetição (caso contrário, a tarefa é praticamente impossível)
O OEIS inclui um índice em sua página (o primeiro número após o cabeçalho "OFFSET"), por padrão, esse é o seu deslocamento para n (n é igual ao índice do primeiro elemento da sequência). Se você escolher outro índice, deverá indicar isso em sua resposta.
Se você escolher um deslocamento diferente daquele listado no OEIS, ainda deverá mapear todos os elementos em sua sequência de entrada para o elemento correspondente em sua sequência de saída.
Se o seu programa receber uma entrada que não esteja na sequência de entrada, poderá fazer o que quiser (comportamento indefinido). No entanto, provavelmente é do seu interesse continuar produzindo um número inteiro.
Não é antidesportivo intencionalmente dificultar a execução do código, seja demorado para executar ou através da seleção de idiomas não livres . Enquanto eu aplicarei o último, não posso aplicá-lo objetivamente. No entanto, eu imploro, por uma questão de diversão, que não tente o primeiro, pois isso dificulta especificamente o desafio para aqueles com computadores mais fracos.
Ladrões
Sua tarefa como ladrões é selecionar respostas não rachadas e inseguras e encontrar as seqüências entre as quais eles mapeiam. Se você encontrar uma solução que funcione (não necessariamente a solução pretendida pelos policiais), comente as seqüências na resposta apropriada.
Os ladrões não devem se preocupar muito em verificar se duas seqüências específicas são uma solução; uma deve postar uma solução se corresponder a todas as entradas no OEIS. Se essa não é a sequência que um policial teve em mente, ele pode oferecer uma prova de que está incorreto ou marcá-lo como quebrado se não conseguir encontrar um.
fonte
Respostas:
Geléia , 14 bytes (Rachado por @Wolfram)
Experimente online!
Deve ser bastante óbvio o que isso faz. De fato, para o benefício dos usuários que não são do Jelly, darei uma explicação:
Explicação
A questão é: por que isso acontece?
Rachadura
As sequências em questão foram A201647 e A201647 . Eles são finitos e diferem apenas nos dois últimos elementos:
Assim, se a entrada é baixa, deixo a mesma e simplesmente encaixo uma função na transformação das duas últimas.
fonte
Jelly , 7 bytes (Rachado por @JonathanAllan)
Experimente online!
O que faz
fonte
p
,ÆF
rendimentos(p,1)
eÆd
os rendimentos2
, por issoḅ
nos leva2p+1
, que meiosÆẸ
vai produzir o primeiro oficial,2
, elevado à potência desse resultado,2^(2p+1)
.Python 3, 256 bytes ( Rachado! )
Experimente online!
Desculpe se este código parece horrível, acho que este é o meu primeiro golfe em Python. A conversão em Python facilita o código.
fonte
q
?k
parece não ser utilizada, para que você possa salvar alguns bytes removendo-a.Processando , 184 bytes, SEGURO!
Uma função que recebe um int e retorna um int. Enquanto o número de entrada estiver em
int
intervalo, o programa deve funcionar bem.Isso não é lento, apenas ilegível. Boa sorte!
Estou surpreso que esta submissão tenha durado tanto tempo. Oh bem, pelo menos é a primeira submissão segura :)
A000578 a A000290
Em outras palavras: os cubos para os quadrados.
Explicação
Ao responder Sem seqüências de caracteres (ou números) anexadas , descobri uma lista de constantes de processamento que representam ints. Por exemplo,
CORNER
tem um valor de0
. A lista completa pode ser encontrada aqui . Para encontrar o valor de uma constante, você pode justamenteprint
isso.Usando isso, decidi trocar certos números com combinações dessas constantes para ofuscá-lo. Então, aqui está o que você obtém quando substitui as constantes pelos respectivos valores int.
Mesmo agora, o código claro completo não é revelado. As cores estão restantes. No processamento, as variáveis de cores têm valores int, por exemplo, branco (
#ffffff
) é-1
,#fffffe
é-2
,#fffffd
é-3
e assim por diante. Isso pode ser encontrado pelaprint
cor. Então, vamos simplificar as cores.Estamos na metade do caminho :) Para entender os valores, precisamos simplificar as expressões numéricas.
Muito mais claro! Agora vamos simplificar o logaritmo.
Quase acabando! Agora temos que descobrir esse
(int)sqrt(red(color(-65536))/16))
bocado.color(-65536)
é vermelho, entãorgb(255, 0, 0)
. Agora ared()
função retorna o valor do componente vermelho no argumento (que é uma cor). Então, quanto de vermelho existe em vermelho? A resposta é255
. Com isso temosSubstituindo isso no programa resulta em:
Yay, está feito!
Para resumir, isso retorna o quadrado (feito multiplicando duas vezes no loop for) da raiz do cubo do número de entrada.
fonte
Mathematica (ou o que for) - Rachado!
Eu sei que o Mathematica é um software não-livre, mas essa função é trivial para ser portada para qualquer idioma favorito em que você deseja executá-lo. Ele literalmente calcula o valor do polinômio grau-9 determinado avaliado no número inteiro de entrada e, em seguida, pega o quociente inteiro desse valor e do número de 42 dígitos na última linha. Por exemplo,
f[100]
avalia como-3024847237
.fonte