Espaço em branco significativo: Policiais


51

Para o propósito 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 da polícia

Você deve escrever um programa ou função em um idioma de sua escolha, que use uma sequência de caracteres ASCII (exceto NUL), como entrada e saída com todo o espaço em branco removido. Por exemplo, se você recebeu a seguinte entrada:

H e l l o,
 W o r l  d!

Você deve produzir

Hello,World!

Seu envio será o código-fonte com todo o espaço em branco removido (o mesmo processo que passar sua solução como entrada para si mesmo, embora sua solução também possa conter caracteres fora do intervalo ASCII). Seu objetivo é dificultar ao máximo descobrir onde os espaços em branco precisam ser inseridos para recuperar uma solução válida no idioma de sua escolha. Observe que os ladrões podem inserir menos espaço em branco do que você removeu, mas não mais. Lembre-se também de que os ladrões não precisam corresponder ao seu código exato, apenas precisam encontrar uma solução válida.

Sua resposta deve conter o seguinte:

  • O idioma (e versão, se necessário) em que você escreveu sua solução.
  • A contagem de bytes da sua solução antes de remover o espaço em branco.
  • Sua solução com espaço em branco removido.

Sua solução pode ser um programa ou função, mas não um trecho e você não deve assumir um ambiente REPL. Você pode receber entradas via STDIN, argumento da linha de comando ou argumento da função e saída via STDOUT, valor de retorno da função ou parâmetro da função (saída).

No interesse da justiça, deve haver um intérprete ou compilador disponível gratuitamente para o idioma escolhido.

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). Sua solução deve ser capaz de processar qualquer sequência de 100 caracteres ou menos em menos de 10 segundos em uma máquina de desktop razoável.

Se sua resposta não tiver sido solucionada dentro de sete dias (168 horas), você poderá revelar sua própria solução, quando sua resposta será considerada 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. A resposta mais curta e segura vence (medida antes de remover o espaço em branco).

Se sua resposta for quebrada, indique-a no cabeçalho da sua resposta, juntamente com um link para a resposta do ladrão correspondente.

Vá aqui para a parte dos ladrões.

Envios sem rachaduras

<script>site = 'meta.codegolf'; postID = 5686; isAnswer = false; QUESTION_ID = 103182;</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>


Relacionado. (Inspiração, na verdade.)
Martin Ender

7
Parece que Whitespace iria quebrar este desafio ...
NoOneIsHere

8
@SeeOneRhino Why? O ladrão só precisa resolver o problema no espaço em branco, sem usar mais bytes que o policial. A menos que um policial encontre uma resposta do Whitespace loucamente bem jogada que ninguém possa igualar, as respostas do Whitespace são geralmente as mais vulneráveis ​​nesse desafio.
Martin Ender

11
@SeeOneRhino Além disso, as guias não contam como espaço em branco, portanto não serão removidas.
mbomb007

4
Desta vez, não há envios de hexagonia, eu acho #
MildlyMilquetoast 15/12

Respostas:


17

Haskell, 100 bytes, quebrado por nimi

main=interact$iddoidlinesidwordsdoidoidoid=doiddoid<-dooiidoid<-dooiddoiddodoid

Este é um programa completo e um poema dadaísta.


Código com espaço (Experimente online!)

main=interact$id doid lines id words
doid oi d o id=do
 iddoid<-do oi id
 oid<-do o iddoid
 do d oid

Ainda parecendo bastante poético, se você me perguntar.

De-ofuscado

main = interact f
f s = do
 l <- lines s
 w <- words l
 id w

Explicação

A donotação é apenas açúcar sintático, portanto fpode ser escrita de forma equivalente como

f s = lines s >>= words >>= id

Para listas, o >>=operador-é definido como concatMap, então fse torna

f = concat . map id . concat . map words . lines

Assim, dada uma entrada "a b\nc", linesdivide a entrada em novas linhas ["a b","c"], wordsdivide cada linha no espaço em branco, produzindo [["a","b"],["c"]](como percebi agora, isso inclui novas linhas, portanto, linesna verdade não é necessário). Concatenar uma vez concedida ["a","b","c"], idé a função de identidade e, como tal, não tem efeito, e a concatenação final produz a sequência "abc".


3
Preciso dizer que gosto de poemas dada istic?
Dada


@nimi sim, muito bem.
Laikoni

12

C, 475 bytes, quebrado por Riley

Certas partes de C tornam realmente muito fácil ver para onde devem ir os espaços em branco. O pré-processador c, no entanto, não. Portanto, esse código é dividido em duas partes: até a linha 17 (236 caracteres com espaço em branco), o código fica praticamente oculto e, depois disso (239 caracteres com espaço em branco), boa sorte!

Não vou vencer esta competição por um longo tiro, mas eu queria ver o que poderia ser feito com o pré-processador c.

#include<unistd.h>#defineachar#defineb*#definecwrite#definedstdin#defineestdout#definefread#defineg(#defineh)#defineiwhile#definejif#definek0#definel&#definem,#definen=#defineo;#definep1#definegpmlmlh#defineabo#definemldmp#definejgdoabo#definelbabod#definegfhaboc#definejgmben#definepmlfg#definegpmlbintmain(){ajgajgmljgigpmlkmlgpmlhjgd!=''&&gpm!='\n'gfgpmlgpmlo}

Compila (com avisos, se você os ativar) com gcc -std=c89 -ansie funciona comocat file | ./a.out


Isso foi quebrado muito mais rápido do que eu pensava, parabéns! Minha estratégia era usar #definespara remover limites óbvios de tokens (como ';') e depois usar mais #definespara torná-lo REALMENTE não intuitivo como eles eram embaralhados.

A propósito, é assim que o código se parece depois que apenas o espaço em branco óbvio foi adicionado:

#include <unistd.h>
#define a char
#define b *
#define c write
#define d stdin
#define e stdout
#define f read
#define g (
#define h )
#define i while
#define j if
#define k 0
#define l &
#define m ,
#define n =
#define o ;
#define p 1
// thus begins the obfuscation
#define gpmlmlh
#define abo
#define mldmp
#define jgdoabo
#define lbabod
#define gfhaboc
#define jgmben
#define pmlfg
#define gpmlb
int main(){
    ajgajgmljgigpmlkmlgpmlhjgd!=''&&gpm!='\n'gfgpmlgpmlo
}

5
Bem-vindo ao PPCG! :)
Martin Ender

11
Rachado Esta maneira realmente divertida.
Riley

9

Oitava, 69 bytes, SEGURO!

@(U)eval([85329685312682956148388531268295156241''])

Formato de entrada: as novas linhas não podem ser inseridas diretamente no prompt de comando. Crie a cadeia de caracteres por concatenação como esta:

str = ['This is ',10,'a',10,'string']
str = This is
a
string

Chame a função assim (adicione espaço em branco):

f=@(U)eval([85329685312682956148388531268295156241''])  
f(['This is ',10,'a',10,'string'])

Código original:

Você só precisava de 66 bytes para que isso funcionasse, mas escrevi 69 no cabeçalho para não fornecer muita informação.

O código original é assim:

@(U)eval([853 296 853 126 829 561 48 38 853 126 829 51 562 41 ''])

Explicação:

@(U)eval(.....)    % Anonymous function taking U as the input variable

Ué um ponto de código 85na tabela ASCII, portanto parece que o primeiro espaço deve ser depois 85. Errado!

Se inserirmos o espaço depois 853, devemos obter o número do caractere 853, certo ..? Usando charpara verificar se esse é um caractere reconhecível:

char(853)
warning: range error for conversion to character value

No entanto, não usamos charno código, usamos a versão mais curta, onde concatenamos os números com uma string vazia[853 ''] . Em vez de dar um erro fora do intervalo, a versão mais curta simplesmente aceita o módulo de números 256.

Por acaso é isso 85+3*256 = 853. Enquanto char(853)dá um aviso,[853,''] retorna U.

A maneira óbvia de executar esta tarefa no Octave é:

@(U)U(U~=10&U~=32)

Sabemos que deve haver parênteses de abertura (código 40) após o primeiro U. 29obviamente não se encaixa, então mudamos o espaço mais à direita e obtemos296 . mod(296,256) = 40. Bingo!

Continue assim e termine com a sequência:

[853 296 853 126 829 561 48 38 853 126 829 51 562 41 '']
ans = U(U~=10&U~=32)

Finalmente, usamos evalpara transformar a string em código.


3
+1 para explicar o formato de entrada em 2 linhas, enquanto ele me levou 10 :-D
Luis Mendo

11
Bem, ainda não tem idéia, exceto que agora eu reconheço carta Uentre esse monte de números :-)
Luis Mendo

2
Muito bom truque! É uma loucura que o Octave faça isso com códigos de caracteres. Eu não tinha ideia disso. Mas então, o que você pode esperar quando o documento oficial diz que o Octave suporta Unicode por acidente ... :-P
Luis Mendo

7

JavaScript ES6, 199 bytes, quebrado por SLuck49

Uma entrada bastante volumosa com 33 bytes de espaço em branco para adicionar.

s=>eval(atob`ISYgJiAtOkI8Qk97BRBeaxZFShoUZSsiOGkMenNy`.replace(/./g,(c,i)=>String.fromCharCode(c.charCodeAt()^(k+="SecretCode".split(/\w/)[i%11].length)),k=0)).join``

Nice one .. Eu acho que nós precisamos adicionar a quantidade adequada de espaço em branco para "SecretCode", a fim de xor a string encriptada e obter a fonte adequada ~
Patrick Roberts

@PatrickRoberts Sim, exatamente.
Arnauld

Eu já tenho um script automatizado testar todas as combinações possíveis, é apenas uma questão de tempo ... torce as mãos, sabendo que seu plano maligno está trabalhando
Patrick Roberts

Ufa ... isso está demorando mais do que eu pensava. Estou pensando em escrever um desafio de código de golfe para calcular o número de permutações possíveis, considerando uma matriz de comprimento N e uma soma S à qual os elementos devem somar. No momento, estou na [ 10, 0, 0, 0, 0, 9, 8, 1, 5, 0, 0 ]sequência de gap e minha função de iteração para o array é (a)=>{for(var x=0;!a[x];x++);if(a.length-x>1){a[0]=a[x]-1;a[x]=(x==0?a[x]:0);a[x+1]++;}else{a[0]=a[x]+1;a[x]=0;i=0}}. Eu comecei em [ 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ].
Patrick Roberts



6

Befunge-93, 58 bytes, Cofre!

_vv$v<~:!`:<#^0*@-:0*5|845\+`-v0,<#-^<

Experimente online!

Programa Original

_vv
 $ v<
 ~:!`
 :<#^0
*  @
-:0
*5 |
8
45
\+`
-
v0,<
#-
^<

Experimente online!

O truque para isso era que o caminho da execução era mais vertical do que horizontal, então vários espaços foram inseridos aleatoriamente no código para embaralhar ainda mais os caminhos verticais. Depois que as quebras de linha e os espaços em branco foram finalmente removidos, esperava-se que houvesse muito pouco para indicar como as operações se relacionavam.

Caso isso não fosse difícil o suficiente, eu também instalei um pouco de intercalação, de modo que várias operações acabaram sendo executadas por diferentes caminhos de código que fluem perpendicularmente um ao outro. A idéia é que, se você achava que havia encontrado a posição correta para um comando específico, não perceberia que talvez precise usá-lo novamente mais tarde no código.

Não tenho certeza se valeu a pena todo esse esforço tentando complicar as coisas, ou as pessoas nem se deram ao trabalho de resolvê-las. :)

Código Explicação

_      Since an empty stack is treated as zero, this initially just branches right.
v      The program flow is then directed downwards.
$      And this drop command initially does nothing because the stack is still empty.
~      A character is read from stdin.
::     Two duplicates are created.
55+-   We subtract 10 from the first copy (the 0- is just a nop to confuse things).
\48*-  And subtract 32 from the second copy.
*      The product of those two will be zero if the character is a newline or space.
_      So if we got whitespace, our branch goes right again repeating the loop.

v      If not, we go left, wrapping around till we hit the down arrow in column 3.
:<:    Again we make two duplicates of the character.
0`!|   One copy is used to compare if it's not greater than zero.
@      If it's not (i.e. it's the EOF), the branch goes up and we terminate.
<      Otherwise we go down and to the left.
,      Output the second copy of the character, leaving one remaining on the stack.
0      Push a zero to force the next branch right.
v      Redirect the flow down, wrapping to the top again.
_      Back at our initial branch, the zero we pushed forces us right.
v      Again the program flow is directed downwards.
$      And the drop command gets rid of the last duplicate character.
~      So now we're back reading the next character and the loop repeats.

5

C # 6, 201 bytes, Rachado pelo Ng do Link

usingSystem.Linq;_=>string./**/#iftrueJoin(/*"*//*/""/**//*/"*/",#elseConcat(//*/,#endiffrommin""letp=$@"{@""[1]}"fromiin(_.Replace(p,@""))where!new[]{p[0]^32^10}.Contains(i)select@i);

184 bytes recolhidos, deixando 17 bytes de espaço em branco.

Solução rachada usando o ConcatConsiderando que minha solução pretendida usou o Join, aqui está a solução pretendida:

_=>string./**/
#if true
Join(/*"* //*/""/**//*/"* /",#elseConcat(//*/,
#endif
from m in" "let p=$@"{@"  "[1]}"from i in(_.Replace(p,@"
"))where!new[]{p[0]^32^10}.Contains(i)select@i);

Isso precisa do c # 6+ para funcionar. Você pode adicionar isso?
TheLethalCoder


5

MATL , 22 bytes. Rachado e rachado .

Este é um programa que recebe entrada através do STDIN e produz a saída através do STDOUT.

Código sem espaços ou novas linhas:

t'@*'dm1e5%Mdw%Y(

O formato de entrada é um pouco estranho por causa de como o MATL recebe a entrada de string. Seqüências de caracteres com novas linhas não podem ser inseridas diretamente através do STDIN, porque cada entrada precisa ser uma única linha (a nova linha marca o final da entrada). Portanto, o formato é o seguinte:

  1. Uma sequência é colocada entre aspas simples . Se o conteúdo da string incluir aspas simples, elas serão escapadas pela duplicação . Exemplo:'I''m a string'

  2. Para inserir uma string com novas linhas, é necessário dividir a string em novas linhas e concatenar tudo (por meio de colchetes), incluindo números como códigos ASCII . Por exemplo, considere a sequência formada por meu nome e sobrenome com uma nova linha no meio. Seria inserido como ['Luis' 10 'Mendo'].

    Isso permite a inserção de outros códigos ASCII (possivelmente não imprimíveis). Portanto, a sequência no item 1 acima pode ser inserida como ['I' 39 'm ' 97 32 'string']. Veja aqui .

    A única condição é que pelo menos uma das partes entre parênteses seja uma sequência. Isso força todos os números a serem interpretados como códigos ASCII ao concatenar.

Desculpe o constrangedor boa sorte usando este formato!

Solução original

t' @ *'dm1e 5%
Mdw%Y
(

Cada %um é um símbolo de comentário e, portanto, o restante da linha é ignorado.

Os espaços não fazem nada, mas servem como separadores. Por exemplo, 1e5sem o espaço, seria interpretado como o número100000 .

t pega a entrada e a duplica.

' @ *'empurra essa string e dcalcula suas diferenças consecutivas, o que fornece [32 -32 10](o-32 é inútil).

mfornece uma matriz de linhas lógicas indicando quais caracteres são 32ou 10(ou-32 ).

1 Seguido por e remodelar como uma linha. Isso não funciona aqui.

5seguido por Mpressiona 1novamente (última entrada para a função de entrada múltipla mais recente, que ée ).

dcalcula diferentes consecutivos de 1e, portanto, dá [](matriz vazia).

wtroca e, finalmente, (atribui []a caracteres de espaço em branco, ou seja, os remove.


11
Você está mentindo! De jeito nenhum isso funciona! (+1) ...
Stewie Griffin


2
Merda ... eu não percebi que já estava rachado ... Bem, duplo rachado .
Stewie Griffin

Bom trabalho, vocês dois! :-) Não é exatamente a minha solução pretendida, mas funciona perfeitamente #
Luis Mendo

4

RProgN , 15 bytes rachados!

''`R""`R

Você pode brincar com o código aqui . Uma solução relativamente simples, espero que a natureza irritante de como o RProgN lida com seqüências de caracteres deixe isso sem falhas.

Programa Original

' ' ` R
"
" ` R

Explicação

Em primeiro lugar, a entrada é implicitamente enviada para a pilha. Pilha:<INPUT>

Em seguida, usamos '' para empurrar um espaço para a pilha. Pilha:<INPUT> " "

o `realmente tenta empurrar uma string representada por` (WORD), mas como existe um espaço em branco depois dela, ele apenas empurra uma string vazia. Pilha:<INPUT> " " ""

OR aqui é açúcar para o comando Substituir. Pilha:<INPUTWITHOUTSPACES>

Em seguida, o "NEWLINE" envia uma string contendo uma nova linha, o que é bom porque o RProgN não usa escapes, apenas permite que você envie uma string como essa. Pilha<INPUTWOSPACES> "\n"

Então, usamos o truque `novamente, e Replace, que fornece nossa saída.


Isso deveria funcionar no firefox?
Conor O'Brien

Estou executando no firefox, há algum problema? Você pode obter uma captura de tela?
ATaco


Bem, isso foi rápido. Eu quase durou meia hora!
ATaco


4

Feixe , 72 bytes, Seguro!

Agora para uma linguagem 2D. Pode ser jogado com o TIO Nexus .

s'''>`+++)+Ss`n\
 n`sS+(+++`<``/
 >rgn\
 ^ @<(\  
     H         <
 ^    /

Um programa bastante simples, sem muito para tentar enganar as pessoas.

s'''>`+++)+Ss`n\ # Sets the memory slot 0 to 0, 10 to 10 and 32 to 32. n will redirect down
 n`sS+(+++`<``/  # since memory != store. \ is a red herring and not hit.
 >rgn\           # read in from input and set store to memory value. For all characters
 ^ @<(\          # other than space, LF and end of input this will be different and n will 
     H         < # redirect down then through to the print and back to read. Space, LF and  
 ^    /          # end of input get directed to the ( which tests for 0. This will redirect 
                 # space and LF to path back to read, otherwise it will skip over and halt

11
Eu acho que vou passar o intérprete para o nó quando tenho tempo para Dennis pode adicioná-lo à TIO ...
ETHproductions

11
Criei um clone do Node do intérprete e Dennis o adicionou ao TIO !
ETHproductions

4

Labirinto , 127 bytes

);""{"".@"-;,""""":"##"*"(:"+":}-;{";;"*#{:;"#""+("-;"";;"})"";""""""""

Espero que tenha feito isso direito :) esta é minha primeira entrada de policiais e ladrões.

Código original

 ) ;""{"".@
"-;, "" ""
"  :
" ##
" *
" (:
"  +
"  :}-;{
"    ; ;
" *#{: ;
" #    "
" +("-;"
"    ; ;
"    })"
"      ;
""""""""

Sua resposta agora é segura. Você pode adicionar seu código original e uma explicação.
Laikoni

4

Java, 3241 + 28 bytes para uma grande importação de número inteiro

Esta entrada é apenas para provar a possibilidade de uma entrada puramente criptograficamente segura. Acredito que isso esteja dentro das regras, mas se for contra o espírito, entre em contato e eliminarei por justiça. Deixarei isso "inseguro" indefinidamente até o momento em que (e se) um crack for encontrado. Isso é uma monstruosidade e certamente poderia ser otimizado ainda mais, mas aqui está.

interfacer{staticvoidmain(String[]A){Strings=",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",q=",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",a="",b="";for(Stringt:s.split(",")){a+=t.length();}for(Stringt:q.split(",")){b+=t.length();}if((newBigInteger(a).multiply(newBigInteger(b)).toString()).equals("3649760552772806991406184564114682549877113954361462782925976763675666255653486225665808494957477900238166874367635068317805381406282572366371821972593595701388544127398102379288357379612333197280663769935384647844344358594407966485992727383589962048236726744715096711312156760311643104858212670342667229690568585229658813910569607411855770280546861422837629553847973043531578541545436967345783407835402474562087790816775240815912495599135241317")){System.out.println(A[0].replaceAll("","").replaceAll("\n",""));}}}

Por justiça aos ladrões, eis o espaço em branco "óbvio" adicionado.

interface r {

    static void main(String[] A) {
        String s = ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", q = ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", a = "", b = "";
        for (String t : s.split(",")) {
            a += t.length();
        }
        for (String t : q.split(",")) {
            b += t.length();
        }
        if ((new BigInteger(a).multiply(new BigInteger(b)).toString()).equals("3649760552772806991406184564114682549877113954361462782925976763675666255653486225665808494957477900238166874367635068317805381406282572366371821972593595701388544127398102379288357379612333197280663769935384647844344358594407966485992727383589962048236726744715096711312156760311643104858212670342667229690568585229658813910569607411855770280546861422837629553847973043531578541545436967345783407835402474562087790816775240815912495599135241317")) {
            System.out.println(A[0].replaceAll("", "").replaceAll("\n", ""));
        }
    }
}

Boa sorte, eu adoraria ver isso rachado. De fato, instituirei uma recompensa ilimitada sobre isso. Se a qualquer momento você quebrar isso, você será premiado com 500 repetições infinitas na troca de pilhas (além de provavelmente um maravilhoso artigo matemático).



2
Sua solução e a minha provavelmente vão andar sem eras.
Joshua

11
Para o downvoter, há algo ilegítimo nessa submissão?
Rohan Jhunjhunwala

11
Há realmente uma solução trivial para isso (que não envolve factoring um número RSA-440 equivalente), infelizmente, exige um extra ~ 10.000 bytes ...
SLuck49

11
@ SLuck49 você pode comentar comigo?
Rohan Jhunjhunwala

11
@ SLuck49 uau! Acabei de perceber o que você estava olhando! Eu quase perdi 500 reputação.
Rohan Jhunjhunwala

3

C, 140 bytes, quebrado por Riley

Vamos começar com uma pergunta fácil.

#include<stdio.h>intmain(){inta=getchar();while(a!=EOF){//\a=getchar();if(a!=10&&a!=32)//\\putchar(a^10^32);putchar(a);a=getchar();}}

(Espero estar fazendo isso direito.)


11
Rachado. Não é a solução indicada, pois tenho 1 byte a menos.
Riley

@Riley adicione uma nova linha extra no final e você ficará bem;)
Alfie Goodacre


2

V , 37 bytes Rachado por nmjcman101

OVrS200@"kIi|D@"Aüî|D@"

Como isso não pode ser impresso, aqui está a versão legível:

O<esc>Vr<C-a>S200<esc>@"kIi<C-v><C-v><esc>|D@"<esc>Aüî<esc>|D@"

Ou, se preferir, um hexdump:

00000000: 4f1b 5672 0153 3230 301b 4022 6b49 6916  O.Vr.S200.@"kIi.
00000010: 161b 7c44 4022 1b41 fcee 1b7c 4440 22    ..|D@".A...|D@"

Rachado Esse foi um quebra
nmjcman101


2

JavaScript ES6, 380 bytes, seguro

Esse é o tipo de entrada que eu estava planejando lançar inicialmente. É enorme e quase não tem chance de ganhar, mas acho que deve ser criptograficamente forte o suficiente para suportar 7 dias. Agora, posso provar que estou errado!

67 bytes de espaço em branco a serem adicionados.

s=>{for(k=`|||`.split`|`.map(s=>s.replace(/\s/g,c=>(k-=(c<'')+1,n=n<<2|k&3),k=n=0)&&n),x=10106050295,y=-4955405499,i=32,d=2654435769,t=d*i;i--;y-=(x<<4^x>>>5)+x^t+k[t>>>11&3],t-=d,x-=(y<<4^y>>>5)+y^t+k[t&3]);returns[atob(([x,y].map(n=>String.fromCharCode(n&255,n>>8&255,n>>16&255,n>>24)).join``))](/[\n]/).join``}

Solução

Esta é uma implementação do algoritmo estendido de criptografia minúscula . A chave codificada em espaço em branco de 64 bits se expande para a seguinte chave de 128 bits:

K = [0xd224de37, 0x89e34e79, 0xe34e7748, 0x939e2789]

insira a descrição da imagem aqui

Fonte: Wikipedia

Uma vez descriptografado e convertido em ASCII, o bloco de 64 bits é [x, y]lido como c3BsaXQ=, que é a representação codificada em Base64 split.


11
Comecei a forçar esse pensamento, talvez eu tenha sorte e você fez com que cada um dos 4 valores-chave tenha o mesmo comprimento (8 bits). Exceto que seriam 16 bits cada ... woops. A força bruta não vai acontecer, é hora de outra abordagem.
SLuck49

2

Vitsy , 73 bytes, seguro

Isso é absolutamente mau.

5mW3m7m7m2mD&EPamX}<m15mEnl9mZD\[4m]^P-cm(D_2-3*bmD1-dmrnu-'

Boa sorte! 13 itens de espaço em branco a serem adicionados.

Código original:

5m
W3m7m
7m
2m
D&EPamX}
<m1
5mEn
l9mZ
D
\[4m]
^P-cm(D
_2-3*
bmD1-dmrnu-
'

Experimente online!

Isso simplifica aproximadamente:

<m1
W2\[2m]Z
l\[D&EP^P-_2-3*D1-rnu-(DX}]

Por favor, não olhe para o histórico de edições, pois ainda havia um erro no meu código.
Addison Crump

Você não conhece o mal. Eu conheço o mal.
Joshua

É apenas 03:00 para mim, então vou adicionar uma explicação pela manhã.
Addison Crump #

1

C #, 159 bytes, Rachado por leite

usingSystem.Linq;s=>string.Join("",string.Join("",s.Split(@"".Replace(newstring((char)0x0D,1),"").ToCharArray())).Select(c=>c+""!=""?c+"":"").ToArray());

153 foram recolhidos para que apenas 6 bytes de espaço em branco a serem encontrados não sejam muito difíceis ...



1

reticular, 43 bytes, quebrado

ISBqv<>>$$4jE:d/v$v?c+91d/v?E;!?l$/o$

A versão no TIO está desatualizada, mas você pode obter uma cópia do github .


A versão no Nexus já estava atualizada. Eu puxei a v1 também.
Dennis

Apenas verificando, isso funciona se a entrada contiver dois feeds de linha consecutivos?
Martin Ender

@MartinEnder deveria. Depende se a entrada é canalizada ou não. Quando canalizado, deve ler todo o stdin.
Conor O'Brien

@Dennis thanks! Eu queria te perguntar no chat.
Conor O'Brien


1

Wolfram, 132

Provavelmente tem mais de uma solução (dica: Mersenne)

StringReplace[#,""->"",Limit[x/(x-1),x->Boole[PrimeQ[
212821282128228281282128228821282128212821282-1]]]]&

Solução

StringReplace[#," "->"",Limit[x/(x-1),x->Boole[PrimeQ[
2 128 2 128 2 128 2 2 8 2 8 128 2 128 2 2 8 8 2 128 2 128 2 128 2 128 2-1]]]]&

> A sua submissão será o seu código fonte com todo o espaço em branco removido
Kritixi Lithos

@KritixiLithos Foi removido
swish

E os espaços antes da segunda linha e a nova linha entre a primeira e a segunda linha?
Kritixi Lithos

Bem, você está certo, isso é apenas para facilitar a leitura ...
swish

Eu acho que você pode postar a solução agora.
CalculadoraFeline

1

Espaço em branco , 81 74 bytes

																					

Versão legível por humanos:

ttttttttttttttttttttt (21 tab characters)

Sei que esse é um desafio antigo, mas espero que alguém esteja disposto a tentar resolver isso. Tentei otimizar para o número de bytes, mas talvez seja possível diminuir algo com o mesmo número de caracteres de tabulação.


0

tcc, 850 bytes

Para evitar colar uma linha muito longa, passei por tr -d '\ n' | dobre -b -w 60.

#!/usr/bin/tcc-run#include<stdio.h>typedefunsignedcharu;um[]
={104,105,16,152,94,131,43,42,112,214,53,207,116,170,185,210
};intmain(){uS[256];uk[256];ui,j,t;intc,n=0;FILE*f;f=fopen(_
_FILE__,"r");/*cannotfail*/while(-1!=(c=fgetc(f)))if(c==''||
c==10)k[++n]=c;fclose(f);i=0;do{S[i]=i;}while(++i!=0);j=0;i=
0;do{j=j+S[i]+k[i%n];t=S[i];S[i]=S[j];S[j]=t;}while(++i!=0);
i=0;do{if(S[i]!=m[i])j=1;}while(++i<sizeof(m));if(j==1){i=0;
do{printf("%d,",(int)S[i]);}while(++i<sizeof(m));printf("\n"
);}else{while(-1!=(c=fgetc(stdin)))if(c!=''&&c!=10)fputc(c,s
tdout);}returnj;}

Link para intérprete?
Addison Crump

@VoteToClose: o apt-get install tcc fez isso por mim.
Joshua

0

SILOS , 159 bytes Seguro!

loadLinedef:lblgetagetzzzz/za=256:aX=getax=Xy=Xz=xx-10x|ifxbGOTOx:by-32y|ifycGOTOx:cprintCharX:xa+1z+1x=getaifxa:b

Deve ser bastante trivial. É a minha primeira entrada de policiais e ladrões.

Ninguém o atacou, provavelmente devido à natureza esotérica da minha própria língua. Parece uma maneira desprezível de deslizar, mas isso realmente não importa, pois os mais curtos são seguros.

loadLine
def : lbl geta get z zz
z/z
a=256
:a
X=get a
x=X
y=X
z=x
x-10
x |
if x b
GOTO x
:b
y-32
y|
if y c
GOTO x
:c
printChar X
:x
a+1
z+ 1
x=get  a
if x a
:b

Sinta-se livre para experimentá-lo online

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.