Stampa l'alfabeto senza usare ciascuna vocale


72

Ispirazione : nel 1939, un uomo di nome Ernest Vincent Wright scrisse un romanzo chiamato Gadsby senza usare la lettera "e".

Il tuo compito è quello di scrivere una serie di (fino a 5) programmi in qualsiasi lingua (che abbia una sintassi basata su testo *) per produrre in ordine tutte le 26 lettere dell'alfabeto. Tuttavia, per ogni vocale aeiou, almeno uno dei programmi non deve includere alcuna occorrenza della vocale.

Quindi ci deve essere

  • un programma che non utilizza " a " o " A " in nessun punto della sintassi del programma.
  • un programma che non usa ' e ' o ' E ' in nessun punto della sintassi del programma.
  • un programma che non utilizza " i " o " I " in nessun punto della sintassi del programma.
  • un programma che non usa ' o ' o ' O ' in nessun punto della sintassi del programma.
  • un programma che non usa ' u ' o ' U ' in nessun punto della sintassi del programma.

Tutti devono produrre abcdefghijklmnopqrstuvwxyz.

Il vincitore deve essere la soluzione in cui la lunghezza di tutti i programmi è la più breve.

* poiché il vincolo non rappresenterebbe una grande sfida in Piet o Whitespace


Classifiche attuali (06 marzo 2014):


4
@ w0lf: No, dice "fino a 5 programmi" e "lunghezza di tutti i programmi", che leggo come "può esserci un solo programma e la sua lunghezza conta in questo caso".
— schnaader,

9
@PeterTaylor: non pensi che dover evitare di usare le vocali nella sintassi sia una sfida unica? Come programmatore JS, è particolarmente interessante :)
— mellamokb

2
I newline sono accettabili nell'output (cioè uno per carattere)? Posso accorciare parte del mio codice, se è così ...
— Gaffi,

2
È consentito l'output maiuscolo?
— Erik the Outgolfer,

2
Sono l'OP. Maiuscolo non consentito.
— shamp00,

Risposte:


48

Golfscript - 8 caratteri

123,97>+

8
accidenti, non posso davvero battere il golfscript in termini di concisione ...
— Patrick Oscity,

18
Detto questo, la leggibilità puzza come un matto.
— Andrew Gray,

5
Non è poi così male;) generare un elenco di 123 numeri, rimuovere quelli che non sono maggiori di 97, forzarlo (matrice di numeri) in una stringa.
— McKay,

3
Usa 91,65>+invece.
— Erik the Outgolfer,

31

Brainfuck, 38 caratteri

++++++[->++++<]>[->+>++++<<]>++[->+.<]

Naturalmente non ci sono vocali (o altre lettere) nella sintassi del brainfuck .


2
Punto valido lì! ;)
— WallyWest il

3
30 byte:++[[<+++>->++++<]>]<<<<++[->+.<]
— primo

23

PHP, 31 byte

No a, e, i, o, u:

<?=~žœ›š™˜—–•”“’‘ŽŒ‹Š‰ˆ‡†…;

La stringa binaria dopo la tilde ha la seguente rappresentazione esadecimale:

\x9e\x9d\x9c\x9b\x9a\x99\x98\x97\x96\x95\x94\x93\x92\x91\x90\x8f\x8e\x8d\x8c\x8b\x8a\x89\x88\x87\x86\x85

Dal momento che esiste un quadro di valutazione della lingua, posso anche inviare questo:

Ruby (v1.8) 18 byte

$><<[*97.chr..'z']

Non sono sicuro di capire come funziona. Potrei avere una spiegazione?
— Mr. Llama,

Quando applicato a una stringa, l'operatore ~ ​​inverte tutti i bit. Qui ho invertito abc ... xyz. Poiché nella stringa binaria non sono presenti caratteri simboli (o spazi), non sono necessarie nemmeno le virgolette.
— primo

1
Potresti voler specificare una codifica per quello che hai lì.
— Joey,

1
iso-8859-1. Tre personaggi "non stampabili" sono stati rimossi quando è stato pubblicato, motivo per cui ho incluso l'esagono.
— primo

2
Bella e probabilmente la versione PHP più breve possibile. Un comando per generare il file: php -r 'echo("<?=~\x9e\x9d\x9c\x9b\x9a\x99\x98\x97\x96\x95\x94\x93\x92\x91\x90\x8f\x8e\x8d\x8c\x8b\x8a\x89\x88\x87\x86\x85;");' > script.php. Il comando per eseguirlo: php -d error_reporting=0 script.php; echo.
— axiac,

16

Ruby ( 24 22)

Modifica: le parentesi possono essere omesse, 2 caratteri in meno:

$><<'%c'*26%[*97..122]

24 caratteri in Ruby:

$><<('%c'*26)%[*97..122]

Come funziona

$>è un alias per $stdouto STDOUT. Puoi scriverci usando l' <<operatore. Il termine '%c'*26ripete la stringa '%c'26 volte. L' %operatore è definito su String come alias sprintf, quindi str % valequivale a scrivere sprintf(str,val). Il carattere di formato %cviene utilizzato per trasformare un valore char in char. Questi valori provengono da [*97..122]cui crea un array contenente i valori da 97 a 122. Et voilá!


Molto bella. Stavo cercando un modo di usare <<ma mi ero dimenticato $>.
— Mark Reed,

1
Non lo sapevo nemmeno $>prima, ma immaginavo che ci fosse un alias variabile in dollari per $stdoutcui nessuno può ricordare :)
— Patrick Oscity,

21 caratteri: $><<[*"`".."z"][1,26](nota: funziona solo in Ruby 1.8)
— Ventero

@Ventero non solo in Ruby 1.8, in Ruby 1.9.2 funziona anche. Ma usare p [*"".." z "] [1,26]` è ancora più breve.
— Hauleth

@Hauleth: No, eseguirlo in 1.9 non genera l'output corretto, poiché in 1.9 Array#to_sè lo stesso di Array#inspect, mentre in 1.8 lo è Array#join- quindi in 1.9 lo è ["a", "b", "c", "d", "e", ...]invece di abcdef.... Per lo stesso motivo, pnon può essere utilizzato (chiama i inspectsuoi argomenti, anziché to_s).
— Ventero,

16

Pyth , 1 personaggio

G

Pyth predefinisce alcune variabili. G è predefinito come alfabeto minuscolo. Pyth inoltre stampa implicitamente ogni riga con un valore di ritorno ragionevole.


3
Mi ha ucciso per 3 anni ...
— Stan Strum,

15

JavaScript (100)

No 'aeou':

this['\x61l\x65rt']('\x61bcd\x65fghijklmn\x6fpqrst\x75vwxyz')

No "i":

alert('abcdefgh\x69jklmnopqrstuvwxyz')

+1 Bel miglioramento sulla mia risposta :) Avevo pensato di usare i \x##codici ma non ero sicuro che fossero validi in JavaScript.
— mellamokb,

perché gli avvisi a tutti? su un terminale js, gli oggetti vengono riecheggiati automagicamente. ('\ x61bcd \ x65fghijklmn \ x6fpqrst \ x75vwxyz') @ 42 caratteri.
— antony.trupe,

3
@ antony.trupe, per il golf del codice, l'IO viene generalmente eseguita tramite i meccanismi di I / O incorporati nella lingua (o plugin comuni). Per questo è in genere JS alert, confirm, prompt, console.log, e document.write. La semplice dichiarazione di una stringa letterale non la produce come output quando eseguita. Altrimenti, avresti ragione, e l'avrei usato.
— zzzzBov,

produce output (secondo la definizione che uso comunque) nella console di Google Chrome, ma concedo il problema; è una limitazione arbitraria per cominciare.
— antony.trupe,

@ antony.trupe, in una lingua come PHP saresti in grado di cavartela usando un valore letterale, perché è così che esegue l'IO.
— zzzzBov,

15

K, 9

_26#.Q.b6

K, 10

"c"$97+!26

K, 14

.:".Q.","c"$97

2
e un modo sciocco per farlo senza lettere (12 caratteri):(@$`)$97+!26
— Aaron Davies

1
Il modo K5 è quasi la tua seconda soluzione ma $prende simboli invece di stringhe per controllare il tipo convertito in: `c $ 97 +! 26
— JohnE

15

J, 26 23 17 16 caratteri

Dopo un'ora o così rovistare nel cassetto della biancheria di J ho finalmente trovato un modo per eliminare l' a.e u:verbi.

2(3!:4)96+#\26$1

In precedenza:

a.{~96++/\26$1
u:97+i.26

grazie a randomra per il #\trucco.


Bella soluzione! Riuscito ad accorciare con 1 carattere usando #\ invece di +/\ .
— randomra,

5
Esci dal mio cassetto della biancheria intima
— Joe

14

R, 17 + 19 = 36 caratteri

no ae (17):

intToUtf8(97:122)

no iou (19):

cat(letters,sep="")

12

Bash (38)

Nessuna vocale.

/*/*/*ntf "/*/?ch? {\x61..z}"|/*/b?sh

Questo programma ha esito negativo sul mio sistema, perché / * / b? Sh non esiste. Ho / usr / local / bin / bash, non / bin / bash.
— kernigh,

2
Bel uso del gorgogliamento delle coperture!
— Lumaca meccanica,

@kernigh[[ ! -d "/bin" ]] && mkdir "/bin"; sudo cp "/usr/local/bin/bash" "/bin/bash"
— Stan Strum

Sarebbe meglio se /bin/shè bash. Quindi il codice può terminare con /*/sh(36 byte). Ma non ho trovato un sistema in cui funzioni. In Debian, / bin / sh non è bash. Nel mio vecchio Mac, / bin / sh è bash 2.05b0. (1), ma questa versione è troppo vecchia e non si espande {a..z}.
— kernigh,

11

C, 90 88 84 caratteri

Compilare usando gcc -nostartfiles

b;_exit(){for(;b<26;)printf("%c",b+++97);}    // 42 chars, works for a, u
b;_start(){putchar(b+++97)>121?:_start();}    // 42 chars, works for e, i, o

_starte _exitsono un bel modo di spostarsi main. Ma se una riga di compilazione non standard è OK, perché no -DX=main?
— ugoren,

4
In qualche modo, mi -DX=mainsento peggio di -nostartfilescosì (per me). È un modo per spostare una parte del codice sorgente nella riga di compilazione ed è lo stesso che scrivere #define X mainnel codice sorgente che sarebbe chiaramente non valido. Considerando che -nostartfilesnon è un modo per rinominare main, ma rimuove la restrizione che ci deve essere una mainfunzione (chiamato in _start). D'altra parte, usare è -nostartfilesun po 'come imbrogliare, soprattutto perché contiene 4 delle 5 lettere "cattive" :)
— schnaader

È una pendenza scivolosa ... La distanza da -nostartfilesa -DX=mainè piccola, e quindi perché non salvare alcuni caratteri con -DX=main()e così via. Ma non riesco a trovare una soluzione che non implichi nulla di sospetto.
— ugoren,

Ad esempio, non puoi definire la funzione principale come "mn"?
— Neil,

@Neil, solo facendo qualcosa di simile -Dmn=main. La funzione AC deve avere una mainfunzione a meno che non -nostartfilesvenga utilizzata un'opzione non standard .
— Matthew Flaschen,


9

Rubino, 20 caratteri

$><<[*97.chr..?z]*''
  • 97.chr è un modo elaborato per dire "a"
  • .. specifica un intervallo
  • ?z è un modo più breve di dire "z"
  • le [*range]cause della gamma di splat al suoi valori in un array
  • *''è lo stesso di join(''); incolla tutti i valori di array insieme.
  • $><< Perlicismo: stampa su stdout.

Questo codice non sembra funzionare. ?znon è una scorciatoia per 'z', ma piuttosto per 122. Questo, tuttavia, funziona per 18 byte:$><<[*97.chr..'z']
— primo

Esso funziona in Ruby 1.9.
— steenslag,

1
Ho scaricato 1.9.3 ... e hai ragione. Perché dovrebbero cambiare qualcosa del genere? Vedo perché l'anarchia golf è ancora in esecuzione 1.8.7. Comunque, la soluzione a 18 byte funziona per v1.8.7-
— primo

2
(4 anni dopo ...) È possibile sostituire 97.chrcon ?\x61per -1 byte.
— Giordania,

9

dc: 18 17 caratteri

97[dP1+dBD>m]dsmx

E lì morì un personaggio coraggioso.


Ne dubito. Ci sto avvolgendo la testa e non vedo alcun modo per accorciarlo. Ho finito con esattamente la stessa soluzione, tranne che ho usato xper il registro che rende la mia soluzione più offuscata.
— Hynek -Pichi- Vychodil,

3
97[dP1+dBD>m]dsmx, 17 caratteri. Apparentemente puoi sempre inserire caratteri esadecimali in DC, ma poiché la base di input è dieci il valore è B*10+D=11*10+13=123='{'e non 0xBD.
— Fors,

Oh, bella glich ;-)
— Hynek -Pichi- Vychodil

9

Powershell, 75 62 caratteri

Modifica: usato -f (String.Format) e indicizzazione di array per ridurre significativamente la lunghezza del codice.

'{0}bcd{1}fgh{2}jklmn{3}pqrst{4}vwxyz'-f"$(1|gm)"[8,10,0,5,31]

Come funziona

gmè un alias per get-members, quindi 1|gmrestituisce membri del valore 1, che è del System.Int32tipo:

PS C:\> 1|gm
   TypeName: System.Int32
Name        MemberType Definition
----        ---------- ----------
CompareTo   Method     int CompareTo(System.Object value), int CompareTo(int value)
Equals      Method     bool Equals(System.Object obj), bool Equals(int obj)
GetHashCode Method     int GetHashCode()
...

"$(1|gm)"restituisce una rappresentazione in formato stringa dell'elenco precedente, che contiene tutte le vocali necessarie per completare l'alfabeto: " int C omp ar eTo (System.Object val ue) ..."


2
Questo non è stabile se MS aggiunge membri a System.Int32, però :-)
— Joey

Penso che dovrebbe essere ($x=''+$(gv))[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"anche 75 caratteri :)
— Danko Durbić,

Argh, giusto. Ho pescato l'articolo sbagliato dalla mia storia. Scusate.
— Joey,

In realtà, se lo sostituisci ''+$(gv)con "$(gv)"te ottieni ($x="$(gv)")[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"74 caratteri. Bello!
— Danko Durbić,

2
Ho usato -f (String.Format) e l'indicizzazione dell'array per ridurre significativamente la lunghezza del codice.
— Tim Lewis

8

BASH: 40 caratteri

  • No aeiou usato
  • Nessun carattere jolly utilizzato.
`tr c-y '\141-w'<<<'rtkpvh %s c'` {b..z}

8

Haskell, 12

['\97'..'z']

O questo è barare? :)


Devo ammettere che non so molto di Haskell, ma mi dà questo errore:Parse error: naked expression at top level
— primo

1
Lo esegui nell'interprete
— RobAu il

7

MATLAB, 12 + 20 = 32 caratteri

No eiou (12):

char(97:122)

No aeou (20)

fprintf('%s',97:122)

7

In Perl,

è anche possibile senza vocali

ma molto più difficile che in Ruby ecc. Questo utilizza un totale di 101 caratteri ma non richiede l'invocazione della linea cmd (perl -e).

`\160\145\162\154\40\55\145\40\42\160\162\151\156\164\40\123\124\104\105\122\122\40\141\56\56\172\42`

=> Risultato: abcdefghijklmnopqrstuvwxyz

Contrariamente alla soluzione PHP dall'aspetto simile , questo è un vero programma . Il programma decodificato recita:

perl -e "print STDERR a..z"

Dopo la codifica in valori ottali, un altro interprete perl viene chiamato durante l'esecuzione da `` (backtick). I backtick consumerebbero l'output, quindi vengono stampati su STDERR.

La codifica viene eseguita da sprintf:

my $s = q{perl -e "print STDERR a..z"};
my $cmd = eval(
       '"' . join('', map sprintf("\\%o",ord $_), split //, $s) . '"'
       );

e la codifica eval'd è il programma pubblicato (all'interno di backtick):

"\160\145\162\154\40\55\145\40\42\160\162"
"\151\156\164\40\123\124\104\105\122\122"
"\40\141\56\56\172\42"

Saluti

RBO


8
Potresti accorciare questo a 44 caratteri codificando solo le vocali :)
— marinus

7

Perl 5, 22 caratteri

(1) contiene solo ae e, 10 caratteri (richiede 5.10+, eseguito dalla riga di comando):

-Esay+a..z

(2) contiene solo 'i', 12 caratteri:

print v97..z

Se non è possibile eseguire dalla riga di comando, è necessario utilizzare use 5.01;say a..zper il primo, al costo di 7 caratteri e una vocale in più, ma non ha ancora 'i', quindi risulta una voce valida per 29 totali personaggi.


L'opzione '-E' è ok, penso, ma di solito i 2 caratteri '-E' vengono aggiunti alla lunghezza totale del carattere.
— Gareth,

@gareth - la -E prende il posto di -e per eseguire un one-liner. Se stai eseguendo un programma da un file, allora sei bloccato con il use, anche se potresti sostituirlo con l'opzione della riga di comando -M5.01e radere altri due caratteri.
— Mark Reed,

Stavo pensando alla regola con l' -popzione in cui vengono aggiunti 2 caratteri al conteggio. Guardando questa meta domanda però, dovresti essere in grado di usare -M5.010gratuitamente se quell'opzione aiuta ad abbreviare il tuo codice.
— Gareth,

potresti sostituire la tua printdichiarazione con dieper radere via 2 caratteri
— ardnew

chr 97..zpuò essere sostituito con v97..zper 3 byte.
— primo

7

APL (Dyalog) ( 11 13)

Potrebbe essere necessario un carattere APL. Questo dovrebbe essere Unicode ma non c'è anteprima ...

Solo U(e forse ⍳se si contano le vocali greche):

⎕UCS 96+⍳26

(Questo è [quad]UCS 96+[iota]26:)

Solo A:

⎕A

2
Uè una vocale ...
— Tobia,

@Tobia: e ci è voluto più di un anno perché qualcuno lo vedesse (incluso me). Immagino che iota sia in realtà anche una vocale ora che ci sto pensando. Aggiustato.
— Marin

Il simbolo funzionale APL iota (U + 2373) non è considerato una lettera in Unicode e quindi non può essere una vocale. Si noti che è distinto dalla piccola lettera greca iota (U + 03B9).
— ngn,

7

Python 2, 83

No una , io , o o u ; 47 :

x=97;s='';exec"s+=chr(x);x+=1;"*26+"pr\x69nt s"

No e ; 36 :

print"abcd\x65fghijklmnopqrstuvwxyz"

6

Python 2, 175 caratteri

Nota: stampa in output a differenza della precedente risposta di Python .

Usa 'e', ​​ma no a, i, o, u - 63 61 59 65 (correggi lo ispostamento errato in minuscolo) 115 caratteri (elimina gli spazi).

exec('fr%cm sys %cmp%crt*\nf%cr x %cn r%cnge(97,123):std%c%ct.wr%cte(chr(x)),'%(111,105,111,111,105,97,111,117,105))

(In origine, utilizzava la stampa con una virgola che inseriva uno spazio; inoltre stampava lettere maiuscole. Ora vedeva rigorosi requisiti per "abcdefghijklmnopqrstuvwxyz" come output; quindi aggiungeva una dichiarazione di importazione).

Non usa 'e' (usa a, i, o, u; potrebbe banalmente sbarazzarsi di a, u per una piccola estensione) - 61 60 caratteri

import string
print string.__dict__['low%crcas%c'%(101,101)]

1
La tua prima soluzione usa la lettera i, quindi dovrebbe essere: exec('f%cr x %cn r%cnge(65,91):pr%cnt chr(x),'%(111,105,97,105))e siamo tornati a 64 caratteri.
— BioGeek,

1
exec('fr%cm sys io mp%crt*\nf%cr ...
— Gareth,

BioGeek & @Gareth: le mie abilità manuali di rilevamento vocale fanno schifo. Grazie per averlo sottolineato; ma avevo una e in più scritta come '% c', quindi alla fine si uniforma.
— dr jimbob,

Puoi rimuovere le parentesi daexec('...')
— mbomb007,

5

JavaScript (154)

(1) contiene solo i(99 caratteri):

t=this;s=-t+t+t.b;z=s[1]+'bcd'+s[7]+'fghijklmn'+s[4]+'pqrst'+s[21]+'vwxyz';t[s[1]+'l'+s[7]+'rt'](z)

(2) contiene solo aeou(55 caratteri):

t=0;s=''+t.b;alert('abcdefgh'+s[5]+'jklmnopqrstuvwxyz')

Demo: http://jsfiddle.net/SvN5n/


$("h\x65\x61d")[0]["\x6fwn\x65rD\x6fc\x75m\x65nt"]["l\x6fc\x61t\x69\x6fn"]="j\x61v\x61scr\x69pt:\x65v\x61l(`f\x6fr(s='',l=65;l<90;l++){s=s+Str\x69ng.fr\x6fmCh\x61rC\x6fd\x65(l);};c\x6fns\x6fl\x65.l\x6fg(s)`)"208chars, non aeouiutilizzato nel codice. Funziona su browser Chrome.
— Esc Điệp,

5

Pitone 159 117

Come menzionato nell'altro post di Python, la parte più difficile riguarda il fatto che l'unico modo per produrre è usare printo sys.stdout.write, entrambi i quali contengono i. Devo farlo con 2 programmi (che sono indipendenti e non usano la shell interattiva di Python per creare l'output):

Questo usa solo i per 55 caratteri:

print"%cbcd%cfghijklmn%cpqrst%cvwxyz"%(97,101,111,117)

Questo evita di usare i per 104 caratteri:

eval("sys.stdout.wr%cte"%105,{'sys':eval("__%cmport__('sys')"%105)})("%c"*26%tuple(range(97,123))+"\n")

MODIFICARE: enorme svolta !!! Pensavo che l'uso di eval (o anche exec) fosse un po 'un imbroglione e non proprio nello spirito della competizione. Ad ogni modo, navigando tra i builtin ho trovato un modo per ottenere la funzione di stampa senza usare i. Ecco quindi il programma avoid-i (e o) per 68 caratteri:

vars(vars().values()[0])['pr%cnt'%105]("%c"*26%tuple(range(97,123)))

Ma poiché ciò evita anche o, questo può essere accoppiato con uno che evita solo a, e, u per 49 caratteri:

print"%cbcd%cfghijklmnopqrst%cvwxyz"%(97,101,117)

Puoi eliminare la compatibilità e ottenere un personaggio -vars(vars().values()[0]).values()[47]
— ugoren,

5

Ruby 196 164 44 47

$><<"\x61bcd\x65fgh\x69jklmn\x6Fpqrst\x75vwxyz"

È una risposta valida, dato che pgenera virgolette attorno all'alfabeto?
— Mark Reed,

Sono d'accordo p xequivale a chiamare puts str.inspect, che si traduce in virgolette circostanti.
— Patrick Oscity,

@padde hai ragione entrambi; cambiato.
— Cristian Lupascu,

1
@padde Ho usato il tuo $><<, quindi +1 per quello e congratulazioni; la tua versione è molto migliore
— Cristian Lupascu,


5

VBA: 76 forza bruta, 116 senza "imbrogli" (98 se le nuove linee sono accettabili nell'output)

Funzioni standard

Grazie alla verbosità di VBA, non credo che ciò possa essere fatto senza "E" o "U" in un modulo di codice standard ...

  • " E nd"
  • "F u nzioni"
  • "S u b"

Funzioni immediate

Funzionando con l'assunto di mellamokb, ecco senza la dichiarazione di funzione (tralasciando SUBe FUNCTION) ( 116 caratteri , 98 se le nuove righe sono accettabili nell'output):

Quanto segue non usa né 'e' né 'a' ( 43 caratteri , formattati per essere eseguiti nella finestra immediata):

b=65:Do:z=z+Chr(b):b=b+1:Loop Until b=91:?z

Quanto segue non utilizza né "i" né "a" né "u" ( 33 caratteri , formattati per essere eseguiti nella finestra immediata):

For b=65 To 90:z=z+Chr(b):Next:?z

Quanto segue non usa né "a" né "o" né "u" ( 40 caratteri , formattati per essere eseguiti nella finestra immediata):

b=65:While b<91:z=z+Chr(b):b=b+1:Wend:?z

Se nell'output sono consentiti caratteri di nuova riga, gli esempi precedenti possono essere più brevi:

( 37 caratteri )

b=65:Do:?Chr(b):b=b+1:Loop Until b=91

( 27 caratteri )

For b=65 To 90:?Chr(b):Next

( 34 caratteri )

b=65:While b<91:?Chr(b):b=b+1:Wend

Forza bruta

In esecuzione con la risposta Ruby di w0lf

( 76 caratteri , formattati per l'esecuzione nella finestra immediata):

?Chr(65)&"BCD"&Chr(69)&"FGH"&Chr(73)&"JKLMN"&Chr(79)&"PQRST"&Chr(85)&"VWXYZ"

1
Penso che sarebbe giusto lasciar Sub..End Subperdere, dal momento che la maggior parte degli altri programmi non include la definizione delle funzioni.
— mellamokb,

@mellamokb Bene, questo mi fa sentire meglio. Preparerò alcuni esempi da aggiungere a questo.
— Gaffi,

2

2
Bene, in caso di dubbio chiamalo VBScript che può essere incluso in un file senza bisogno di un Sub:)
— Joey,

Risolto un mucchio di spazi inutili, cambiati printin ?dal momento che funziona nella finestra immediata.
— Gaffi,

5

Rebmu : 15 caratteri

Ctc'`L26[pn++C]

Leggere Rebmu richiede sempre un po 'di non mushing per iniziare con:

c: tc '` l 26 [pn ++ c]

Quindi aiuta ad espandere le abbreviazioni:

c: to-char-mu '`
loop 26 [
    prin ++ c
]

Sarebbe più ovvio usare un carattere letterale per il predecessore di una minuscola a:

c: #"`"
loop 26 [
    prin ++ c
]

Ma questo non "poltiglia", quindi convertire una parola letterale in un personaggio passa per lo stesso scopo. Quello che mi piace al riguardo, come nella maggior parte dei Rebmu, è che ha lo spirito di un programma sensato nonostante la compressione. (La risposta di Golfscript è più breve ma non corrisponde al modo in cui un programmatore di solito pensa durante la codifica.)


5

<> <(Pesce) - 22 caratteri

Poiché <> <usa la 'o' per stampare un personaggio, questa sfida sembra impossibile da fare. Fortunatamente, i pesci possono cambiare il proprio codice in fase di esecuzione. Questo mi ha permesso di aggiungere le istruzioni di stampa al codice.

Questo codice non utilizza nessuna delle vocali:

'`78'+11pv
:X:'z'=?;>1+

Puoi eseguire il codice qui

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.