Isso faz parte de um desafio de policiais e ladrões . Vá aqui para a parte dos ladrões.
O desafio da polícia
Você deve escrever um programa ou função em um idioma de sua escolha, que produza a string Haystack
. No entanto, deve ser possível remover alguns subconjuntos de caracteres do seu programa (sem reordenar o restante), de modo que a sequência resultante também seja um programa válido no mesmo idioma, que será impresso Needle
. Ambos os programas / funções podem opcionalmente imprimir uma única nova linha à direita (independentemente uma da outra), mas nada mais. A saída diferencia maiúsculas de minúsculas e deve seguir a caixa exata fornecida.
Seu objetivo, é claro, é esconder a "agulha" muito bem. Mas observe que seu envio pode ser quebrado com qualquer solução válida, não apenas a que você pretendia.
Por favor inclua na sua resposta:
- O idioma (e versão, se relevante) do seu envio.
- O tamanho do programa Haystack em bytes.
- O próprio programa Haystack.
- O método de saída, se não for STDOUT.
- Se possível, um link para um intérprete / compilador on-line para o idioma escolhido.
Seu envio pode ser um programa ou função, mas não um trecho e você não deve assumir um ambiente REPL. Você não deve receber nenhuma entrada e pode enviar via STDOUT, valor de retorno da função ou parâmetro de função (saída).
Ambos os programas / funções precisam ser concluídos em 5 segundos em uma máquina de mesa razoável e precisam ser determinísticos. Você não deve usar built-ins para hash, criptografia ou geração de números aleatórios (mesmo que você propague o gerador de números aleatórios para um valor fixo).
No interesse da justiça, deve haver um intérprete ou compilador disponível gratuitamente para o idioma escolhido.
Uma resposta será quebrada se o programa Needle for encontrado. Se sua resposta não tiver sido respondida por 7 dias, você poderá revelar o programa de agulhas pretendido na sua resposta, o que torna sua submissão segura. Contanto que você não revele sua solução, ela ainda poderá ser quebrada por ladrões, mesmo que os sete dias já tenham passado. O programa mais curto e seguro do Haystack (medido em bytes) vence.
Exemplos
Aqui estão alguns exemplos simples em diferentes idiomas:
Ruby
Haystack: puts 1>0?"Haystack":"Needle"
Delete: XXXXXXXXXXXXXXX
Needle: puts "Needle"
Python 2
Haystack: print "kcatsyaHeldeeN"[-7::-1]
Delete: XXXXXXXX XX
Needle: print "eldeeN"[::-1]
Observe que o subconjunto de caracteres removidos não precisa ser contíguo.
Envios sem rachaduras
<script>site = 'meta.codegolf'; postID = 5686; isAnswer = false; QUESTION_ID = 144600;</script><script src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'></script><script>jQuery(function(){var u='https://api.stackexchange.com/2.2/';if(isAnswer)u+='answers/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJeRCD';else u+='questions/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJO6t)';jQuery.get(u,function(b){function d(s){return jQuery('<textarea>').html(s).text()};function r(l){return new RegExp('<pre class="snippet-code-'+l+'\\b[^>]*><code>([\\s\\S]*?)</code></pre>')};b=b.items[0].body;var j=r('js').exec(b),c=r('css').exec(b),h=r('html').exec(b);if(c!==null)jQuery('head').append(jQuery('<style>').text(d(c[1])));if (h!==null)jQuery('body').append(d(h[1]));if(j!==null)jQuery('body').append(jQuery('<script>').text(d(j[1])))})})</script>
fonte
Respostas:
Palheiro , 84 bytes, Rachado
Experimente online!
Isso parece (para mim) um pouco complicado, mas se você encontrar o subconjunto certo, é um pouco fácil demais ... oh bem, apenas para começar: P
fonte
Hexagonia , 37 bytes
Experimente online!
Apenas minha entrada obrigatória no Hexagony ...
Por conveniência, eis o código desdobrado:
Como isso funciona:
O programa inicia
H
e passamos para o IP nº 5. Esse IP começa no canto oeste, saltando e girando enquanto executa (com efeito);a;y;s;
(então nós imprimimosHays
). Em seguida,s
é incrementado para umt
por)
e impresso, depois passamosNe...(c
antes de chegar aa;c;
(ainda pulando em torno de uma pequena seção do hexágono). O programa atinge o_
, reflete-se por meio\
del
que fica diminuída a umk
por(
que passa através de outro\
antes de serem impressos e os termina do programa na@
.Versão detalhada
Mostrar snippet de código
fonte
Brain-Flak , 146 bytes ( Rachado )
Experimente online!
Solução pretendida, 80 bytes
fonte
JavaScript, 95 bytes (ES6), Rachado
Uma função retornando uma string.
Demonstração "Haystack"
Mostrar snippet de código
fonte
Haskell , 168 bytes ( Rachado por nimi )
Experimente online! A avaliação do identificador
h
retorna a sequência"Haystack"
, após algumas exclusõesh
render"Needle"
.fonte
Geléia , 41 bytes ( rachado )
Experimente online!
Caçada feliz!
fonte
Hexagonia , 32 bytes. Rachado
Não consegui resolver o Martin , então estou publicando o meu.
Experimente online!
Aqui está formatado:
Meu objetivo era que ambas as soluções usassem o maior número possível de IPs, obtive 6 para Needle e apenas 5 para Haystack .
fonte
Pitão , 44 bytes ( Rachado )
Experimente aqui.
fonte
Java (OpenJDK 8) ,
226217 bytes ( Cracked )Primeiro código de golfe, provavelmente muito fácil, mas foi um desafio divertido!
Experimente online!
fonte
return new Main().d();
paraSystem.out.print(new Main().d());
no método principal.dc , 148 bytes ( rachado )
Experimente online!
É bastante simples, mas espero que seja pelo menos um pouco divertido de resolver:
fonte
JavaScript, 119 bytes (ES6), Rachado
Uma função retornando uma string. Muito longo e não tão difícil, mas espero divertido.
Demonstração "Haystack"
Mostrar snippet de código
fonte
Python 2.7.2, 103/117 bytes, Rachado
Versão da função (117 bytes):
Versão do programa (103 bytes):
Isso deve imprimir
Haystack
bem. Testado em Python Fiddle .Btw esta é a primeira tentativa.
Não tenho certeza se a versão do programa é contada como um trecho, então coloquei as duas versões aqui.
fonte
Python 2.7.10 com Numpy 1.12.1,
208209 bytes ( quebrado )Parece que há uma agulha e um palheiro no Numpy! Aqui está o palheiro; veja se você consegue encontrar a agulha. Espero que você se divirta tanto procurando a agulha quanto eu a escondi.
Ele gera como especificado:
Você pode repl.it .
fonte
Java 8, 321 bytes, Rachado
Experimente aqui.
Mais legível:
Not sure if it's too long/hard.. Then again, Java in general is pretty long to begin with, so hiding the 'Needle' properly of course increases the byte-count quite a bit..
If no one cracks it, I'll add some spoiler-tips later on.
fonte
Ruby, 185 bytes, cracked by cab404
Try it online!
I'll try to come up with something sneaky, but for now here's a try at "simple but obnoxious."
fonte
Brain-Flak, 188 bytes (Cracked)
I only just saw Funky Computer Man's answer As I posted this.
It is somewhat obfuscated.
Try it online!
Intended solution, 96 bytes:
Try it online!
fonte
T-SQL, 757 characters CRACKED
Apologies for deleting my previous answer--I edited it too many times as I obfuscated, and didn't want to give anything away. :)
In any case, obfuscating in SQL is a bit difficult, unless you want to do crazy stuff like this, and I wasn't that invested.
Also, I unabashedly do not apologize for naming my variables after Dota.
SQL Fiddle
If this is the easiest answer in this thread, you're probably right. :P It's hard to trick SQL.
fonte
Ly, 40 bytes, cracked
Try it online!
Oh boy, another Ly CNR submission. These haven't worked very well historically (possibly due to me and not the language),
but we'll see how this faresand today is no exception.Solution:
fonte
Java, 345 bytes, Cracked
Try it online!
Really long and probably easy to crack, but at least it's got a
Stack<Hay>
!fonte
TI-BASIC, 119 bytes (Safe)
Output stored in
Ans
.Solution
Remove characters from
Str1
to give it a length of 1.fonte
PHP, 44 bytes, Cracked
fairly easy to crack; but I like it.
Run with
-nr
or try it online.fonte
Aceto, 154 bytes (Safe)
Try it online!
fonte