Isso faz parte de um desafio de policiais e ladrões . Vá aqui para a parte da polícia.
O desafio dos ladrões
A resposta de um policial pode ser quebrada removendo qualquer subconjunto de caracteres do programa Haystack, para que ele seja exibido em Needle
vez de Haystack
(embora ainda seja um envio válido no mesmo idioma). Você não precisa encontrar exatamente a mesma solução que o policial pretendia, desde que a sua seja válida pelas restrições acima.
Se você conseguir isso, poste uma resposta com a solução, vinculando-a à resposta do policial e deixe um comentário sobre a resposta do policial voltando para a sua.
O ladrão que consegue mais respostas policiais ganha. Os laços são quebrados pela soma dos tamanhos das respostas dos policiais rachados (a favor do ladrão que racha envios mais longos).
Cada resposta policial pode ser quebrada apenas uma vez e, é claro, você não tem permissão para quebrar sua própria resposta. Se a resposta do policial for inválida antes ou depois de ser quebrada, ela não será contabilizada na pontuação do ladrão.
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.
fonte
hashing, encryption or random number generation
é permitido (embora possibilidade minúscula)?Respostas:
JavaScript, 85 bytes (ES6)
Racha a resposta de Arnauld
Demonstração "Needle"
Mostrar snippet de código
Explicação
A função original era:
que é mais legível como:
Note que quando
n=21625674
, entãon.toString(35)
é'eedle'
.Os 35 na entrada provavelmente não podem ser alterados para um subconjunto (porque queremos uma base grande o suficiente para conter todas as letras 'del', portanto, precisamos de uma base com pelo menos 22). Assim, os números para mudar são
74837258394056219
,268435455
e124038877
. Queremos substituí-los pelos números a, b, c, cada um formado por um subconjunto dos dígitos dos números originais, de modo que a funçãog(k) = (k * a & b)
, iniciandok=35
e iterando 35 vezes, e depois XORed com c, dê21625674
.Para este, depois de pensar um pouco, como os comprimentos são pequenos (a máxima
a
tem comprimento 17,b
ec
tem comprimento 9), a utilizado de força bruta :-) escreveu programa um C ++ para gerar todos os números possíveisa
,b
,c
formado como subconjuntos dos números originais, itere por todosa
eb
e verifique se o necessárioc
estava no conjunto. É executado em cerca de 15 segundos, e a única saída éa=4853461
,b=268435455
,c=12408877
(se torna o númerob
não precisa ser alterado). Não tenho certeza se existe uma maneira mais inteligente de inverter esta função.fonte
Palheiro , 82 bytes
Rachaduras na resposta do HyperNeutrino
Experimente online!
fonte
0
o princípio: P Bom ver outra abordagem! +1Brain-Flak , 96 bytes
Racha a resposta do homem Funky do computador .
Experimente online!
Este foi um desafio divertido.
A -24 no início que converte
y
aa
no original é agora usado para convertere
aM
, que é então convertidoN
no lugar, alterando todo o ciclo final para())
. A primeira letra enviadak
foi alterada parae
simplesmente removendo um clique que adiciona 6 a ela. O resto simplesmente se encaixou, com alguns erros humorísticos ao longo do caminho (incluindo um programa cuja saída foiMeddle
).Comparação dos dois programas:
fonte
N
tinha 77 em vez de 78, então não entendi.Haskell
Racha a resposta de Laikoni .
Experimente online!
Código original:
substituindo caracteres removidos por sublinhados:
Como
Needle
é construído: a sequência no final do código é dividida em palavras. O primeiro caractere de cada palavra é incrementado quantas vezes houver caracteres na palavra, por exemploHaysta
- ->H
mais 6 caracteres ->N
.fonte
Hexagonia , 17 bytes, H.PWiz
Experimente online!
Comparação com o original:
Visualização:
Explicação
Marcas de bônus - usa todos os 6 IPs e todas, exceto uma das células!
O IP # 0 começa indo direto ao longo do caminho preto para o
]
.Em seguida, fazemos a transição para o IP nº 1, que segue pelo caminho vermelho, imprimindo
N
eN;
depois retornando ao]
novo.Em seguida, fazemos a transição para o IP # 2, que segue pelo caminho azul, armazenando
e
na célula de memória atual e depois pelo caminho verde, executando (com um reflexo em\
);;(;
que imprimeee
, diminui a célula de memóriae
parad
depois imprimed
.O IP continua no caminho laranja, executando as
Nl;se
impressõesl
e os armazenamentose
na célula de memória atual. Ela continua ao longo do caminho castanha, a impressão doe
com;
. A essa altura, já imprimimosNeedle
, então o resto está apenas terminando. O IP é armazenado ec
, em seguida, acessado]
. Em seguida, fazemos a transição para o IP # 3, que segue pelo caminho azul, atingindo , saltando para o qual entra . Em seguida, fazemos a transição para o IP # 4, que segue pelo caminho verde, saltando e depois ramificando para (já que é positivo). Por fim, fazemos a transição para o IP nº 5, que armazena e sai com .\
_
]
_
\
]
c
e
@
fonte
Python 2 , 123 bytes
Rachaduras Resposta de agtoever
repl.it
Comparação:
Eu me diverti muito encontrando soluções que imprimiam
Meedle
eNeedlf
ajustando um polinômio à mediana dos índices dos símbolos numpy que começam com cada uma das letrasNeedle
. Tentei então encontrar coeficientes similares com subconjuntos do programa original manualmente, mas acabei tendo que recorrer à força bruta, forçando alguém a encontrar uma solução válida.fonte
Javascript, 91 bytes
Racha isso . Na verdade, foi divertido.
Mostrar snippet de código
fonte
Gelatina , 14 bytes
Rachaduras Resposta de Jonathan Allan
Experimente online!
Comparação:
Eu costumava
œc
percorrer vários subconjuntos de cadeias literais, usadostr -d
para cada filtro possível egrep
editados para Needle. Usando a suposição de que nenhum dos caracteres usados na primeira sequência foi usado na resposta, deixe-o encontrar uma resposta em menos de 15 segundos.fonte
Nebbed
+ruble
sem nenhumrub
.Python 2 , 73 bytes
Racha a resposta do user71546 .
Experimente online!
Resolvido com este programa.
fonte
Java (OpenJDK 8), 191 bytes
Racha a resposta de Luke Steven
Experimente online!
Caracteres excluídos:
Isso faz
d
avaliar para078101101100108101
, que feitiçosNeedle
.fonte
Ruby , 149 bytes
Rachaduras: /codegolf//a/144790/74216
O módulo era bem pequeno, então escrevi uma coisa de aniversário com vários tópicos e esperei o melhor.
Edit: E depois disso encontrei uma resposta ainda mais curta.
Experimente online!
Alterar:
fonte
dc , 34 bytes
Racha isso . TIO .
Comecei obtendo a representação numérica do Haystack (5215583380252484459) e Needle (86197399743589). Em seguida, fiz uma fatoração deste último, que é 47 * 432323 * 4242169. A partir disso, foi bastante fácil reconstruir esses números.
Marcando os caracteres usados:
fonte
Hexagonia , 19 bytes, Martin Ender
Experimente online!
Comparação com original
Código desdobrado
Então, eu nunca escrevi nada em Hexagony, mas imaginei com apenas 37 bytes que eu poderia criar o crack. Martin, espero que saiba que dediquei muito tempo a tentar descobrir isso. :)
Posso estar incorreto, mas explicarei o que esse código está fazendo:
O programa inicia com
[
, que se move automaticamente para o IP nº 5. Esse IP começa no canto oeste, em direção ao[
mais uma vez, que o move para o IP # 4. A partir daqui, ele executa, emN;e
seguida, segue para o canto sudeste e executa;
, salta para a direita para outro e;
depois para o(
qual diminui a correntee
para ad
. Em seguida, ele continua (com uma quebra automática) para...;.
saltar paral
e chegar à[
última vez, passando para o IP nº 3. Ele executa;
,>
redireciona para o noroeste e.
depois<
para o oeste, atingindoe
, quebrando;
e terminando no@
.Versão detalhada
Mostrar snippet de código
Estou tão feliz que você tenha usado um tamanho normal de hexágono para o programa Needle; Eu estava checando os programas de tamanho 19 (para um hexágono lateral com comprimento 3) quando percebi que era possível remover qualquer número de caracteres e ele preenchia automaticamente o hexágono com
.
s no final, o que tornaria muito mais difícil de decifrar. Assim, o Hexagony é uma linguagem maligna para esse desafio, porque (principalmente) qualquer caractere removido é alterado por todo o caminho de execução do programa. Dito isto, eu gostei de tentar chegar a isso, mesmo que eu acabasse sendo forçado no final. :)fonte
Java (OpenJDK 8) , 151 bytes
Rachaduras Resposta de Kevin Cruijssen
Experimente online!
Comparação:
Eu sinto que a última parte não foi intencional.
fonte
v->{String h="Haystack";int x=7;return new String(new java.math.BigInteger(new byte[]{(byte)((~-~-~-~-~-~-~-~1^-x++*x)+15),new Byte(""+10+((x=h.length()*4/x)+x-7))}).toByteArray())+(new StringBuffer("hidden".substring(++x%3,x).replaceFirst("d","e"+(char)(x*21+3))).reverse());}
(não sei por que incluí o BigInteger, já que apenas a matriz de bytes é suficiente ..) , mas como o seu melhor .. :)Flak cerebral , 102 bytes
Racha a resposta de H.PWiz .
Experimente online!
fonte
Ly , 21 bytes
Experimente online!
Racha a resposta de LyricLy .
fonte
Java por Johnathan S.
TiO
Simplesmente remova o laço que adiciona o Hay e nada ficará na pilha além da agulha.
fonte
equals
método também funciona.Pitão , 21 bytes
quebra isso .
Experimente online!
fonte
T-SQL por phroureo , 757 bytes
De alguma forma, não acho que essa foi a solução pretendida. Usa os caracteres cercados por
{}
:fonte
PHP
Rachaduras Titus resposta
Experimente online
fonte