La volpe più veloce in Oriente


15

Nello spirito di Hello world! senza ripetizione

Scrivi un programma che stampa la stringa "la rapida volpe marrone salta sul cane pigro" con la nuova riga opzionale. L'intero programma non deve ripetere alcun carattere.

Si noti che la stringa da stampare ha caratteri di ripetizione, in modo da avere per aggirare questa limitazione in qualche modo.

Nota che la condizione vincente è il , ovvero la risposta più votata vince.

Aggiornamento: per renderlo un po 'più semplice, è consentita la ripetizione, ma è necessario tentare di minimizzarla. I programmi con meno (o nessuna) ripetizione hanno la precedenza sui programmi con qualche ripetizione.


Temo che questo sia probabilmente troppo difficile, se non addirittura impossibile. Hello world!senza ripetizioni era abbastanza difficile che le persone dovessero ricorrere a lingue molto di nicchia o non potevano assolutamente risolvere completamente il compito, e questo è notevolmente più difficile.
FireFly

3
Bene, sicuramente è impossibile in C. Non puoi chiamare funzioni o usare macro.
Oberon,

Consiglio: stampa la stringa data con il minor numero di caratteri ripetuti possibile .
primo

@FireFly non ha impiegato molto a rispondere :)
SirDarius,

3
@tmartin No, non lo è. La domanda collegata favorisce la ripetizione mentre la presente domanda la penalizza.
Gerrit,

Risposte:


32

Microsoft Word dal 97 al 2003 (e alcune versioni di Mac Word) - 10 caratteri

Nessuna ripetizione, ma non corrisponde esattamente alle specifiche - 10 caratteri:

=rand(2,1)

Produzione:

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

Corrisponde a specifiche diverse da lettere maiuscole e punteggiatura, una ripetizione - 10 caratteri:

=rand(1,1)

Produzione:

The quick brown fox jumps over the lazy dog.

Le versioni più recenti di Microsoft Word utilizzano i =rand.old(1,1)duplicati de1 .

Potrebbe esserci un modo per utilizzare un campo {=SUM(3,-2)} come input per rand () ma la mia installazione sta avendo problemi con i campi - vale a dire, non funzionano ...

"Bob" ha confermato che {=SUM(3,-2)}(con qualche difficoltà) può essere usato per sostituire il primo 1, ma =si ripete ...

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

Se si ottiene Word per aggiornare SUMprima, l'output è:

The quick brown fox jumps over the lazy dog.

Non sono sicuro che la sintassi data sia corretta, ma non ho sistemi così vecchi su cui testarla. Per le versioni più recenti, dovrebbe essere =rand.old(1,1). Suppongo che stai cercando di usare il 3-2 per sostituire il primo 1, ma non sembra funzionare nel 2010 con rand.old o rand.
Iszi,

Non ho nemmeno un sistema qui, controllerò quando torno a casa. Potrebbe essere necessario utilizzare le parentesi graffe { ... }come delimitatori, ma sono abbastanza sicuro che le espressioni possano essere utilizzate in qualsiasi funzione. In caso contrario, rivedrò!

2
Posso confermare i {=SUM(3,-2)}lavori in Word 2007. Ma il metodo è un po 'complicato. Innanzitutto, è necessario inserire un codice campo (Ctrl + F9). Quindi, fai clic con il pulsante destro del mouse => modifica campo => formula => avanzato => digita la formula. Perché digitarlo direttamente non funziona per nessun motivo. Ora fai clic nel campo e valuta con Maiusc + F9. E aggiungi il=rand.old()
Bob

È necessario utilizzare =SUMo semplicemente utilizzare direttamente gli operatori aritmetici, come 3-2?
supercat

@supercat - L'abbiamo provato, e per qualche motivo, Word non accetta le espressioni come parametri di =rand() , ad esempio =rand(3-2,1)sarebbe perfetto. In realtà non ho provato =rand({=3-2},1), ma dovrebbe funzionare allo stesso modo, con la duplicazione di =.

17

Sclipting - 36 caratteri

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

(si aspetta input vuoto)

Spiegazione:

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

Il risultato è l'elenco ["the quick brown ", "fo", "x", " jumps ove", "r the lazy dog", ""], che viene automaticamente concatenato in un'unica stringa per l'output.


1
Conto 105 byte, per non parlare delle ripetizioni. Il carattere 235 , ad esempio, viene utilizzato 20 volte.
primo

11
"Non deve ripetere alcun carattere ", non "non deve ripetere alcun byte".
Plutor,

3
Timwi non mi sorprende, la tua lingua è perfetta per le sfide "nessun personaggio ripetuto".
Pierre Arlaud,

13

Perl 6 (76 caratteri, nessun doppio)

La sceneggiatura (sarà alterata dal software della scheda, ma c'è En Space fino a 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)}
  • Usa EVAL (grazie ancora per averlo reso maiuscolo) e <foo bar> cita parole che supportano tutti gli speciali caratteri dello spazio come separatori di parole.
  • say si unisce all'elenco delle stringhe usando lo spazio, funziona bene qui :)
  • Successivamente uso ~&e 127 per bit shuffle a secco ascii. Complicazione extra: 'Ŭ'.lcdiventa 'ŭ'così che diventa sinvece del rnecessario. L'aggiunta di 128 volte extra aiuta :)

Una versione con barra rovesciata sfugge invece di caratteri unicode per mostrare che sono tutti diversi

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 vuoi verificare che siano tutti unici, usa questo script (avevo Qb"string"un preventivo di base con solo escape di barra rovesciata)

.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) ~ " $_"  }

O eseguilo direttamente 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 byte

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

Copia-incolla, salva come Latin-1 (Ansi).

Questo è un xor-cipher a 7 byte, usando la stringa ¶¥€¼½ˆ•per salt.

Un carattere ripetuto: $.


Puoi accorciarlo di altri 3 caratteri usando <?=poiché stai già usando i tag brevi
Kristoffer Sall-Storgaard

Ah, scusa,
ho

@KristofferSHansen Penso che dovrebbe essere possibile utilizzare eval('Return$g=binary;')in qualche forma criptica (forse un po 'di inversione) per evitare la $ripetizione, e quindi anche quella =verrebbe liberata.
primo

Il tag di apertura non deve essere incluso nel conteggio dei byte.
TecBrat,

@TecBrat La finale ;può essere sostituita dal tag di chiusura: neanche questo deve essere conteggiato? In breve, non sono d'accordo. Se il tuo codice non viene eseguito così com'è, non è un programma completo.
primo

0

Haskell, 71 caratteri

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

Ancora un'altra soluzione modulo a 7 bit.

Personaggi ripetuti:

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

Giocare a golf per la prima volta con Haskell; chiunque abbia più esperienza nella lingua, sentiti libero di migliorare. Volevo rendere la funzione anonima senza punti per evitare di dover menzionare una variabile due volte, ma non so se sarebbe un vantaggio netto.


0

JS, 35

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

(sì ... la doppia citazione viene ripetuta. E l'output è cattivo. Non è ancora una risposta seria.)


-2

Script batch: 7 byte

echo %1

Se lo script si chiama hello.bat, digita questo nella riga di comando:

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

Questo è, questo è così ... senza distinzione tra maiuscole e minuscole! (Voglio dire, non stampa esattamente ciò che la domanda chiede.)
Sig. Lister

6
Digitando quello nella riga di comando, si ripetono i caratteri.
Gerrit,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.