Suponha que um desafio do codegolf não conte com espaço em branco na duração do seu programa. Engane esse sistema codificando seu script em espaço em branco e jogue um script que decodifique e execute o espaço em branco incorporado.
Exemplo
Minha solução para o Meta Golf Challenge do JBernardo foi codificar o código Sage (ou Python) no espaço em branco e aplicar o golfe no decodificador.
s = ' '
for c in '<lots of whitespace>'.split(s):
s+=chr(len(c))
exec s
A codificação é pegar um script, acrescentar uma nova linha e, para cada caractere c
do script, ord(c)
guias de saída seguidas por um espaço. A adição de uma nova linha é necessária, pois estou usando Python e inicio o script s
com um espaço.
Pontuação
Uma solução completa contém uma descrição da codificação usada (se for complicada, forneça um script) e um script 'decodificar e executar'. Sua pontuação é o número de caracteres que não são espaços em branco no script decodificar e executar.
Espaço em branco (o idioma) é proibido
Além disso, qualquer idioma que tenha um conjunto completo de operadores que use apenas caracteres de espaço em branco não é permitido: aceitarei a menor pontuação que não seja zero.
fonte
.n/{,}%+~
também funcionaria.CPAN, 16
CPAN tem tudo isso. Ou pelo menos, apenas o módulo certo.
fonte
Perl, 29
Dentro dessa
s///
aba há um espaço. A codificação é uma codificação ultra básica com espaços, precedida por tabulações.Tente este na linha de comando:
Edit: bem, lol, não consigo encontrar uma maneira apropriada de copiar e colar a guia / espaço mix. Acredite, funciona em casa :)Atualização: lá, ali, codificado comtr
fonte
\t
e nós acreditamos que trabalha com espaços em branco ...\t
interpretar o shell e fazer com que a maldita coisa funcione comprovadamente. Fazendo isso em algumas horas.Javascript
Substitua
\t
por uma guia para obter a contagem de caracteres publicados.Padrão (64 caracteres)
Função de seta (49 caracteres)
Programa codificador para ambos
fonte
(s)=>...
na função de seta paras=>...
salvar dois bytes" t " [ 1 ]
para significar "t")eval("".replace(/ +/g,s=>' []+!()'[s.length]))
Yabasic (88 caracteres)
Use o mesmo programa de codificador da solução C, mas não remova o primeiro caractere. Seu código original deve estar na forma de uma sub-rotina
a()
, por exemplo:fonte
C (99 caracteres)
Testado apenas com (e talvez só funcione com) GCC.
Programa de codificador correspondente (remova manualmente o primeiro caractere de sua saída):
fonte
D (101 caracteres)
mesma codificação da pergunta (não é necessária a nova linha)
fonte
Bash (somente interno, 44 caracteres)
Script do codificador correspondente:
fonte
man
.K5, 12 bytes
Execute (
.
) a string formada a partir dos valores ascii (`c$
) dados pela diferença entre cada par (-':
) dos índices em que (&
) a entrada é uma guia (9=" "
).Entrada é uma sequência de caracteres de tabulação e não tabulação, e os valores dos caracteres são codificados no número de não tabulações (espaços ou linhas de linha) entre cada tabulação. Um codificador de exemplo:
Execute uma junção em execução começando com um espaço sobre (
" ",/
) x espaços (x#" "
) unidos a uma guia (,"\t"
) em que X é cada um de ({...}'
) um menos os valores de caracteres da sequência de entrada (-1+
).Em ação:
fonte
Ruby, 43
Muito simples, a codificação está colocando x espaços por linha, onde x é o valor ascii do caractere, a decodificação é inversa.
O script a seguir é apenas um conversor unário ao ASCII e funciona mesmo quando outras coisas além de espaços são livres:
Apenas substitua a string vazia pelo programa que mais lhe agrada.
A coisa em um formato mais reutilizável:
fonte