A raposa mais rápida do Oriente


15

No espírito do Olá mundo! sem repetição

Escreva um programa que imprima a sequência "a raposa marrom rápida salta sobre o cachorro preguiçoso" com nova linha opcional. O programa inteiro não deve repetir nenhum caractere.

Note que a string a ser impresso faz caracteres de repetição, assim você terá de contornar essa limitação de alguma forma.

Observe que a condição vencedora é , ou seja, a resposta mais votada vence.

Atualização: para facilitar um pouco, a repetição é permitida, mas você deve tentar minimizá-la. Os programas com menos (ou nenhuma) repetição têm prioridade sobre os programas com alguma repetição.


Receio que isso seja provavelmente muito difícil, se não totalmente impossível. Hello world!sem repetições era difícil o suficiente para que as pessoas tivessem que recorrer a idiomas muito específicos ou não pudessem resolver a tarefa completamente, e essa é consideravelmente mais difícil ainda.
FireFly

3
Bem, com certeza é impossível em C. Você não pode chamar funções ou usar macros.
Oberon

Eu recomendo: imprima a sequência especificada com o menor número possível de caracteres repetidos .
Primo

@FireFly não demorou muito para ter respostas :)
SirDarius

3
@tmartin Não, não é. A questão vinculada favorece a repetição, enquanto a presente pergunta a penaliza.
gerrit

Respostas:


32

Microsoft Word de 97 a 2003 (e algumas versões do Mac Word) - 10 caracteres

Sem repetições, mas não corresponde às especificações - 10 caracteres:

=rand(2,1)

Resultado:

The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog.

Corresponde às especificações, exceto letras maiúsculas e pontuação, uma repetição - 10 caracteres:

=rand(1,1)

Resultado:

The quick brown fox jumps over the lazy dog.

As versões mais recentes do Microsoft Word usam =rand.old(1,1)duplicatas de1 .

Pode haver uma maneira de usar um campo {=SUM(3,-2)} como entrada para rand (), mas minha instalação está tendo problemas com campos - ou seja, eles não estão funcionando ...

"Bob" confirmou que {=SUM(3,-2)}(com alguma dificuldade) pode ser usado para substituir o primeiro 1, mas =é repetido ...

=rand({=SUM(3,-2)},1)

Desde que você obtenha o Word para atualizar SUMprimeiro, a saída é:

The quick brown fox jumps over the lazy dog.

Não sei se a sintaxe fornecida está correta, mas não tenho nenhum sistema antigo para testá-la. Para versões mais recentes, porém, deveria ser =rand.old(1,1). Suponho que você esteja tentando usar o 3-2 para substituir o primeiro 1, mas não parece estar funcionando para mim em 2010 com rand.old ou rand.
Iszi

Também não tenho um sistema aqui, vou verificar quando chego em casa. Pode ser necessário usar chaves { ... }como delimitadores, mas tenho certeza de que expressões podem ser usadas em qualquer função. Se não, eu vou revisar!

2
Posso confirmar os {=SUM(3,-2)}trabalhos no Word 2007. Mas o método é um pouco complicado. Primeiro, você deve inserir um código de campo (Ctrl + F9). Em seguida, clique com o botão direito do mouse => editar campo => fórmula => avançado => digite a fórmula. Porque digitar diretamente não funciona por qualquer motivo. Agora clique no campo e avalie com Shift + F9. E adicione o=rand.old()
Bob

É necessário usar =SUM, ou poderia simplesmente usar operadores aritméticos diretamente, como 3-2?
supercat

@supercat - Tentamos isso e, por alguma razão, o Word não aceita expressões como parâmetros de =rand(), por exemplo, =rand(3-2,1)seria perfeito. Na verdade, eu não tentei =rand({=3-2},1), mas deve funcionar da mesma maneira, com duplicação de =.

17

Sclipting - 36 caracteres

덆둥긇굵늖꽫긆깲닷덮긂롦닲롸껂걪덖륰댲걯덦넬댢건늆넠닆굺뎒걤닶댬首坼

(espera entrada vazia)

Explicação:

Push the string "the quick brown ,fo,x, jumps ove,r the lazy dog,"
덆둥긇굵늖꽫긆깲닷덮긂롦닲롸껂걪덖륰댲걯덦넬댢건늆넠닆굺뎒걤닶댬
Retrieve last character from the string (",")
首
Regular expression string-split
坼

O resultado é a lista ["the quick brown ", "fo", "x", " jumps ove", "r the lazy dog", ""], que é concatenada automaticamente em uma única sequência de caracteres para saída.


1
Conto 105 bytes, para não mencionar várias repetições. O caractere 235 , por exemplo, é usado 20 vezes.
Primo

11
"Não deve repetir nenhum caractere ", não "não deve repetir nenhum bytes".
Plutor

3
Não estou surpreso Timwi, seu próprio idioma é perfeito para desafios de "sem personagens repetidos".
Pierre Arlaud

13

Perl 6 (76 caracteres, sem dobra)

O script (será mutilado pelo software da placa, mas há En Space até Thin Space e NL e LF e tab)

say EVAL    lc q{<the Quiţk Brown fïX jUmpS ůvťɲ Tɨå ìšzY dOg>~&(127.CHR
x
43)}
  • Ele usa EVAL (obrigado novamente por torná-lo em maiúsculas) e <foo bar> cita palavras que suportam todos os caracteres especiais de espaço como separadores de palavras.
  • say se junta à lista de strings usando espaço, funciona bem aqui :)
  • Em seguida, uso ~&127 e shuffle para ascii simples. Complicação extra: 'Ŭ'.lctorna - se 'ŭ'assim que se torna um em svez do que reu precisava. Adicionar 128 algumas horas extras ajuda :)

Uma versão com barra invertida escapa em vez de caracteres unicode para mostrar que são todos diferentes

say\x[3000]EVAL\x[9]lc q{<the\x[2003]Qui\x[163]k\x[2004]Brown\x[2005]f\x[EF]X\x[2006]jUmpS\x[2007]\x[16F]v\x[165]\x[272]\x[2008]T\x[268]\x[E5]\x[2009]\x[EC]\x[161]zY\x[200A]dOg>~&(127.CHR\x[0A]x\x[0D]43)}

Se você deseja verificar se todos são exclusivos, use este script (eu costumava Qb"string"ter citações básicas com apenas escapes de barra invertida)

.say for 
Qb"say\x[3000]EVAL\x[9]lc q{<the\x[2003]Qui\x[163]k\x[2004]Brown\x[2005]f\x[EF]X\x[2006]jUmpS\x[2007]\x[16F]v\x[165]\x[272]\x[2008]T\x[268]\x[E5]\x[2009]\x[EC]\x[161]zY\x[200A]dOg>~&(127.CHR\x[0A]x\x[0D]43)}"
.comb.Bag.grep(*.value > 1).map: {.key.ord.base(16) ~ " $_"  }

Ou execute-o diretamente usando

EVAL Qb"say\x[3000]EVAL\x[9]lc q{<the\x[2003]Qui\x[163]k\x[2004]Brown\x[2005]f\x[EF]X\x[2006]jUmpS\x[2007]\x[16F]v\x[165]\x[272]\x[2008]T\x[268]\x[E5]\x[2009]\x[EC]\x[161]zY\x[200A]dOg>~&(127.CHR\x[0A]x\x[0D]43)}"

10

PHP - 67 bytes

<?echo$g^¶¥€¼½ˆ•.${~˜}=ÂÍåœÌýü¡¦Åþ¾’‹Ï†£‘ƲáºëÓâæݗߙ󖎸·³ø‰ï®ÜØÔ;

Copie e cole, salve como Latin-1 (Ansi).

Esta é uma xor-cifra de 7 bytes, usando a string ¶¥€¼½ˆ•para salt.

Um caractere repetido: $.


Você pode encurtar outros 3 caracteres usando, <?=já que você já está usando tags curtas
Kristoffer Sall-Storgaard

Ah, desculpe, só notei que você já usa =
Kristoffer Sall-Storgaard

@KristofferSHansen Eu acho que deveria ser possível usar eval('Return$g=binary;')de alguma forma enigmática (talvez inversão de bits) para evitar a $repetição, e então =isso seria liberado também.
Primo

A tag de abertura não deve ser incluída na contagem de bytes.
TecBrat

@TecBrat A final ;pode ser substituída pela tag de fechamento: isso também não deve ser contado? Em resumo, eu discordo. Se o seu código não for executado como está, não é um programa completo.
Primo

0

Haskell, 71 caracteres

map(\c->chr$mod(ord c)128)"tŨeఠquiţkĠbŲɯwnȠfѯxРjѵŭŰsܠůvťѲठѴѨѥਠlšzyଠɤկg"

Mais uma solução de módulo de 7 bits.

Caracteres repetidos:

c 3
d 2
m 2
o 2
r 2
( 2
) 2
" 2

Primeira vez jogando golfe com Haskell; qualquer pessoa mais experiente no idioma, fique à vontade para melhorar. Eu queria tornar a função anônima livre de pontos para evitar ter que mencionar uma variável duas vezes, mas não sei se seria um benefício líquido.


0

JS, 35

btoa("¶ªº'$nº0ú1驲ޮØ^¬òv")

(sim ... as aspas duplas são repetidas. e a saída é ruim. Ainda não é uma resposta séria.)


-2

Script de lote: 7 bytes

echo %1

Se o script for chamado hello.bat, digite-o na linha de comando:

hello.bat "The quick brown fox jumps over the lazy dog"

Isto é, isto é tão ... insensível a maiúsculas! (Quero dizer, ele não imprime exatamente o que a pergunta pede.)
Sr. Lister

6
Ao digitar isso na linha de comando, você está repetindo caracteres.
gerrit
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.