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.