Edit: Haverá um bônus de -20 para mascaramento aleatório
Olá colegas denunciantes e portadores de conhecimento secreto.
Devo-me a uma entrevista por correio e, é claro, não posso dizer nomes específicos em toda a extensão. Mas, como quero divulgá-lo de uma maneira não tão óbvia, preciso de sua ajuda.
Fornecerei esses nomes na forma de
"evil_company_that_makes_me_shiver"
mas certamente não quero explicá-lo completamente. Sua tarefa para me ajudar e ao mundo inteiro é que você forneça um bom programa que transforme o que foi dito acima em
"ev**************************"
ou
"**il************************"
ou mesmo
"****_c**********************"
Eu acho que você entendeu. Mas há uma falha: quero divulgar o nome no total, por isso preciso passar o número de ocorrências e a palavra em si para o script, revelando as letras pouco a pouco. Um exemplo pode ser
~$ ./whistle NSA 3
> "N**"
> "**A"
> "*S*"
ou
~$ ./whistle nuclear 3
> "nu*****"
> "***lea*"
> "**c***r"
ou
~$ ./whistle nuclear 2
> "nuc****"
> "***lear"
Espero que você possa me ajudar e, como sabemos que esse tamanho importa, o menor código vence. Ajude a tornar este mundo um lugar melhor!
Respostas:
GolfScript, 26 caracteres
Como nenhuma forma específica de divulgação foi especificada, decidi ir pelo mais curto possível:
Você pode experimentar esse código online .
Exemplo:
Código comentado:
fonte
PHP - 80 bytes
Uso da amostra:
fonte
Python (
157149139138-20 = 118):Pitão de queijo (
5535):Você não me disse a distribuição necessária;)
Pitão uniforme (
129123122):Resultado:
dá
fonte
g=lambda a,b:[a]+["*"*len(a)]*(b-1)
. : Pdisclose the letters bit by bit
também pode significarfirst, disclose the first bit (that just happens to be the entire thing), repeat until the b is met
. Isso também pode acontecer para a primeira resposta, então apenas afirme que você usou essa, e que aconteceu muito bem para produzir esse resultado. (Acabei de perceber que você também pode escrevê-lo como["*"*len(a)]*(b-1)+[a]
, para começar a divulgar bits que contêm 0 bytes de informações reais e, na última linha, você divulga outro bit.) No entanto, percebo que isso está se estendendo ao máximo.Bash, 80 bytes
Em ação:
fonte
C #, 226
Isso pode ser reduzido se você substituir o material aleatório por uma distribuição mais simples (pense no módulo), mas a aleatoriedade é o que me interessou. =)
Enfim, colocando tudo em apenas uma linha, recebo 226 caracteres. No código legível, fica assim:
Saída de amostra:
fonte
i
você provavelmente pode acabar com***/test
.Perl, 24
Requer a
-p
opção, que responde por dois dos bytes. Lê de STDIN.Como funciona
Por causa dessa
-p
opção, o Perl lê a primeira mentira de entrada e armazena seu conteúdo$_
.O comando
$_ x=<>;
duplica a primeira linha de entrada o número de vezes que a segunda linha de entrada (<>
) especifica.O comando
s/(.|\n)./\1*/g;
consome dois caracteres e substitui o segundo (que não pode ser uma nova linha) por um asterisco. Faz isso até consumir todo o conteúdo de$_
.Como as novas linhas contam como o primeiro caractere, isso ofuscará todos os caracteres pares na primeira linha e todos os caracteres ímpares nas linhas restantes.
Por causa da
-p
opção, Perl imprime o conteúdo de$_
.Exemplo de entrada
Saída de exemplo
fonte
could
permite através :-)Since newlines count as the first character, this will obfuscate all even characters on the first line and all odd characters on the remaining lines.
Soa como ele irá falhar paracodegolf\n1
Java - 490
Sim, não é realmente um jogador de golfe ou algo assim. Oh bem, aqui está:
Em um formato agradável e legível:
Uso de amostra (quando executado a partir da classe compilada)
fonte
import java.util.*
também,ArrayList<String> = new ArrayList<>();
vai funcionar. Você também pode remover muitos espaços. E na maioria das vezes, você pode usar emList
vez deArrayList
.Python 3-187 (-20 = 167)
Levei um tempo para escrever, provavelmente poderia ser mais jogado.
Uso da amostra:
Em função - 161 (-20 = 141)
fonte
sys.argv
na tarefa e inicializex
comox=['']*int(b[2])
(comb[2]
substituído por qualquer que seja o nome da variável que você usa na descompactação).C # 184
Não-golfe
Amostra:
fonte
Perl 6 (77 bytes)
Isso pode ser considerado trapaça, mas resolve o problema (não imprime completamente a string).
E a saída da amostra.
fonte
JavaScript - 170
Uma rápida, quebra se você fornecer um nome e pedir mais peças do que personagens, mas vai até esse ponto e até 1. Poderia jogar mais, presumo, por isso, pode revisar ou seguir conselhos, pois é uma bagunça.
Edit: Golfe mais (de 187) com remoção de suportes (@Synthetica) e substituição de Math.floor de @toothbrush. Para a mudança de loop, conforme sugerido, resulta em erros na saída.
fonte
function s(d,a){o="";b=d.length;x=Math.floor(b/a);y=b-x*a;for(c=1;c<=a;c++)r="*",o+=Array((c-1)*x+1).join(r)+d.substr(c*x-x,c==a?x+y:x)+Array(c<a?b-c*x+1:0).join(r)+"\n";return o};
encerramento-compiler.appspot.com/home foi capaz de raspar 8 caracteres;)breaks if you supply a name and ask for more pieces than characters
x=b/e|0
vez dex=Math.floor(b/e)
. Além disso,for(c=1;c<=e;c++)
pode ser reduzido parafor(c=1;c++<=e;)
.R, (120-20) = 100 bytes (2 soluções diferentes do mesmo comprimento)
Além da concisão, o R com certeza apresenta o melhor gerador de números aleatórios! :) Aqui a primeira solução de comprimento 120:
Se a função for nomeada como f , a saída será semelhante a:
E aqui a segunda solução, novamente com mascaramento aleatório e novamente com 120 bytes de comprimento:
fonte
Scala (1) 177 bytes
Depois que a solução no RI também encontrou uma em Scala, aqui está:
Scala (2) 129 bytes
Após uma breve pesquisa, encontrei o método zipWithIndex . Maravilhoso :)
Aqui a solução:
fonte
Javascript - 166
Usando regex.
Amostra
fonte
k [50-20 = 30 caracteres]
Explicação
Exemplo
Resultado
fonte
JavaScript - 139-20 = 119
Uso e saída da amostra:
Como o mascaramento é aleatório, a saída também pode ser assim:
fonte
Julia 56-20 = 36 (funciona frequentemente)
Tentando buscar uma solução aleatória mais curta, decidi sacrificar o funcionamento garantido por uma solução mais curta. Realmente não é uma solução muito boa.
fonte
F # -
818075Isso é bastante semelhante aos outros que foram oferecidos:
Amostra:
Como um aplicativo completo e independente, ele possui
160155156 caracteres:fonte