Nota: Este desafio está concluído. As inscrições ainda são bem-vindas, mas não podem vencer.
Este é o tópico dos policiais. A linha dos ladrões vai aqui .
Escreva um código que produz o número inteiro 1
. Se você adicionar, remover ou substituir um único caractere (de sua escolha), o código deverá gerar o número inteiro 2
. Altere mais um caractere (o mesmo ou outro) e o código deve ser exibido 3
. Continue dessa maneira o máximo que puder, mas no máximo até 10. Formatos de saída padrão, como ans = 1
são aceitos. Você pode ignorar a saída para STDERR (ou equivalente).
Você deve revelar o idioma, a contagem de bytes do seu código inicial, o número de números inteiros para os quais trabalha e um número opcional de caracteres do código inicial. Nota: Você não precisa revelar nenhum personagem, mas lembre-se de que revelar personagens pode tornar mais difícil para os ladrões, pois eles devem usar o mesmo personagem na mesma posição. Você pode escolher qual caractere usar para denotar caracteres não revelados (por exemplo, sublinhado), mas certifique-se de especificar isso.
Os policiais podem fornecer o código sem quebra após uma semana e chamar a submissão de "SAFE". O envio vencedor será o envio mais curto e sem rachaduras que produz o número 10. Se nenhum envio sem rachaduras conseguir imprimir 10, o código mais curto que produz 9 vencerá e assim por diante. Observe que os ladrões não precisam fazer as mesmas alterações que você e não precisam reproduzir o código exato (a menos que você revele todos os caracteres). Eles devem reproduzir apenas a saída.
As inscrições postadas depois de 24 de novembro são bem-vindas, mas não qualificadas para a vitória (porque provavelmente haverá menos ladrões por aí).
Exemplo de postagem:
A postagem a seguir é um envio no idioma MyLang
, tem 9 bytes de comprimento e funciona para os números de 1 a 8.
MyLang, 9 bytes, 8 números
Esta submissão funciona para 1 - 8. caracteres Não Revelados são indicadas com um sublinhado: _
.
abc____i
Entre os melhores
Isenção de responsabilidade: a tabela de classificação não é testada e os envios sem rachaduras podem não aparecer na lista.
<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=99546;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>
fonte
1
, como posso impedir que os ladrões adicionem)
repetidamente para gerar o restante dos números? O mesmo seria válido para algumas línguas1
, parece que o CJam é uma má escolha da linguagem para esse desafio. Não há como impedir que ladrões façam isso.10
. Essa regra está em vigor porque muitas submissões provavelmente podem ser estendidas até o infinito (em teoria), portanto, a pontuação com base no maior número alcançado não faria sentido.cracked
de alguma forma. É isso que o reprojeto userscript faz atualmente.Respostas:
Hexagonia , 18 bytes, 10 números, SEGURO
Esta submissão funciona para 1 - 10. caracteres Não Revelados são indicadas com um sublinhado:
_
.Você pode experimentar o Hexagony online aqui.
Minha solução:
Hex para saída 1:
Experimente Online!
<
borda da memória é0
, por isso aparece.1
5
8
, mas é revertida<
e pega8
o caminho de volta.5
novamente1
<
ponto, o valor da memória é 1585 que, mod 256, passa a ser ASCII1
;@
.Hex para saída 2:
Experimente Online!
Isso segue o mesmo caminho, mas, no caminho de volta, atinge um valor
)
que aumenta a borda da memória para 1586 ou2
.Hex para saída 3-9:
Experimente Online!
2
<
, então diminui.]
muda o ponteiro de instrução, mas é imediatamente volta com[
)
incrementa para3
!
Impressões3
$
sobra dos dois primeiros números, então pulamos o final (@
)1
altera a borda da memória, mas isso não importa agora.<
reflete o ponteiro de volta.1
, não importa, porque chegamos@
ao final do programa.fonte
Retina , 2 bytes, 10 números, Rachado
Funciona de 1 a 10,
_
é um personagem oculto. Isso não deve ser muito difícil, mas espero que forneça um quebra-cabeça um tanto interessante. :)Você pode experimentar o Retina online aqui.
fonte
Oitava, 55 bytes, 10 números, quebrado
_
é o personagem desconhecido.Solução
fonte
Python 2, 9 bytes, 10 números, quebrado
Não há caracteres ocultos. Você pode quebrá-lo sem força bruta?
fonte
Perl, 12 bytes, 10 números, rachado!
Os sublinhados representam caracteres desconhecidos.
Provavelmente fácil, e não me surpreenderia se houvesse várias soluções. Ainda assim, pode ser divertido decifrar.
(A solução pretendida era a mesma do crack. Isso é fundamentalmente apenas um problema de atribuir 10 a uma variável em quatro caracteres, o que é surpreendentemente difícil no Perl; ao contrário de muitos idiomas de golfe, ele não tem uma variável que comece com utilidade em 10.)
fonte
$_=1;say;#-9
, mas eu não conseguia descobrir como obter 10.Perl, 46 bytes, 10 números, seguro
O problema
Os problemas mais curtos tendem a ser resolvidos rapidamente, então pensei em tentar um mais longo. Os mais longos também tendem a ficar rachados se as pessoas deixarem uma folga suficiente para esgueirar-se por algo impertinente
say
ou nãoexit
, então todas as lacunas aqui são curtas. Caracteres ocultos são representados usando_
.Minha solução
Para imprimir 2, 3, etc., até 9, sempre a mudar o número atribuído a
$b{0}
na segunda linha (isto é$b{0}=2
,$b{0}=3
, etc.). O programa para 9 fica assim:Depois, para produzir 10, comente a primeira linha acrescentando um
#
caractere a ela.Explicação
A primeira coisa a se notar é que a solução não é realmente eficiente, além de remover o espaço em branco: se colocarmos em um espaço em branco mais legível, obtemos o seguinte:
Normalmente, quando você acessa os argumentos de uma sub-rotina no Perl, faz isso copiando-os de
@_
. Há uma boa razão para isso:@_
alias os argumentos que a sub-rotina é fornecida (por exemplo,(sub { $_[0] = 3 })->($x)
atribuirá a$x
), algo que normalmente não é desejável.Embora
@_
possa parecer mágico, na verdade, ele está apenas usando um recurso padrão dos componentes internos do Perl (que está prontamente disponível no XS, mas só aparece em alguns casos estranhos no Perl puro, como@_
ele próprio): uma matriz não armazena seus elementos diretamente , mas sim por referência. Assim, quando chamamosb
na segunda linha abaixo, o Perl gera uma matriz (chamando-a@_
) cujo primeiro elemento é uma referência ao mesmo armazenamento que$b{0}
usa. (Os valores de hash também são armazenados por referência; $ _ [0] e $ b {0} estão referenciando o mesmo armazenamento neste momento.) Como@_
não está fazendo nada de especial do ponto de vista interno, podemos fazer uma referência para isso, como poderíamos com qualquer outra matriz, fazendo com que ela sobrevivesse à sub-rotina em que está definida.Variáveis Perl também se referem ao armazenamento de dados por referência. Há muito tempo, as pessoas costumavam usar código como
*x = *y;
definir$x
um alias para$y
(via fazendo com que eles fizessem referência à mesma coisa), da mesma forma@x
que um alias para@y
,%x
como um alias para%y
e assim por diante. Isso acaba com a invariante de que variáveis com nomes semelhantes não precisam agir de maneira semelhante; portanto, o Perl moderno fornece uma alternativa; atribuir uma referência a um tipo de barra de texto substitui apenas a variável que corresponde ao tipo da referência (portanto*x = \%y
, o alias%x
apontaria para o mesmo armazenamento,%y
mas deixaria, digamos, (que é uma referência de matriz que mantém a matriz anteriormente chamada ativa) , para que acontece é que$x
paz). Essa sintaxe não se importa em saber se o armazenamento para o qual você está usando o alias tem um nome; portanto, quando atribuímos o valor de retorno deb
@_
*b
@b
é alterado para alias a lista de argumentos da chamada parab
(enquanto permanece%b
inalterada). Isso significa, notavelmente, que$b[0]
e$b{0}
agora aponte para o mesmo armazenamento, e atribuir a um mudará o outro. Tudo a partir de então é completamente direto.A documentação do Perl realmente não fala sobre esse tipo de detalhe, então não estou surpreso que alguém tenha entendido; a natureza de
@_
não ser exatamente como outras matrizes não é algo realmente enfatizado, e a maioria dos estilos de codificação visa minimizar os efeitos que isso tem, em vez de amplificá-los.fonte
q
es
ey
em
(principalmente tentando fazê-los terminar após a$b[0]
tarefa), mas nada está funcionando para mim (ainda).sub b{\@_}
cimentado em minha mente e, apesar de ter experimentado,*b
não consegui! Obrigada pelo esclarecimento. Eu poderia ter encoberto isso na sua explicação, mas por quesub b{\@_}*b=b$b[0]
não faz o mesmo?\@_
)*b
, mas é necessário mencionar explicitamente o elemento de hash. Com*b=b$b[0]
, você basicamente está aliasando o novo$b[0]
(depois de alterar os@b
pontos de onde ) para o$b[0]
que existia no início do programa, o que é inútil.JavaScript, 30 bytes, 10 números, quebrado
Não deve ser muito difícil, mas espero que seja apenas o suficiente para oferecer um desafio. :) Os caracteres não revelados estão marcados com
_
.fonte
Perl, 14 bytes, 10 números, Rachado
Trabalhos de 1 a 10.
_
são caracteres ocultos.Eu acho que isso não deve ser muito difícil de quebrar. Eu tenho um mais difícil, por 22 bytes, vou postar se este estiver quebrado.
Código original:
E substituir o
"!"
por uma corda do comprimento do número que deseja imprimir, por exemplo!
,!!
,!!!
, etc.No entanto, o ais523 encontrou outra maneira:
fonte
JavaScript, 22 bytes, 10 números, quebrado
Provavelmente fácil de quebrar.
_
sendo um personagem ocultofonte
xc_de
foi tudo menos um arenque vermelhoOitava, 17 bytes, 10 números, Rachado
Solução original
_
é o personagem oculto.fonte
Geléia , 7 bytes , 10 números, rachado
Nenhum curinga.
A falha alcançada (usar uma avaliação com um argumento) não foi, como muitos parecem estar nesse segmento, a pretendida.
O crack pretendido foi:
fonte
10
, porque tive sorte com isso enquanto tentava coisas que poderiam funcionar.10
Acredito que a maneira de trabalhar para você é avaliar o código de geléia na cadeia de caracteres9
com um argumento de0
(o valor padrão da entrada), que você remove da fila (sem efeito) e depois incrementa.10
está funcionando para você é avaliar o código de geléia na string9
com um argumento de[]
- o valor padrão da entrada0
, desenfileirado - que você incrementa., Como“1‘‘‘‘‘‘‘‘‘Ọv0Ḋ¤‘
Befunge-93, 11 bytes, 10+ números, Rachado
Este envio funciona para pelo menos 1 - 10. Caracteres não revelados são indicados com
□
.Experimente online
Devo dizer que fiquei impressionado que duas pessoas pudessem encontrar soluções independentes para isso, nenhuma das quais era o que eu estava esperando. Enquanto Martin chegou lá primeiro, estou dando a "vitória" ao Sp3000 pois a solução deles é mais portátil.
Esta foi a minha solução pretendida:
fonte
"15:**-6-.@
dá 1, mas não tenho certeza se o fato de"
colocar 32 em cima (devido a espaços implícitos) é um artefato do intérprete TIO ou parte das especificações do Befunge, porque, ao tentar alguns intérpretes, parece que nem todos os intérpretes fazem isso. Sua solução pretendida depende desse comportamento?R, 21 bytes, 10 números Rachado
Funciona para 10 números.
_
é um personagem oculto.Solução original:
fonte
Ruby, 16 bytes, 10 números, quebrado por xsot
#
é qualquer personagem.fonte
Oitava, 32 bytes, 10 números. Rachado
_
é um personagem oculto.Você pode experimentar o Octave on-line aqui .
Solução original:
1:
nnz(isprime(floor(sqrt(i):pi')))
2:
nnz(isprime(floor('sqrt(i):pi')))
3:
nnz(isprime(floor('sqrt(i):pia')))
4:
nnz(isprime(floor('sqrt(i):piaa')))
...
fonte
Oitava, 17 bytes, 10 números, Rachado
Caracteres não revelados são marcados com
_
.Solução pretendida:
fonte
Oitava, 19 bytes, 10 números, quebrado
_
é o personagem oculto.Solução pretendida:
fonte
sca
. Vindo de você, eu deveria ter pensado funções matriciais :-)05AB1E , 5 bytes, 10 números, com defeito !
Não é muito difícil, mas divertido :)
_
é um caractere aleatório. Usa a codificação CP-1252 . Experimente online!fonte
05AB1E , 6 bytes, 10 números, quebrado
Tentativa 2, desta vez sem a sequência de três caracteres: p.
_
é um caractere aleatório. Usa a codificação CP-1252 . Experimente online!fonte
JavaScript, 22 bytes, 10 números, quebrado
_
é o personagem oculto.Dica sobre a solução pretendida
O caractere que precisa ser alterado para gerar todos os números é sempre o mesmo.
fonte
JavaScript 21 bytes, 10 números rachados
Caracteres não revelados são marcados com
_
Rachado
Minha versão:
fonte
Python 3, 19 bytes, 10 números, quebrado
Caracteres não revelados são marcados com
?
. Testado em Python 3.5.2.fonte
Python 3, 16 bytes, 10 números, quebrado
Caracteres não revelados são marcados com
?
. Provavelmente é um pouco fácil, já que existem apenas cinco pontos de interrogação, mas espero que seja divertido.fonte
C #, 90 bytes, 10 números, quebrado
Sinceramente, não tenho ideia do quão difícil é quebrar.
Edit: Opa, erro de transcrição. Um
_
pouco depoisusing
.Agora resolvido por Hedi , que encontrou a solução pretendida (exceto o nome da classe).
fonte
JavaScript 33 bytes, 10 números rachados x2
Opa, eu postei minha linha por gerar 10 Que Hedi rachou como se fosse 1
Versão destinada a ser postada para gerar 1
Caracteres não revelados são marcados com
_
fonte
console.log(atob|"0Xc0"-0xB6|("Zp=="))
Eu achoPython, 10+ números, 61 bytes, Rachado!
Aqui estava o código que eu postei:
O código original era:
Basicamente, gera um erro (
'x' is not defined
) e depois imprime a linha na qual o erro foi encontrado. Portanto, continue adicionando novas linhas no início para aumentar o número.Eu sabia que não seria difícil decifrar - eu só queria uma maneira engraçada de imprimir números - mas não esperava que o Sp3000 o obtivesse tão rápido, são algumas habilidades profissionais!
fonte
STDOUT
e imprimir um número, mas acho que o reduzi muito. Ah bem.sys
definitivamente tornou muito mais simples, pois dava um bom ponto de partida para a pesquisa: P05AB1E, 11 bytes, rachado!
Trabalhos 1-10.
_
é um personagem oculto.Solução pretendida:
fonte
Oitava, 24 bytes, 9 números, quebrado
_
é um personagem oculto.(Inspirado pelo desafio de @ LuisMendo .)
fonte
JavaScript, 9 bytes, 10 números, Rachado
_
é o personagem oculto.fonte
Oitava, 25 bytes, 9 números. Rachado
_
é um personagem oculto.fonte