Espaço em branco significativo: ladrões
Isso faz parte de um desafio de policiais e ladrões. Vá aqui para a parte da polícia.
Para o objetivo deste desafio, definiremos espaço em branco como apenas feeds de linha (0x0A) e espaços (0x20). Observe que a maioria dos idiomas e tipos de expressões regulares também consideram muitos outros caracteres como espaço em branco, dentro e fora do intervalo ASCII, portanto, talvez você não consiga usar os built-ins correspondentes.
O desafio dos ladrões
A resposta de um policial pode ser quebrada, transformando-a em um programa ou função válida (no idioma escolhido), que executa a tarefa de remover o espaço em branco de uma sequência de entrada, inserindo o espaço em branco no código. Por exemplo, se você recebeu a seguinte entrada:
O programa deve gerar
Após inserir o espaço em branco, a contagem de bytes da solução não deve exceder a contagem de bytes indicada na resposta da policial. 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.
Haskell, 100 bytes, de Laikoni
> <>, 40 bytes, por DanTheMan
Realmente divertido de se exercitar.
Experimente no idioma> <>
Bom trabalho! Estou feliz que você tenha gostado de quebrá-lo.
— 21716 DanTheMan
JavaScript ES6, 199 bytes de Arnauld
Percebi que a divisão "SecretCode"significava que eu estava procurando 11 números que somaram (assumi) 33. Esse é um problema de estrelas e barras, onde o número de espaços são as estrelas e as letras "SecretCode"eram as barras. Eu fiz as contas para ver quantas combinações havia para tentar (1.917.334.783 combinações) e decidi usar apenas força bruta, levou o dia todo.
Provavelmente existe uma maneira mais inteligente de fazer isso, por exemplo, percebendo que kdeve ser 33e 66para os índices 10 e 21, respectivamente, mas sou preguiçoso.
Ei, muito bem! ;-)
$/**/=/[ \n]/;s['sp'+'lit']($)... Oh, isso é sujo.
No caso de alguém estar curioso sobre a minha tentativa de força bruta, foi pastebin.com/aN9Z1jVM
C, 475 bytes por rexroni
Eu poderia começar a usar alguns desses define :)
Após o pré-processador, o código se parece com isso:
Uau! Bom trabalho. Eu estava com problemas para ler até o final e escrevi.
@rexroni #defineabome jogou fora por um tempo. No começo, eu pensei que tinha que ser o #define ab oque apenas adicionaria alguns ;s extras , mas isso não funcionou perto do fim.
sim, que foi escolhido especificamente para tornar mais difícil :)
Ruby, 86 bytes + 1 sinalizador = 87 por histocrat
Isso foi realmente divertido, cada caractere na sequência passada evalé substituído pelo código de caractere ( ord) XORed ^(...)contra o número de espaços restantes na sequência. O código resultante é:
RprogN, de Ataco
Isso parece fazer o truque
Eu acidentalmente golfed enquanto rachaduras haha, até 14 bytes
Estou realmente curioso como você jogou.
@ATaco, o programa tem apenas 14 bytes. Você contou um avanço de linha à direita ou algo assim?
Parece-me 15 bytes
@ATaco eu estava errado, eu não podia novas linhas de teste sobre o compilador online, que por sua vez me levou a pensar que estava trabalhando, mas eu tinha removido o lf literal
V, 37 bytes, por DJMcMayhem
Não imprimíveis:
O que ürealmente me impressionou, fiquei esperando tanto e îser comandos.
Í üîin V traduz para :%s/ \|\n//gin vim, que remove globalmente todo o espaço em branco. O Ícomando está no wiki e o üe îare |e nrespectivamente com seu conjunto de bits alto
Bom trabalho! Essa é a solução exata que eu tive. :)
C, 140 bytes por betseg
(Também espero estar fazendo isso direito.)
Ninja'd me por um minuto!
@KritixiLithos Same, estava prestes a submeter quando este anwer apareceu ^^
MATL, 22 bytes por Luis Mendo
Embora eu não tenha certeza do porquê, isso parece funcionar
Vou ter que ver se consigo descobrir o que está fazendo. Imaginei que os comentários deviam ter feeds de linha depois deles e, em seguida, era apenas uma questão de colocar os espaços nos pontos corretos.
Bom, uma acrescentei uma explicação parcial na minha resposta :)
@ StewieGriffin, obrigado pela explicação. Eu estava tentando entender por que funcionava, mas estava indo devagar. Documentos muito abrangentes Luis :)
@MickyT Você quer dizer verboso como Java :-P Bom trabalho de craqueamento!
MATL, 22 21 bytes de Luis Mendo.
Finalmente ... MickyT decifrou enquanto eu escrevia uma explicação, então a resposta dele é a "válida". Eu postei isso de qualquer maneira, de acordo com este meta post .
Me Ysão desnecessários e são comentados. Basta adicionar 4 caracteres de espaço em branco, não 5.
Isso é equivalente ao mais compacto :
Bom trabalho de craqueamento!
Obrigado :) Eu não sabia nada sobre o MATL antes de começar ... Acho que minha explicação não está totalmente correta (mas deve estar bem próxima?). Demorei muito tempo, desde que o 1e5impresso 100000, ou 1eera um telefonema reshape, mas então o que era 5? (Vejo agora que o item %está no final da linha, não seria 5Mum cinco e um M. Além disso, eu pensei que tinha que ter Y(uma linha. No final das contas, um ótimo tutorial sobre MATL :)
A explicação está totalmente correta :-) Sim, é uma maneira boa (embora um pouco difícil) de começar com um idioma.
Befunge-98, 65 bytes por ninjalj
Isso foi muito divertido. Deduzi que, uma vez que existem poucos comandos de mudança de direção e nenhum ^<[]?xou similar, ele precisa usar quebra automática. Eu então escrevi um script Python para ajudar a obter o espaçamento correto para os j.
O código funciona pegando input ( ~) e duplicando-o duas vezes ( ::). Subtrai 10 ( ':'0ou ord(':') - ord('0')) e 32 ( '[';ou ord('[') - ord(';')). Em seguida, o segundo resultado é logicamente negado (1 se houver espaço, 0 caso contrário) e um 8 é pressionado.
Agora vem a parte que precisava descobrir o que pular. O 1+!é ignorado continuando para a próxima linha. #pula o@ . O resultado logicamente negado (0 ou 1) é multiplicado pelo 8 e 1 é adicionado.
O código então salta muitos (ou seja, 1 ou 9) espaços mais um extra à medida que o IP se move. Se o personagem não era um espaço, acaba no !. O código de caractere menos 10 é negado logicamente (1 se for nova linha, 0 caso contrário).jdepois, não pula nada, e print ( ,) é chamado e o loop é retomado envolto verticalmente.
Se o caractere for um espaço, a linha inferior será repetida novamente 32, 22como parte inferior da pilha. O primeiro jsalta 705 espaços. Então a linha volta pela terceira vez. Se houver mais de dois 10 na pilha (o código apenas os deixa), o primeiro jsalta 100 espaços e o loop se repete. Caso contrário, o primeiro jpula para !, um zero é negado, o segundoj pula sobre a impressão e o programa continua.
Eu consegui jogar até 59 bytes.
Listar o número do policial no seu cabeçalho é bom (já que o desempatador recompensa tamanhos maiores de qualquer maneira).
C # 6, 201 bytes, por leite
trueJoinnão está definido, então só string.Concat()resta.
pé "\n". p[0]^32^10é espaço. Teria sido (um pouco) mais difícil se é p[0]^42ou outras constantes semelhantes.
Conforme comentado nos leites, responda que isso precisa de C # 6+, se eles mudarem, você também pode?
reticular, 43 bytes, de Conor O'Brien
Isso foi mais difícil para mim do que deveria, porque eu era burra demais para encontrar a documentação e acabei tendo que adivinhar como alguns dos comandos funcionavam. Portanto, algumas dessas explicações podem não ser totalmente precisas, mas esse foi meu entendimento básico do código.
Existem documentos no wiki do github.
boa ideia! E impressionante que você tenha feito isso sem o wiki: D
C #, 159 bytes por LethalCoder
A sequência no final da linha 1 é " \n"(espaço + nova linha).
Minkolang v0.15, 88 bytes por Kritixi Lithos
Bem feito em quebrá-lo! Eu esperava que os Comissos fossem confusos, mas um bom trabalho!
@KritixiLithos, para ser honesto, depois que eu dividi as camadas e percebi que a maior parte do trabalho foi feito na camada superior, ficou mais fácil. Eu aprendi um pouco sobre o idioma fazendo isso, então obrigado :) #