Escreva um programa o mais curto possível (medido pela contagem de bytes), não receba entrada, não contenha comentários e produz uma sequência / sequência de caracteres, de forma que o programa + saída concatenado tenha exatamente 95 caracteres e contenha todos os caracteres ASCII imprimíveis exatamente uma vez , ou seja, programa + saída é uma permutação dos 95 caracteres com códigos ASCII 32-126:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Em caso de empate, o vencedor é a entrada cujo programa + saída concatenado (95 caracteres) é o mais próximo da sequência acima, conforme medido pela distância de edição de Levenshtein (ou seja, o número de exclusões, inserções ou exclusões de caracteres únicos) substituições necessárias para colocá-lo em ordem ASCII).
echo $0
é desqualificado.Respostas:
GolfScript, 14 caracteres
Saída :
fonte
),
- Uau. Eu amo isso.Perl, 89 caracteres
Este é o melhor que pude fazer até agora:
Para aqueles que não conhecem o Perl minutae, os dois argumentos para a
print
declaração podem ser apresentados como~(-($=)) . (73 * 2)
etr///
.O programa gera 6 caracteres:
Infelizmente cada construção iteração única que eu posso pensar em Perl (
for
,while
,until
,map
,grep
) de ações pelo menos um personagem comprint
. Se novas linhas tiverem permissão para aparecer na saída, eu poderia usar o Perl 5.010 para obter uma solução de 87 caracteres:fonte
$=
é o número de linhas horizontais no dispositivo de saída atual. Por padrão, 60.~-$=
é a inversão bit a bit do complemento dos dois negativo de 60, o que acontece59
.73*2
é 146..
e,
faça o que você esperaria deles.y[]{}
é outra maneira de dizertr///
, que é o operador transliterado. Não é preciso$_
e não faz nada, porque você não forneceu nenhum caractere para substituir. Retorna o número de caracteres substituídos, o que é0
. Portanto, temos~-$= . 73*2 , y[]{}
=59 . 146 , 0
= '591460`.PHP 67 bytes
Resultado:
Parece que deveria haver uma solução de 65 bytes, produzindo 30 caracteres em vez de apenas 28, mas não consegui alinhar. Os 6 caracteres não utilizados
OSXouz
foram pregados em uma das literais de sequência.Editar: Após uma reflexão mais aprofundada, não é possível gerar mais de 28 caracteres dessa maneira.
UPPER ^ lower
sempre resultará em um caractere entre 32 e 63, portanto, todos os 10 dígitos são necessários@[\]_`{|}~
. Quatro dos 22 restantes são usados no próprio script, deixando apenas 18 que podem ser obtidos apenas com letras. O desempate pode ser melhorado significativamente, no entanto.fonte
Ruby, 91 caracteres
Saídas
6273
.%{...}
truque roubado de Jan Dvorakfonte
%{ !"#$&\',-/450:<=>ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcefghijklmnqvwxyz|~};puts([email protected]*98+1)
é o que eu acho que você deseja (para 91 caracteres) com o ponto-e-vírgula movido para ser usado como um separador imprimível (em vez de uma nova linha) e com as letras de 'ord' removidas de dentro dos colchetes.Perl, 61 caracteres
Resultado:
$:
o padrão é" \n-"
.x8
repete oito vezes; o resultado de 24 caracteres é então armazenado bit a bit com uma restrição de 23 caracteres (o último-
é deixado como está). A segunda parte é uma string q de 12 caracteres bit a bit e uma restrição de 10 caracteres (os últimos 2 caracteres são descartados).fonte
Ruby, 95 caracteres, 6 edições
Sim. É isso aí. Apenas um literal de cadeia flutuante livre que nunca é impresso. Ruby suporta literais de seqüência de caracteres (emprestados de Perl, eu acho) na forma de delimitador de porcentagem - o delimitador é qualquer caractere não alfanumérico e, se o delimitador de abertura for um colchete de abertura (qualquer um
[({<
), o delimitador de fechamento será o correspondente colchete de fechamento (colchetes aninhados são permitidos).Sei que isso é mais um envio de linha de base, mas, a menos que alguém consiga realmente imprimir algo ou a menos que exista um idioma com uma string de forma livre de dois caracteres literal com um delimitador de abertura e fechamento diferente , é o melhor que existe.
fonte
Tcl 96, distância de edição 12
fonte
join {!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghklmpqrstuvwxyz|~}
parece funcionar com 95 caracteres? (Obrigado por sua entrada Desculpe o camaleão -. Infelizmente eu editado às pressas, e deve ter feito as coisas de forma diferente.)