Seção Policiais
A seção de ladrões pode ser encontrada aqui .
Agradecemos a FryAmTheEggman , Peter Taylor , Nathan Merrill , xnor , Dennis , Laikoni e Mego por suas contribuições.
Desafio
Sua tarefa é escrever 2 programas diferentes ( programas / funções completos / etc. ) Na mesma linguagem e na mesma versão (por exemplo, Python 3.5 ≠ Python 3.4, para que isso não seja permitido) e quando fornecido n (usando argumentos STDIN / function / etc. ), calcule a (n) onde a é uma sequência OEIS de sua escolha. Um desses programas é mais curto que o outro. Você só precisa enviar o programa mais longo dos dois. O outro precisa ser salvo caso não seja quebrado após 7 dias. Seu envio é quebrado quando seu programa é ultrapassado (seja por 1 byte ou mais).
Por exemplo, se a tarefa que você escolheu foi executar 2 × n , este poderia ser um envio válido (no Python 2):
Python 2, 16 bytes, pontuação = 15/16 = 0,9375
print(2*input())
Calcula A005843 , (deslocamento = 0).
Se o seu envio foi quebrado, você precisa declarar isso no cabeçalho da seguinte forma:
Python 2, 16 bytes, pontuação = 15/16 = 0,9375, [rachado] + link
print(2*input())
Calcula A005843 , (deslocamento = 0).
Deslocamento
Isso pode ser encontrado em todas as páginas OEIS. Por exemplo, para A005843 , o deslocamento é 0,2
. Nós só precisamos usar o primeiro, que é 0
. Isso significa que a função está definida para todos os números ≥ 0.
Em outras palavras, a função OEIS (n) começa com n = 0 . Seu programa precisa funcionar para todos os casos fornecidos pelo OEIS.
Mais informações podem ser encontradas aqui .
Pontuação
A pontuação que você obtém para o envio é igual à seguinte fórmula:
Pontuação = Comprimento (em bytes) do código secreto ÷ Comprimento (em bytes) do código público
O exemplo acima tem a pontuação 15 ÷ 16 = 0,9375.
A finalização com a menor pontuação vence. Somente envios que postaram sua solução serão elegíveis para ganhar.
Regras
- A tarefa que você precisa fazer é uma sequência OEIS de sua escolha.
- Dado n , output OEIS (n) . O desvio não é permitido, portanto, é necessário produzir exatamente a mesma sequência (quando fornecido n, é necessário gerar OEIS (n)).
- Os envios que não forem quebrados dentro de um período de 7 dias serão considerados seguros após a publicação da solução (envios com mais de 7 dias que não tiveram sua solução publicada ainda serão vulneráveis a serem quebrados).
- Em seu envio, você precisa postar o seguinte: nome do idioma , contagem de bytes , código completo , para que não haja links de pastas etc. (para evitar respostas como Unary), sequência OEIS , pontuação com os comprimentos de ambos os programas e, adicionalmente, a codificação que é usado.
- Nota: a mesma sequência não pode ser postada duas vezes no mesmo idioma. (Por exemplo, se a sequência A005843 tiver sido executada em Pyth, não será possível usá-lo novamente para a mesma sequência.)
- Entrada e saída estão em decimal (base 10)
Entre os melhores
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><style>table th,table td{padding: 5px;}th{text-align: left;}.score{text-align: right;}table a{display: block;}.main{float: left;margin-right: 30px;}.main h3,.main div{margin: 5px;}.message{font-style: italic;}#api_error{color: red;font-weight: bold;margin: 5px;}</style> <script>QUESTION_ID=88979;var safe_list=[];var uncracked_list=[];var n=0;var bycreation=function(x,y){return (x[0][0]<y[0][0])-(x[0][0]>y[0][0]);};var byscore=function(x,y){return (x[0][1]>y[0][1])-(x[0][1]<y[0][1]);};function u(l,o){jQuery(l[1]).empty();l[0].sort(o);for(var i=0;i<l[0].length;i++) l[0][i][1].appendTo(l[1]);if(l[0].length==0) jQuery('<tr><td colspan="3" class="message">none yet.</td></tr>').appendTo(l[1]);}function m(s){if('error_message' in s) jQuery('#api_error').text('API Error: '+s.error_message);}function g(p){jQuery.getJSON('//api.stackexchange.com/2.2/questions/' + QUESTION_ID + '/answers?page=' + p + '&pagesize=100&order=desc&sort=creation&site=codegolf&filter=!.Fjs-H6J36w0DtV5A_ZMzR7bRqt1e', function(s){m(s);s.items.map(function(a){var he = jQuery('<div/>').html(a.body).children().first();he.find('strike').text('');var h = he.text();if (!/cracked/i.test(h) && (typeof a.comments == 'undefined' || a.comments.filter(function(b){var c = jQuery('<div/>').html(b.body);return /^cracked/i.test(c.text()) || c.find('a').filter(function(){return /cracked/i.test(jQuery(this).text())}).length > 0}).length == 0)){var m = /^\s*((?:[^,;(\s]|\s+[^-,;(\s])+).*(0.\d+)/.exec(h);var e = [[n++, m ? m[2]-0 : null], jQuery('<tr/>').append( jQuery('<td/>').append( jQuery('<a/>').text(m ? m[1] : h).attr('href', a.link)), jQuery('<td class="score"/>').text(m ? m[2] : '?'), jQuery('<td/>').append( jQuery('<a/>').text(a.owner.display_name).attr('href', a.owner.link)) )];if(/safe/i.test(h)) safe_list.push(e);else uncracked_list.push(e);}});if (s.items.length == 100) g(p + 1);else{var s=[[uncracked_list, '#uncracked'], [safe_list, '#safe']];for(var i=0;i<2;i++) u(s[i],byscore);jQuery('#uncracked_by_score').bind('click',function(){u(s[0],byscore);return false});jQuery('#uncracked_by_creation').bind('click',function(){u(s[0],bycreation);return false});}}).error(function(e){m(e.responseJSON);});}g(1);</script><link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/Sites/codegolf/all.css?v=7509797c03ea"><div id="api_error"></div><div class="main"><h3>Uncracked submissions</h3><table> <tr> <th>Language</th> <th class="score">Score</th> <th>User</th> </tr> <tbody id="uncracked"></tbody></table><div>Sort by: <a href="#" id="uncracked_by_score">score</a> <a href="#" id="uncracked_by_creation">creation</a></div></div><div class="main"><h3>Safe submissions</h3><table> <tr> <th>Language</th> <th class="score">Score</th> <th>User</th> </tr> <tbody id="safe"></tbody></table></div>
Nota
Este desafio está terminado. O vencedor final é feersum com sua resposta Seed . Parabéns! :).
Você ainda pode enviar novos policiais, mas lembre-se de que eles não estão mais competindo.
Respostas:
Semente , 5861 bytes, pontuação = 5012/5861 = 0,85
A sequência é primos ( A000040 ) com deslocamento 1. a (1) = 2, a (2) = 3, a (3) = 5 etc.
Os programas Befunge-98 foram testados com este intérprete .
Solução:
fonte
Geléia , 5 bytes , pontuação 0,8 (4/5) [ rachado! ]
Calcula A127721 .
Experimente online!
Aqui está a solução:
n
R
: lista de[1, 2, ..., n]
ÆḊ
: No nosso caso, isso retornará a raiz quadrada da soma dos quadrados (o que pode ser útil no futuro no golfe)!Ḟ
: andar o resultado.A documentação para
ÆḊ
leituras:A chave é estendida para matrizes não quadradas . O "determinante" de uma matriz não quadrada é geralmente indefinido, mas uma definição razoável é
sqrt(det(A A^T))
(que para uma matriz quadrada se reduz a|det(A)|
). No nosso caso,A A^T
é uma matriz 1 x 1 contendo a soma dos quadrados. A raiz quadrada do determinante disso nos dá exatamente o que precisamos para remover o último byte!fonte
Retina , 28 bytes, pontuação = 0,9286 ... (26/28), quebrada por feersum
Calcula A192687 , (deslocamento = 0).
Experimente online! (A primeira linha ativa um conjunto de testes separado por avanço de linha.)
Essa é a diferença entre as seqüências masculina e feminina de Hofstadter . ( Desafio relevante do PPCG. )
Este foi o meu código original:
De qualquer forma, essa resposta foi um pouco arriscada, porque a solução real é baseada em uma regex que anunciei como a regex de teste de Fibonacci mais curta conhecida no bate-papo há alguns meses. Felizmente, ninguém parecia se lembrar disso. :)
fonte
Hexagonia , 91 bytes, Pontuação = 0,725274725 (66/91) [Rachado]
Calcula A000045 (sequência de Fibonacci, deslocamento 0).
Não ficarei muito surpreso se alguém conseguir vencer essa e minha versão mais golfe
, embora deva ser difícil.Edit: Santo vaca, @MartinEnder me chicoteado com uma solução de 33 bytes.
Golfe (91):
Formatado:
Experimente online!
Não vou postar uma explicação para isso, é horrível demais ...
Golfe (66):
Formatado:
Colori:
Experimente online!
Explicação:
O layout da memória que usei se parece um pouco com isso:
A inicialização (em preto) define a = 0 eb = 1. Então, o loop principal:
a
célula de entrada -'"
(
{{=+
"+{=*
'+
'+}=*
"=+
"+
}+
Quando a célula de entrada atinge 0, o MP se move para a, imprime e sai.
O que eu poderia ter feito para salvar mais bytes é usar &, que apenas define a célula atual como seu vizinho esquerdo ou direito. Eu também poderia ter um controle de fluxo um pouco melhor, mas tudo bem como está.
fonte
&
é mover a entrada pelas bordas a / b / a + b para que eles troquem suas funções na próxima iteração. Dessa maneira, não preciso mover a, b e a + b.M , 10 bytes , pontuação 0,6 (6/10) [ rachado ]
Um pouco barato, já que M e Jelly são bastante semelhantes, mas permitidas pelas regras. Esta versão é baseada no crack do @ LeakyNun na minha resposta da Jelly.
Calcula a sequência A068943 . Experimente online!
Solução pretendida
O código a seguir funciona em M / Jelly.
Na verdade, eu tinha uma solução de 4 bytes à qual adicionei alguns cotões para tornar mais difícil de quebrar usando força bruta.
Experimente online!
Este é o que eu vou explicar.
fonte
Empilhe gatos , 14 bytes, pontuação = 13/14 = 0,929 [ rachado ]
São 10 bytes de código, mais 4 para os argumentos
-nm
.Calcula A017053 . Caso o OEIS esteja inoperante, é isso que
a(n) = 7n + 6
começa a partir den = 0
.O código completo (utilizável sem
-m
argumento) é![_-_:-_-_-_-:_-_]!
A solução oculta foi
fonte
Boneco de neve , 50 bytes, pontuação = 0,9 (45/50) [ rachado por Lynn ]
Essa é uma sub-rotina que recebe um número como argumento e retorna outro número.
Calcula A122649 (deslocamento = 1).
Experimente online!
fonte
Haskell, 15 bytes, pontuação = 13/15 (0,866) ( quebrado )
A109613 com deslocamento 0. Repete cada número ímpar duas vezes.
fonte
Brachylog , 27 bytes, pontuação = 0,666 ... (18/27), Rachado!
Calcula A010551 (deslocamento = 0).
Você pode experimentá-lo online aqui .
Explicação
Como a grande maioria das pessoas não conhece esse idioma, e como estou postando essa resposta principalmente para atrair as pessoas (consulte: Wiki de Brachylog ), fornecerei uma breve explicação do código acima:
fonte
Haskell, 4 bytes / 5 bytes ( quebrado por Leaky Nun )
Vamos começar simples. A000012 , a sequência de todos os 1s (deslocamento 0). Aqui está uma tabela:
5 bytes:
fonte
Java 7, 53 bytes, pontuação = 0,9623 (51/53) Cracked
Calcula a sequência Perrin, A001608
Primeira tentativa de golfe com código, sinta-se à vontade para apontar erros.
Explicação após rachaduras:
milhas reduziu os três primeiros valores (0,1,2) -> (3,0,2) para
enquanto minha própria solução era um pouco
Combinando os dois truques, você obtém
para um byte de 47 bytes
que parece bastante compacto para Java :)
fonte
Cheddar, 7 bytes, pontuação = 0,8571 (6/7), [rachado]
Muito simples, apenas os poderes de dois. OEIS A000079
Experimente online!
fonte
J, 17 bytes, pontuação = 0,8235 (14/17) ( rachado )
Calcula A002478 .
O engraçado é que essa versão era originalmente a mais curta a ser mantida em segredo.
fonte
Python 2, 43 bytes, pontuação = 0,9302 (40/43), quebrado
f=lambda n:n==1or-(-sum(map(f,range(n)))/3)
Computa A072493
Vamos ver se alguém pode jogar fora todos os 3 bytes.
fonte
True
for usado para representar1
?s=1;exec"a=-(-s/3);s+=a;"*input();print a
para 41.if x
verdadeiro ( é verdadeiro) é um retorno válido.Pyke, 11 bytes, pontuação = 0,45 (5/11) [rachado]
Calcula OEIS A180255
Experimente aqui!
fonte
Z
não é documentado, a linguagem afirma ser empilhar-base, mas depois da*
existem apenas zeros na pilha apesar de ter um efeito sobre o resto do código; ordem dos parâmetros não está claramente especificado)Jelly , 9 bytes , marcar 0,5556 (09/05) [ rachado ]
Calcula a sequência A119259 . Experimente online!
fonte
Brachylog , 11 bytes, pontuação = 10/11 = 0,909, rachado!
Calcula A173426 .
Experimente online!
Explicação
fonte
J, 20 bytes, pontuação = 0,75 (15/20) ( rachado )
Calcula A001654 .
Minha solução para 15 bytes foi
fonte
Sesos , 14 bytes, pontuação = 0,8571 (12/14) ( rachado )
Calcula A000290 .
Experimente online!
Dicas
Este arquivo binário foi gerado pelo seguinte assembler:
fonte
MATL , 11 bytes, pontuação = 0,8181 (9/11), quebrado
Calcula a função Möbius , ou A087811 (deslocamento 1).
Experimente online!
Recursos para ladrões
Eu acho que este deve ser fácil, mas de qualquer maneira aqui está uma ajuda.
Explicação do código:
Documentação de idioma .
Sala de chat MATL .
fonte
YftdA_wn^
Geléia , 11 bytes , pontuação 0,5455 (6/11) [ rachado ]
Calcula a sequência A068943 . Experimente online!
fonte
MarioLANG , 87 bytes, pontuação = 0,839 (73/87), quebrado
Calcula A000217 , os números triangulares. Deslocamento 0.
Experimente online!
Solução curta:
Como o crack tirou apenas 1 byte, compartilharei minha solução em 73 bytes, que usa um algoritmo diferente:
Experimente online!
O primeiro programa estabelece todos os números de n a 1 ao longo da fita e, em seguida, soma todos os números até encontrar uma célula de valor 0. Isso é feito copiando cada célula nas duas células adjacentes, diminuindo a cópia correta e repetindo o processo até atingir 0. Durante esse processo, a fita fica assim (para n = 5):
... e assim por diante. Em seguida, ele se move para a esquerda, somando as células até atingir uma célula com 0.
O segundo programa funciona apenas com três células da fita. Até a primeira célula atingir 0, ele faz o seguinte:
Após a primeira célula atingir 0, a terceira célula conterá n + (n-1) + (n-2) + ... + 2 + 1.
fonte
:
se estiver na linha inferior, e foi por isso que incluí a nova linha no final do link. Martin e eu discutimos isso em outra das minhas respostas do MarioLANG.M , 18 bytes , pontuação 0.3889 (7/18) [ rachado ]
Essa abordagem baseia-se no golfe da resposta do @ Sp3000 da minha geléia.
O código calcula a sequência A116881 (somas de linha de CM (1,2) ). Experimente online!
fonte
Haskell, 28 bytes, pontuação = 0,3571 (10/28), quebrado
A006519 , a potência mais alta de 2
n
, começando emn=1
.Enquanto você obtém crédito por qualquer código menor, considero que o verdadeiro quebra-cabeça está chegando a 10 bytes.
fonte
05AB1E , 9 bytes, pontuação = 0,66667 (6/9), Rachado
Computa: A087811
Experimente online
fonte
Hexagonia , 7 bytes, pontuação = 0,857 (6/7), quebrada
Não foi projetado para ser a finalização vencedora, mas definitivamente uma quebra de cérebro. Na verdade, não é tão difícil se você pensar sobre isso: p. Código:
Ou uma versão mais legível:
Calcula A052246 .
Experimente online! .
fonte
J, 9 bytes, pontuação = 0,6667 (6/9) (decifrado por Dennis )
Calcula A056594 .
fonte
J, 10 bytes, pontuação = 0,9 (9/10) ( rachado por Dennis )
Calcula A000326 .
Este deve ser fácil.
Intérprete online .
Quickref .
fonte
05AB1E , 7 bytes, pontuação = 0,571 (4/7), Rachado
Computa: A006331
Experimente online
Depois de jogar cinco versões únicas dessa sequência antes de encontrar essa versão pública, espero não ter deixado nenhuma melhoria óbvia por aí, pelo menos será um desafio para os ladrões.
fonte
M , 9 bytes , pontuação 0,6667 (6/9) [ rachado ]
Um pouco barato, já que M e Jelly são bastante semelhantes, mas permitidas pelas regras. O crack de @miles na minha resposta Jelly não funciona em M; falta o
œċ
átomo.Calcula a sequência A119259 . Experimente online!
fonte