Dicas para jogar golfe em ///


12

Que dicas gerais você tem para jogar golfe no /// ? Estou procurando idéias que possam ser aplicadas a problemas de código-golfe e que também sejam pelo menos um pouco específicas para /// (por exemplo, "remover espaço em branco desnecessário" não é uma resposta). As dicas para itflabtijtslwi e Lines também são válidas aqui.

Poste uma dica por resposta.

Respostas:


5

Use //como um substituto

Quando você define várias substituições, por exemplo:

/a/b//c/d//e/f//g/h//i/j//k/l//m/n//o/p//q/r//s/t//u/v//w/x//y/z/

(65 bytes). Você pode usar //como um substituto:

/~/\/\///a/b~c/d~e/f~g/h~i/j~k/l~m/n~o/p~q/r~s/t~u/v~w/x~y/z/

(61 bytes).


4

Blocos incompletos /// não são impressos

Observe que esta linha de código

/Stack/Overflow//x/\//Stack/ignore/DoItyignore

imprime apenas Overflow- a parte em /ignorediante não é incluída na saída, porque ///apenas imprime itens em sua terceira barra.

Experimente o bloco incompleto online!

No entanto, ainda é considerado pelo substituto: se injetarmos uma barra, as coisas mudam:

/Stack/Overflow//x/\//Stack/ignore/doitxignore

Experimente isso online!

A saída aqui é Overflowdoit, porque substituir xpor /tornou a sintaxe válida.


4

Ao expandir e imprimir resultados intermediários, incorpore iterações anteriores nas futuras

Isso soou um pouco complicado. O que quero dizer pode ser melhor descrito usando uma resposta real. Este desafio requer esta saída específica:

Steve Ballmer still does not know.
Steve Ballmer still does not know what he did.
Steve Ballmer still does not know what he did wrong.
Steve Ballmer still does not know what he did wrong with mobile.

Uma solução ingênua pode ser:

/1/Steve Ballmer still does not know//2/ what he did//3/ wrong//4/ with mobile./1.
12.
123.
1234

Observe como o padrão 1, 12, 123... se repete? Bem, não quando você faz isso:

/1/Steve Ballmer still does not know//2/1 what he did//3/2 wrong//4/3 with mobile/1.
2.
3.
4.

Mais uma vez, obrigado a Martin Ender por apontar isso!


2

Use um caractere no final do código para lidar com casos extremos

Quando você tem um pedaço de ///código que lida com todos os casos, exceto um, é possível usar um caractere na borda do código para lidar com o caso de borda.

Exemplo: Unário adicione dois números juntos, a menos que o segundo número seja 7; nesse caso, basta gerar o primeiro número.

Código que lida com todos, exceto o caso "segundo número é 7":

/+//<INPUT 1>+<INPUT 2>

Ao adicionar um *ao final do código, podemos lidar com o caso de borda substituindo +0000000*por nada (é necessário incluir o +para garantir que o número não seja maior que 7). Certifique-se de incluir o código no final antes da entrada para limpá-lo.

/+0000000*///+///*//<INPUT 1>+<INPUT 2>*

Experimente online!

Para um exemplo do "mundo real", usei esse truque em alguns dos problemas do "Jimmy":

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.