A tarefa é simples: imprima The quick brown fox jumps over the lazy dog
usando o mínimo possível de caracteres distintos no seu código-fonte.
print "The quick brown fox jumps over the lazy dog"
tem uma pontuação de 29 caracteres, pois todas as 26 letras minúsculas aparecem pelo menos uma vez, além de T maiúsculo, espaços e caracteres de aspas. Tenho certeza que você pode ser mais criativo do que isso!
Brainfuck, espaço em branco e idiomas semelhantes (a meu critério) não são permitidos. Quebras de linha contam como um caractere. O código pode durar o tempo necessário. Aceito uma solução em 21 de abril às 23:59 EST. Em caso de empate, a resposta mais curta será aceita.
code-challenge
Fraxtil
fonte
fonte
least-characters
um critério de oficiais e tag, comocode-golf
Respostas:
dc: 4 caracteres distintos (
384375363361360350 caracteres no total)Uma resposta curta (mas longe do menor possível, ainda estou trabalhando nisso) usando apenas 4 caracteres distintos e
384375363361360350 caracteres no total, espero que você ache isso totalmente auto-explicativo:A resposta anterior que é um pouco mais detalhada (contém 13916 1's):
Ah, você só precisa amar a calculadora de mesa confiável!
fonte
Código de máquina Intel de 64 bits para Linux em binário: 2 caracteres distintos
Eu me recuso a reescrevê-lo em unário.
fonte
Lua, 8 caracteres distintos
Todos os caracteres de nova linha devem ser removidos deste código para obter uma única linha de comprimento 1998.
Lua 5.2 necessária
Como o programa Lua arbitrário pode ser escrito usando apenas 8 caracteres
load"\05
Tendo chars
05\
, é possível escrever uma string literal para qualquer string que consiste em chars0257\
. De fato,"\\"
significa barra invertida"2" == "\50"
e"7" == "\55"
("\ddd"
em Lua significa char com código decimalddd
).Tendo chars
0257\
, é possível escrever uma string literal para qualquer string que consiste em chars024579\
(como"4" == "\52"
e"9" == "\57"
)Na próxima etapa, os chars
01245679\
ficarão disponíveis.É necessário mais um passo para obter todos os dígitos decimais.
Lua possui uma função
load
que trata uma string como código Lua e a converte em uma função.Por exemplo,
load("print\"Hello\"")()
imprimeHello
.Pode ser escrito sem parênteses:
load"print\"Hello\""""
(as duas últimas aspas significam uma sequência vazia, que é passada como parâmetro opcional para a função).Qualquer programa Lua pode ser convertido em alfabeto reduzido em no máximo 5 etapas.
Exemplo: Se nosso programa consistir em um dígito
9
, serão necessárias apenas duas etapas:etapa 0:
9
etapa 1:
load"\57"""
etapa 2:
load"load\"\\5\55\"\"\""""
fonte
Python, 9
Usando essa ideia . (As quebras de linha existem para facilitar a leitura e podem ser removidas.)
Isso cria a string
'print"The quick brown fox jumps over the lazy dog"'
e a executa.fonte
exec
, digamos que você executá-lo no shell python e reivindicar 7 caracteres.dc - 5 caracteres distintos (2, i, 1,0, P)
fonte
Tcl 10 caracteres diferentes.
Caracteres utilizados:
,
0
,1
,2
,3
,4
,5
,6
,7
,\
É apenas cada parte do comando codificado como \ ooo sequência. Para o Tcl, não importa se você faz coisas engraçadas no nome do comando ou nos argumentos dele; na verdade, isso
$object configure
é muito comum no Tcl / Tk.Com esta técnica,
eval
você pode escrever todos os programas em Tcl com 10 bytes diferentes :)Programa de teste:
fonte
\uXXXX
18 bytes diferentes.GolfScript (4 caracteres distintos, total de 441 caracteres)
Caracteres usados:
]1(+
Explicação: no GolfScript, adicionar uma sequência a uma matriz de números inteiros converte a matriz em uma sequência com os inteiros como pontos de código e concatena as duas sequências. Se nada for fornecido no stdin, a pilha começará com uma sequência vazia. Portanto, podemos construir uma matriz de números inteiros com os pontos de código corretos e concatenar com a sequência vazia.
Precisamos
+
da concatenação,]
no mínimo, para criar a matriz (e[
para impedir que a cadeia vazia seja incluída nela ou alguma forma de extraí-la posteriormente) e alguma maneira de separar os números inteiros. Então, eu uso o operador de decremento(
para separar os números inteiros, o que requer algumas adições extras para compensar em alguns casos, mas fornece uma maneira rápida de obter, por exemplo, 110; e esse operador também é o operador para extrair o primeiro elemento de uma matriz, portanto, ele serve para recuperar a cadeia vazia para concatenação.fonte
Ruby: 7 caracteres distintos
(Com agradecimentos a randomra por seu comentário .)
Exemplo de execução:
Contando:
fonte
Java: 18 caracteres distintos
Um programa Java pode ser escrito em notação UNC ... Mas permanece detalhado!
fonte
J, 6 caracteres distintos
6 versão de caractere distinto (
u:10 +
) usando alguma idéia usada por flornquake . O método está adicionando vetores de0
1
11
e111
juntos para adicionar o84 104 101 32 113 117 ...
vetor desejado :Edit :
1+:1
é0
então talvez exista uma solução de 5 caracteres aqui ... (Também+:
pode ser usado o dobro para reduzir a solução.)Versão distinta de 13 caracteres:
Melhoria do usuário anônimo (DirkL): solução mais curta, mas ainda usando 6 caracteres (
u:23 |
), é possível. Usando|
como operador de resíduo para decimais, por exemplo223 | 2333333 = 84
.fonte
Befunge-98, 3 caracteres distintos
Usando este intérprete Befunge-98. No começo, entrei na competição de 4 caracteres com um
@
no final para terminar. Este programa é exibido repetidamenteThe quick brown fox jumps over the lazy dog\r
, onde a terminação\r
exclui a frase anterior. Portanto, a frase é escrita uma vez.Befunge-98, 4 caracteres distintos (1047 caracteres no total)
A versão menos barata. Este termina normalmente.
fonte
JavaScript (no Console do Chrome) 17
Eu tive a mesma ideia que um terremoto, mas ele também me venceu. Então eu fui para a maneira feia de fazer isso!
fonte
constructor+[]
é diferente do que eu recebo. Diferentes versões do Chrome, eu assumo. Disse que era feiaC, 15 caracteres distintos
Alguma inspiração da resposta de Fors (que eu venci por um personagem) e o comentário de ecatmur a essa resposta.
Espaços e novas linhas são apenas para maior clareza e não são contados.
Como funciona?
1. Cada grupo de 3 caracteres é representado em um número. Um ponteiro para esse número, tratado como um ponteiro de caractere, é um ponteiro para uma sequência desses 3 caracteres, além de um nulo final. Assume little-endian.
2. A função
a
ajuda a obter o endereço de um número literal, sem definir uma variável.fonte
{}
uma das linhas, o que a tornava sensível aoa
valor de retorno.vba (
168 caracteres distintos)(usando idéias de matatwork e AutomatedChaos)
observe que, se você quiser colocar isso, precisará dividir a linha em 2, pois é muito longo para o editor do VBA
fonte
Chr()
? Parece funcionar bem sem:?Chr(&0124);Chr(&0150);Chr(&0145);…
.?chr(1+)
, será algo como?chr(11+11+11+11+11+11+11+1+1+1+1+1+1+1)+chr(11+11+11+11+11+11+11+11+11+1+1+1+1+1)+ .... etc.
?Chr(&0124)Chr(&0150)Chr(&0145)…
.C: 16 caracteres distintos
fonte
if(putchar(...)+putchar(...)){}
remove;
mas adicionaf
(mas depende da ordem de avaliação não especificada).if(putchar(...)){}if(putchar(...)){}
etc.if(putchar(...))if(putchar(...)){}
ouif(putchar(putchar(...)+...){}
, mas ainda assim, essa abordagem não salva um personagem.Postscript (19 caracteres distintos)
Usa os dígitos hexadecimais 0-9, af, delimitadores de cadeia hexadecimal <> e = para imprimir.
(13 caracteres distintos)
Os números binários de radix obtêm os dados em 4 caracteres (0,1,2, #), mas precisam de uma string vazia () e de algumas letras (put, dup (-up), print (-pt)) para inserir o número binário lá.
fonte
APL 8
O comando a seguir converte uma cadeia de caracteres em seu equivalente binário:
Se atribuirmos o binário resultante ao vetor s para evitar a exibição de todos os zeros e zeros, podemos imprimir o resultado revertendo o processo aplicando:
Portanto, os 8 caracteres únicos são 8,2, ⎕, d, r, espaço e os 0 e 1 nos vetores binários s.
fonte
k
12 caracteres distintos
Os personagens são
10h$2/:'(b;)
fonte
PHP. 10 caracteres distintos.
e, c, h, o, r, (, 1, +, ), ;
(As quebras de linha podem ser removidas.)fonte
echo(chr(1+1+1+...));
, então você volta para 10 caracteres novamente.Bash:
1816 caracteres distintosExemplo de execução:
Contando:
fonte
cat
é apenas uma solução de 3 caracteres. O problema é que você precisa"The quick brown fox jumps over the lazy dog"
entrar nele.K, 9
1 @ 0 h $ (+;)
fonte
Perl, 10 caracteres
Basicamente, um roubo da solução Python do flornquake.
Usar a substituição com
ee
é uma maneira mais barata de obtereval
. Infelizmente, o Perl usa.
para concatenação, que adiciona um personagem.Eu esperava eliminar parênteses (que são opcionais para funções em Perl), usando uma sintaxe como esta:
(Sim,
s
é um delimitador de regex válido). No entanto, não consegui fazer isso funcionar porque a precedência de.
é muito alta, tentando concatenar antes de chamar a função.fonte
Erlang 8 caracteres distintos
Caracteres usados:
012#<>:.
fonte
C (23 caracteres distintos)
Nota: Não incluí novas linhas na contagem de caracteres distintos, mas elas podem ser facilmente removidas, se necessário, à custa da legibilidade.
fonte