Drucken Sie das Alphabet, ohne jeden Vokal zu verwenden

72

Inspiration : 1939 schrieb ein Mann namens Ernest Vincent Wright einen Roman namens Gadsby, ohne den Buchstaben "e" zu verwenden.

Ihre Aufgabe ist es, eine Reihe von (bis zu 5) Programmen in einer beliebigen Sprache (mit textbasierter Syntax *) zu schreiben, um alle 26 Buchstaben des Alphabets der Reihe nach auszugeben. Für jeden Vokal darf jedoch mindestens eines der Programme kein Vorkommen des Vokals enthalten.

Es muss also geben

  • Ein Programm, das an keiner Stelle in der Syntax des Programms ' a ' oder ' A ' verwendet.
  • Ein Programm, das nirgendwo in der Syntax des Programms ' e ' oder ' E ' verwendet.
  • Ein Programm, das an keiner Stelle in der Syntax des Programms ' i ' oder ' I ' verwendet.
  • Ein Programm, das an keiner Stelle in der Syntax des Programms ' o ' oder ' O ' verwendet.
  • Ein Programm, das an keiner Stelle in der Syntax des Programms ' u ' oder ' U ' verwendet.

Alle von ihnen müssen ausgeben abcdefghijklmnopqrstuvwxyz.

Der Gewinner ist die Lösung, bei der die Länge aller Programme die kürzeste ist.

* Da die Einschränkung in Piet oder Whitespace keine große Herausforderung darstellen würde


Aktuelle Rangliste (06.03.2014):

shamp00
quelle
4
@ w0lf: Nein, es steht "bis zu 5 Programme" und "Länge aller Programme", was ich als "es kann nur ein Programm geben und in diesem Fall zählt seine Länge" gelesen habe.
Schnaader
9
@PeterTaylor: Sie glauben nicht, dass die Verwendung von Vokalen in Ihrer Syntax eine einzigartige Herausforderung darstellt? Als JS-Programmierer ist es besonders interessant :)
mellamokb
2
Sind Zeilenumbrüche in der Ausgabe akzeptabel (dh einer pro Zeichen)? Ich kann einen Teil meines Codes verkürzen, wenn dies der Fall ist ...
Gaffi
2
Ist die Ausgabe in Großbuchstaben zulässig?
Erik der Outgolfer
2
Ich bin der OP. Großbuchstaben nicht erlaubt.
Shamp00

Antworten:

48

Golfscript - 8 Zeichen

123,97>+
Knabberzeug
quelle
8
Verdammt, wirklich nicht zu übertreffen Golfscript in Bezug auf Prägnanz ...
Patrick Oscity
18
Davon abgesehen stinkt die Lesbarkeit wie verrückt.
Andrew Gray
5
Es ist nicht so schlimm;) erstelle eine Liste mit 123 Zahlen, entferne diejenigen, die nicht größer als 97 sind, und zwinge sie (Array von Zahlen) zu einer Zeichenkette.
McKay
3
Verwenden Sie 91,65>+stattdessen.
Erik der Outgolfer
31

Brainfuck, 38 Zeichen

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

Es gibt natürlich keine Vokale (oder andere Buchstaben) in der Brainfuck- Syntax.

Ilmari Karonen
quelle
2
Gültiger Punkt dort! ;)
WallyWest
3
30 Bytes:++[[<+++>->++++<]>]<<<<++[->+.<]
Primo
23

PHP, 31 Bytes

Nein a, e, i, o, u:

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

Die Binärzeichenfolge nach der Tilde hat die folgende hexadezimale Darstellung:

\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

Da es einen Sprachenanzeiger gibt, kann ich diesen auch einreichen:

Ruby (v1.8) 18 Bytes

$><<[*97.chr..'z']
primo
quelle
Ich bin nicht sicher, ob ich verstehe, wie das funktioniert. Könnte ich eine Erklärung bekommen?
Mr. Llama
Bei Anwendung auf einen String invertiert der Operator ~ alle Bits. Hier habe ich abc ... xyz invertiert. Da die Binärzeichenfolge keine Zeichen (oder Leerzeichen) enthält, sind auch keine Anführungszeichen erforderlich.
Primo
1
Möglicherweise möchten Sie eine Codierung für das angeben, was Sie dort haben.
Joey
1
iso-8859-1. Drei nicht druckbare Zeichen wurden entfernt, als sie veröffentlicht wurden. Deshalb habe ich das Hex eingefügt.
Primo
2
Schön und wahrscheinlich die kürzest mögliche PHP-Version. Ein Befehl zur Erzeugung der Datei: 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. Der Befehl , um es auszuführen: php -d error_reporting=0 script.php; echo.
Axiac
16

Rubin ( 24 22)

Bearbeiten: Klammern können weggelassen werden, 2 Zeichen weniger:

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

24 Zeichen in Ruby:

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

Wie es funktioniert

$>ist ein Alias ​​für $stdoutoder STDOUT. Sie können mit dem <<Operator darauf schreiben . Der Begriff '%c'*26wiederholt die Zeichenfolge '%c'26 Mal. Der %Operator ist in String als Alias ​​für definiert sprintf, str % valentspricht also dem Schreiben sprintf(str,val). Das Formatzeichen %cwird verwendet, um einen Zeichenwert in ein Zeichen umzuwandeln. Diese Werte stammen aus [*97..122]einem Array, das die Werte von 97 bis 122 enthält.

Patrick Oscity
quelle
Sehr schön. Ich suchte nach einer Verwendungsmöglichkeit <<, hatte sie aber vergessen $>.
Mark Reed
1
Ich wusste es vorher nicht einmal $>, aber ich vermutete, dass es einige Aliasnamen für Dollars geben musste, an die sich $stdoutniemand erinnern kann :)
Patrick Oscity
21 Zeichen: $><<[*"`".."z"][1,26](Hinweis: Dies funktioniert nur in Ruby 1.8)
Ventero
@Ventero funktioniert nicht nur in Ruby 1.8, sondern auch in Ruby 1.9.2. Die Verwendung von p [*"".." z "] [1,26]` ist jedoch noch kürzer.
Hauleth
@Hauleth: Nein, wenn Sie es in 1.9 ausführen, wird nicht die richtige Ausgabe generiert, da es in 1.9 Array#to_sdasselbe ist wie Array#inspectin 1.8, und Array#joinin 1.9 die Ausgabe ["a", "b", "c", "d", "e", ...]statt abcdef.... Aus dem gleichen Grund pkann nicht verwendet werden (es ruft statt inspectdessen seine Argumente auf to_s).
Ventero
16

Pyth , 1 Buchstabe

G

Pyth definiert bestimmte Variablen vor. G ist als Kleinbuchstabe vordefiniert. Pyth gibt implizit jede Zeile mit einem angemessenen Rückgabewert aus.

isaacg
quelle
3
Ninja'd mich um 3 Jahre ...
Stan Strum
15

JavaScript (100)

Nein "aeou":

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

Nein ich':

alert('abcdefgh\x69jklmnopqrstuvwxyz')
zzzzBov
quelle
+1 Schöne Verbesserung meiner Antwort :) Ich hatte überlegt, die \x##Codes zu verwenden, war mir aber nicht sicher, ob sie in JavaScript gültig sind.
Mellamokb
warum die Warnungen überhaupt? Auf einem js-Terminal werden Objekte automatisch als Echo ausgegeben. ('\ x61bcd \ x65fghijklmn \ x6fpqrst \ x75vwxyz') @ 42 Zeichen.
antony.trupe
3
@ antony.trupe, für Code Golf wird IO normalerweise über die in der Sprache eingebauten IO-Mechanismen (oder gängigen Plugins) ausgeführt. Für JS ist dies in der Regel alert, confirm, prompt, console.log, und document.write. Wenn Sie ein String-Literal deklarieren, wird es bei der Ausführung nicht als Ausgabe ausgegeben. Ansonsten hättest du recht und ich hätte das benutzt.
zzzzBov
es erzeugt eine Ausgabe (nach der Definition, die ich sowieso benutze) in der Google Chrome-Konsole, aber ich gebe das Problem zu; es ist zunächst eine willkürliche Einschränkung.
antony.trupe
@ antony.trupe, in einer Sprache wie PHP könnten Sie mit einem Literal davonkommen, denn so wird IO ausgeführt.
zzzzBov
15

K, 9

_26#.Q.b6

K 10

"c"$97+!26

K, 14

.:".Q.","c"$97
tmartin
quelle
2
und eine dumme Art, es ohne Buchstaben zu machen (12 Zeichen):(@$`)$97+!26
Aaron Davies
1
Der K5 Weg ist fast Ihre zweite Lösung , sondern $nimmt Symbole anstelle von Strings den Typ in umgewandelt zu steuern: `c $ 97 + 26!
JohnE
15

J, 26 23 17 16 Zeichen

Nach ungefähr einer Stunde Stöbern in Js Unterwäscheschublade habe ich endlich einen Weg gefunden, die a.und u:Verben zu eliminieren .

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

Vorher:

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

danke an randomra für den #\trick.

Gareth
quelle
Schöne lösung! Hat es geschafft, mit 1 Zeichen #\ anstelle von zu verkürzen +/\ .
Randomra
5
Raus aus meiner Unterwäsche-Schublade
Joe
14

R, 17 + 19 = 36 Zeichen

nein ae (17):

intToUtf8(97:122)

Nein, ich (19):

cat(letters,sep="")
Paolo
quelle
12

Bash (38)

Überhaupt keine Vokale.

/*/*/*ntf "/*/?ch? {\x61..z}"|/*/b?sh
Marinus
quelle
Dieses Programm schlägt auf meinem System fehl, weil / * / b? Sh nicht existiert. Ich habe / usr / local / bin / bash, nicht / bin / bash.
Kernigh
2
Schöne Verwendung von Shell Globbing!
Mechanische Schnecke
@kernigh[[ ! -d "/bin" ]] && mkdir "/bin"; sudo cp "/usr/local/bin/bash" "/bin/bash"
Stan Strum
Es wäre besser, wenn /bin/shbash ist. Dann kann der Code mit /*/sh(36 Bytes) enden . Aber ich habe kein System gefunden, in dem dies funktioniert. In Debian ist / bin / sh keine Bash. Auf meinem alten Mac ist / bin / sh bash 2.05b0. (1), aber diese Version ist zu alt und wird nicht erweitert {a..z}.
Kernigh
11

C, 90 88 84 Zeichen

Kompilieren Sie mit 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
schnaader
quelle
_startund _exitsind eine schöne Art, sich fortzubewegen main. Aber wenn eine nicht standardmäßige Zusammenstellungszeile in Ordnung ist, warum nicht -DX=main?
Ugoren
4
Irgendwie -DX=mainfühlt sich das schlimmer an als -nostartfiles(für mich). Dies ist eine Möglichkeit, einen Teil des Quellcodes in die Kompilierungszeile zu verschieben, und entspricht dem Schreiben #define X mainin den Quellcode, was eindeutig ungültig wäre. While -nostartfilesist keine Möglichkeit zum Umbenennen main, beseitigt jedoch die Einschränkung, dass es eine mainFunktion geben muss (die aufgerufen wird _start). Auf der anderen Seite -nostartfilesfühlt sich das Verwenden ein bisschen wie Schummeln an, zumal es 4 der 5 "schlechten" Buchstaben enthält :)
Schnaader
Es ist ein rutschiger Hang ... Der Abstand von -nostartfilesbis -DX=mainist gering, und warum dann nicht ein paar Zeichen mit -DX=main()und so weiter sparen . Aber ich kann keine Lösung finden, die nichts Fischartiges beinhaltet.
Ugoren
Es gibt keine Möglichkeit, die Hauptfunktion so zu definieren, dass sie beispielsweise "mn" lautet.
Neil
@Neil, nur durch sowas -Dmn=main. Eine Wechselstromfunktion muss eine mainFunktion haben, es sei denn, eine nicht standardmäßige Option -nostartfileswird verwendet.
Matthew Flaschen
9

Golfscript, 10 Zeichen

26,{97+}%+
Hammar
quelle
18
Warum so ausführlich?
Peter Taylor
9

Rubin, 20 Zeichen

$><<[*97.chr..?z]*''
  • 97.chr ist eine ausgeklügelte Art, 'a' zu sagen
  • .. gibt einen Bereich an
  • ?z ist eine kürzere Art "z" zu sagen
  • die [*range]Ursachen der Bereich al vollzuspritzen es Werte in einem Array
  • *''ist das gleiche wie join(''); es klebt alle Array-Werte zusammen.
  • $><< Perlicism: Drucken Sie nach Standard.
steenslag
quelle
Dieser Code scheint nicht zu funktionieren. ?zist keine Abkürzung für 'z', sondern für 122. Dies funktioniert jedoch für 18 Bytes:$><<[*97.chr..'z']
Primo
Es funktioniert in Ruby 1.9.
Steenslag
1
Ich habe 1.9.3 heruntergeladen ... und du hast recht. Warum sollten sie so etwas ändern? Ich kann sehen, warum Anarchy Golf noch 1.8.7 läuft. Auf jeden Fall funktioniert die 18-Byte-Lösung für Version 1.8.7
primo
2
(4 Jahre später ...) Sie können ersetzen 97.chrmit ?\x61für -1 Byte.
Jordanien
9

dc: 18 17 zeichen

97[dP1+dBD>m]dsmx

Und dort starb ein mutiger Charakter.

Fors
quelle
Das bezweifle ich. Ich wickle den Kopf darum und sehe keine Möglichkeit, ihn zu verkürzen. Ich habe mit genau der gleichen Lösung geendet, außer dass ich sie xfür die Registrierung verwendet habe, wodurch meine Lösung stärker verschleiert wird.
Hynek-Pichi-Vychodil
3
97[dP1+dBD>m]dsmx, 17 Zeichen. Anscheinend können Sie in DC immer hexadezimale Zeichen eingeben, aber da die Eingabebasis zehn ist B*10+D=11*10+13=123='{', ist der Wert und nicht 0xBD.
Fors
Oh, schön glich ;-)
Hynek-Pichi-Vychodil
9

Powershell, 75 62 Zeichen

Bearbeiten: Verwendet -f (String.Format) und die Array-Indizierung, um die Codelänge erheblich zu reduzieren.

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

Wie es funktioniert

gmist ein Alias ​​für get-members, 1|gmgibt also Mitglieder des Werts zurück 1, der vom System.Int32Typ ist:

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)"gibt eine Zeichenfolgendarstellung der obigen Liste zurück, die alle Vokale enthält, die zur Vervollständigung des Alphabets erforderlich sind: " int C omp ar eTo (System.Object val ue) ..."

Danko Durbić
quelle
2
Dies ist jedoch nicht stabil, wenn MS Mitglieder zu System.Int32 hinzufügt :-)
Joey
Ich denke, das müsste ($x=''+$(gv))[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"auch 75 Zeichen sein :)
Danko Durbić
Argh, richtig. Ich habe den falschen Gegenstand aus meiner Geschichte gefischt. Es tut uns leid.
Joey
Eigentlich, wenn Sie ersetzen ''+$(gv)mit "$(gv)"Ihnen erhalten , ($x="$(gv)")[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"die 74 Zeichen ist. Nett!
Danko Durbić
2
Ich habe -f (String.Format) und die Array-Indizierung verwendet, um die Codelänge erheblich zu reduzieren.
Tim Lewis
8

BASH: 40 Zeichen

  • Nicht aeiouverwendet.
  • Kein Platzhalter verwendet.
`tr c-y '\141-w'<<<'rtkpvh %s c'` {b..z}
Prinz John Wesley
quelle
8

Haskell, 12

['\97'..'z']

Oder betrügt das? :)

RobAu
quelle
Ich weiß zwar nicht viel über Haskell, aber es gibt mir diesen Fehler:Parse error: naked expression at top level
Primo
1
Sie führen es im Interpreter
RobAu
7

MATLAB, 12 + 20 = 32 Zeichen

Nein eiou (12):

char(97:122)

Nein aeou (20)

fprintf('%s',97:122)
Jonas
quelle
7

In Perl

es ist auch ohne Vokale möglich

aber viel schwieriger als in Ruby usw. Dies verwendet insgesamt 101 Zeichen, erfordert jedoch keinen Aufruf von cmd line (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`

=> Ergebnis: abcdefghijklmnopqrstuvwxyz

Im Gegensatz zur 'ähnlich aussehenden' PHP-Lösung ist dies ein echtes Programm . Das dekodierte Programm liest:

perl -e "print STDERR a..z"

Nach der Kodierung in Oktalwerte wird ein anderer Perl-Interpreter während der Ausführung von den `` (Backticks) aufgerufen. Die Backticks würden die Ausgabe verbrauchen, daher wird sie nach STDERR gedruckt.

Die Kodierung erfolgt durch sprintf:

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

und die ausgewertete Kodierung ist das Programm, das (innerhalb der Backticks) veröffentlicht wurde:

"\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"

Grüße

rbo

Gummistiefel
quelle
8
Sie könnten dies nur zu 44 Zeichen verkürzen , indem sie die Vokale kodieren :)
marinus
7

Perl 5, 22 Zeichen

(1) enthält nur aund e, 10 Zeichen (erfordert 5.10+, über die Befehlszeile ausführen):

-Esay+a..z

(2) enthält nur 'i', 12 Zeichen:

print v97..z

Wenn die Ausführung über die Befehlszeile nicht zulässig ist, müssen Sie use 5.01;say a..zfür den ersten Befehl einen Wert von 7 Zeichen und einen weiteren Vokal verwenden. Der Befehl hat jedoch immer noch kein "i". Dies führt zu einer gültigen Eingabe von insgesamt 29 Zeichen Figuren.

Mark Reed
quelle
Die Option '-E' ist meiner Meinung nach in Ordnung, aber normalerweise werden die 2 Zeichen '-E' zur Gesamtlänge der Zeichen hinzugefügt.
Gareth
@gareth - Das -E ersetzt -e für die Ausführung eines Einzeilers. Wenn Sie ein Programm aus einer Datei ausführen, stecken Sie bei der fest use, obwohl Sie sie durch die Befehlszeilenoption ersetzen -M5.01und zwei weitere Zeichen entfernen könnten .
Mark Reed
Ich dachte an die Regel mit der -pOption, bei der 2 Zeichen zur Zählung hinzugefügt werden. Wenn Sie sich diese Meta-Frage ansehen, sollten Sie die -M5.010kostenlose verwenden können, wenn diese Option dazu beiträgt, Ihren Code zu verkürzen.
Gareth
Sie könnten Ihre printAussage durch die2 Zeichen ersetzen
zwar am
chr 97..zkann durch v97..zfür 3 Bytes ersetzt werden.
Primo
7

APL (Dyalog) ( 11 13)

Möglicherweise benötigen Sie eine APL-Schriftart. Dies soll Unicode sein, aber es gibt keine Vorschau ...

Nur U(und vielleicht, wenn griechische Vokale gezählt werden):

⎕UCS 96+⍳26

(Das ist: [quad]UCS 96+[iota]26)

Nur A:

⎕A
Marinus
quelle
2
Uist ein Vokal ...
Tobia
@Tobia: und es hat über ein Jahr gedauert, bis das jemand gesehen hat (auch ich). Ich denke, iota ist jetzt, wo ich darüber nachdenke, auch ein Vokal. Behoben.
Marinus
Das APL-Funktionssymbol iota (U + 2373) wird in Unicode nicht als Buchstabe betrachtet und kann daher kein Vokal sein. Beachten Sie, dass es sich von dem griechischen Kleinbuchstaben iota (U + 03B9) unterscheidet.
13.
7

Python 2, 83

Nein a , i , o oder u ; 47 :

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

Nein e ; 36 :

print"abcd\x65fghijklmnopqrstuvwxyz"
Flornbeben
quelle
6

Python 2, 175 Zeichen

Hinweis: Die Ausgabe erfolgt anders als bei früheren Python-Antworten .

Verwendet 'e', ​​aber kein a, i, o, u - 63 61 59 65 (Fehlerbehebung iin Kleinbuchstaben) 115 Zeichen (Leerzeichen entfernen).

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))

(Ursprünglich wurde der Ausdruck mit einem Komma verwendet, bei dem ein Leerzeichen eingefügt wurde. Es wurden auch Großbuchstaben gedruckt. Jetzt wurden strenge Anforderungen für 'abcdefghijklmnopqrstuvwxyz' als Ausgabe festgelegt, sodass eine Importanweisung hinzugefügt wurde.)

Verwendet nicht 'e' (verwendet a, i, o, u; könnte ein, u für kleine Erweiterung trivial loswerden) - 61 60 Zeichen

import string
print string.__dict__['low%crcas%c'%(101,101)]
Dr. Jimbob
quelle
1
Ihre erste Lösung verwendet den Buchstaben i, also sollte es sein: exec('f%cr x %cn r%cnge(65,91):pr%cnt chr(x),'%(111,105,97,105))und wir haben wieder 64 Zeichen.
BioGeek
1
exec('fr%cm sys Ich mp%crt*\nf%cr ...
Gareth
BioGeek & @Gareth - meine manuellen Vokalerkennungsfähigkeiten sind zum Kotzen. Danke, dass Sie darauf hingewiesen haben. aber ich hatte ein zusätzliches e als '% c' geschrieben, damit es am Ende ausgeglichen wird.
Dr. Jimbob
Sie können die Klammern vonexec('...')
mbomb007
5

JavaScript (154)

(1) Enthält nur i(99 Zeichen):

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) Enthält nur aeou(55 Zeichen):

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

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

mellamokb
quelle
$("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)`)"208 Zeichen, aeouiim Code nicht verwendet. Funktioniert mit Chrome Browser.
Esc ĐiĐp
5

Python 159 117

Wie in der anderen Python-Veröffentlichung erwähnt, ist der schwierigste Teil die Tatsache, dass die einzige Möglichkeit zur Ausgabe die Verwendung von printoder ist sys.stdout.write, die beide i enthalten. Müssen Sie es mit 2 Programmen tun (die freistehend sind und nicht die interaktive Python-Shell verwenden, um die Ausgabe zu erstellen):

Dieser verwendet nur i für 55 Zeichen:

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

Dieser vermeidet die Verwendung von i für 104 Zeichen:

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

EDIT: Massiver Durchbruch !!! Ich dachte, dass die Verwendung von eval (oder sogar exec) ein bisschen betrügerisch ist und nicht wirklich dem Geist des Wettbewerbs entspricht. Jedenfalls habe ich beim Durchforsten der eingebauten Funktionen einen Weg gefunden, die Druckfunktion zu erreichen, ohne i zu verwenden. Also hier ist das Vermeiden-i (und o) -Programm für 68 Zeichen:

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

Aber da dies auch o vermeidet, kann dies mit einem gepaart werden, das nur a, e, u für 49 Zeichen vermeidet:

print"%cbcd%cfghijklmnopqrst%cvwxyz"%(97,101,117)
Benedikt
quelle
Sie können Kompatibilität vars(vars().values()[0]).values()[47]
wegwerfen
5

Ruby 196 164 44 47

$><<"\x61bcd\x65fgh\x69jklmn\x6Fpqrst\x75vwxyz"
Cristian Lupascu
quelle
Ist dies eine gültige Antwort, da pAnführungszeichen um das Alphabet ausgegeben werden?
Mark Reed
Ich bin p xdamit einverstanden, ist gleichbedeutend mit aufrufen puts str.inspect, was umgebende Anführungszeichen ergibt.
Patrick Oscity
@padde ihr habt beide recht; geändert.
Cristian Lupascu
1
@padde Ich habe deine verwendet $><<, also +1 für das und Glückwünsche; Ihre Version ist viel besser
Cristian Lupascu
5

Rubin, 22

$><<[*?`..?{][1,26]*''

Keine Buchstaben :)

duckinator
quelle
5

VBA: 76 Brute Force, 116 ohne "Betrug" (98, wenn Zeilenumbrüche in der Ausgabe akzeptabel sind)

Standardfunktionen

Aufgrund der Ausführlichkeit von VBA glaube ich nicht, dass dies in einem Standardcodemodul ohne 'E' oder 'U' möglich ist ...

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

Sofortige Funktionen

Läuft mit der Annahme von mellamokb, hier ohne die Funktionsdeklaration (ohne SUBund FUNCTION) ( 116 Zeichen , 98, wenn Zeilenumbrüche in der Ausgabe akzeptabel sind):

Im Folgenden werden weder 'e' noch 'a' verwendet ( 43 Zeichen , formatiert für die Ausführung im unmittelbaren Fenster):

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

Das Folgende verwendet weder 'i' noch 'a' noch 'u' ( 33 Zeichen , formatiert, um im unmittelbaren Fenster ausgeführt zu werden):

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

Das Folgende verwendet weder 'a' noch 'o' noch 'u' ( 40 Zeichen , formatiert, um im unmittelbaren Fenster ausgeführt zu werden):

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

Wenn in der Ausgabe Zeilenumbrüche zulässig sind, können die obigen Beispiele kürzer sein:

( 37 Zeichen )

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

( 27 Zeichen )

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

( 34 Zeichen )

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

Rohe Gewalt

Laufen mit w0lfs Ruby-Antwort

( 76 Zeichen , formatiert für die Ausführung im unmittelbaren Fenster):

?Chr(65)&"BCD"&Chr(69)&"FGH"&Chr(73)&"JKLMN"&Chr(79)&"PQRST"&Chr(85)&"VWXYZ"
Gaffi
quelle
1
Ich denke, es wäre fair, Sub..End Subdarauf zu verzichten, da die meisten anderen Programme keine Funktionsdefinition enthalten.
Mellamokb
@ Mellamokb Nun, das bringt mich dazu, mich besser zu fühlen. Ich werde einige Beispiele zusammenstellen, um dies zu ergänzen.
Gaffi
2
Stellen
2
Wenn Sie Zweifel haben, nennen Sie es einfach VBScript, das in eine Datei eingefügt werden kann, ohne ein Sub:) zu benötigen
Joey
Einige unnötige Leerzeichen wurden korrigiert und in geändert print, ?da dies im direkten Fenster funktioniert.
Gaffi
5

Rebmu : 15 Zeichen

Ctc'`L26[pn++C]

Das Lesen von Rebmu erfordert zu Beginn immer ein wenig Ruhe :

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

Dann hilft es, die Abkürzungen zu erweitern:

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

Es wäre offensichtlicher, ein Zeichenliteral für den Vorgänger von Kleinbuchstaben a zu verwenden:

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

Aber das ist kein "Brei". Das Umwandeln eines Wortwörters in ein Zeichen geschieht aus dem gleichen Grund. Ich mag daran, wie bei den meisten Rebmu, dass es trotz der Komprimierung den Geist eines vernünftigen Programms hat. (Die Golfscript-Antwort ist kürzer, entspricht jedoch nicht der Art und Weise, wie ein Programmierer normalerweise beim Codieren denkt.)

Dr. Rebmu
quelle
5

<> <(Fisch) - 22 Zeichen

Da <> <das 'o' verwendet, um ein Zeichen zu drucken, scheint diese Herausforderung unmöglich zu sein. Glücklicherweise kann Fisch zur Laufzeit seinen eigenen Code ändern. Dadurch konnte ich die Druckanweisung zum Code hinzufügen.

Dieser Code verwendet keinen der folgenden Vokale:

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

Sie können den Code hier ausführen

Thijs ter Haar
quelle