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):
- A PL : 11
- B Asche : 31
- B efunge : 26
- B urlesque : 12
- B Regenfick : 38
- C : 84
- C # : 278/149
- C Jam : 6
- C lojure : 81
- D c : 18
- E rlanges Skript : 75
- F # : 96
- F Schauspieler : 264
- F ission : 21
- F orth : 46
- G olfskript : 8
- H askell (Dolmetscher) : 12
- H TML : 50
- J : 17
- J ava : 137
- J avascript : 92
K : 9
K otlin : 112
- L ua : 57
- M arbelous : 96
- M ATLAB : 11
- P erl 5 (cmd Linie) : 23
- P erl 5.10+ : 23
- P erl : 101
- P HP : 31
- P ostskript : 45
- P owershell : 62
- P ythonschale : 48
- P ython : 83
- R 36
- R ebmu : 15
- R uby : 20
- R Uby 1,8 : 18
- S cala : 55
- S age CLI : 42
- T cl : 49
- T- SQL : 120
- V BA : 70
code-golf
string
restricted-source
alphabet
shamp00
quelle
quelle
Antworten:
Golfscript - 8 Zeichen
quelle
91,65>+
stattdessen.Brainfuck, 38 Zeichen
Es gibt natürlich keine Vokale (oder andere Buchstaben) in der Brainfuck- Syntax.
quelle
++[[<+++>->++++<]>]<<<<++[->+.<]
PHP, 31 Bytes
Nein a, e, i, o, u:
Die Binärzeichenfolge nach der Tilde hat die folgende hexadezimale Darstellung:
Da es einen Sprachenanzeiger gibt, kann ich diesen auch einreichen:
Ruby (v1.8) 18 Bytes
quelle
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
.Rubin (
2422)Bearbeiten: Klammern können weggelassen werden, 2 Zeichen weniger:
24 Zeichen in Ruby:
Wie es funktioniert
$>
ist ein Alias für$stdout
oderSTDOUT
. Sie können mit dem<<
Operator darauf schreiben . Der Begriff'%c'*26
wiederholt die Zeichenfolge'%c'
26 Mal. Der%
Operator ist in String als Alias für definiertsprintf
,str % val
entspricht also dem Schreibensprintf(str,val)
. Das Formatzeichen%c
wird 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.quelle
<<
, hatte sie aber vergessen$>
.$>
, aber ich vermutete, dass es einige Aliasnamen für Dollars geben musste, an die sich$stdout
niemand erinnern kann :)$><<[*"`".."z"][1,26]
(Hinweis: Dies funktioniert nur in Ruby 1.8)p [*"
".." z "] [1,26]` ist jedoch noch kürzer.Array#to_s
dasselbe ist wieArray#inspect
in 1.8, undArray#join
in 1.9 die Ausgabe["a", "b", "c", "d", "e", ...]
stattabcdef...
. Aus dem gleichen Grundp
kann nicht verwendet werden (es ruft stattinspect
dessen seine Argumente aufto_s
).Pyth , 1 Buchstabe
Pyth definiert bestimmte Variablen vor. G ist als Kleinbuchstabe vordefiniert. Pyth gibt implizit jede Zeile mit einem angemessenen Rückgabewert aus.
quelle
JavaScript (100)
Nein "aeou":
Nein ich':
quelle
\x##
Codes zu verwenden, war mir aber nicht sicher, ob sie in JavaScript gültig sind.alert
,confirm
,prompt
,console.log
, unddocument.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.K, 9
K 10
K, 14
quelle
(@$`)$97+!26
$
nimmt Symbole anstelle von Strings den Typ in umgewandelt zu steuern: `c $ 97 + 26!J,
26231716 ZeichenNach ungefähr einer Stunde Stöbern in Js Unterwäscheschublade habe ich endlich einen Weg gefunden, die
a.
undu:
Verben zu eliminieren .Vorher:
danke an randomra für den
#\
trick.quelle
#\
anstelle von zu verkürzen+/\
.R, 17 + 19 = 36 Zeichen
nein ae (17):
Nein, ich (19):
quelle
Bash (38)
Überhaupt keine Vokale.
quelle
[[ ! -d "/bin" ]] && mkdir "/bin"; sudo cp "/usr/local/bin/bash" "/bin/bash"
/bin/sh
bash 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}
.C,
90 8884 ZeichenKompilieren Sie mit
gcc -nostartfiles
quelle
_start
und_exit
sind eine schöne Art, sich fortzubewegenmain
. Aber wenn eine nicht standardmäßige Zusammenstellungszeile in Ordnung ist, warum nicht-DX=main
?-DX=main
fü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 main
in den Quellcode, was eindeutig ungültig wäre. While-nostartfiles
ist keine Möglichkeit zum Umbenennenmain
, beseitigt jedoch die Einschränkung, dass es einemain
Funktion geben muss (die aufgerufen wird_start
). Auf der anderen Seite-nostartfiles
fühlt sich das Verwenden ein bisschen wie Schummeln an, zumal es 4 der 5 "schlechten" Buchstaben enthält :)-nostartfiles
bis-DX=main
ist 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.-Dmn=main
. Eine Wechselstromfunktion muss einemain
Funktion haben, es sei denn, eine nicht standardmäßige Option-nostartfiles
wird verwendet.Golfscript, 10 Zeichen
quelle
Rubin, 20 Zeichen
97.chr
ist eine ausgeklügelte Art, 'a' zu sagen..
gibt einen Bereich an?z
ist eine kürzere Art "z" zu sagen[*range]
Ursachen der Bereich al vollzuspritzen es Werte in einem Array*''
ist das gleiche wiejoin('')
; es klebt alle Array-Werte zusammen.$><<
Perlicism: Drucken Sie nach Standard.quelle
?z
ist keine Abkürzung für'z'
, sondern für122
. Dies funktioniert jedoch für 18 Bytes:$><<[*97.chr..'z']
97.chr
mit?\x61
für -1 Byte.dc:
1817 zeichenUnd dort starb ein mutiger Charakter.
quelle
x
für die Registrierung verwendet habe, wodurch meine Lösung stärker verschleiert wird.97[dP1+dBD>m]dsmx
, 17 Zeichen. Anscheinend können Sie in DC immer hexadezimale Zeichen eingeben, aber da die Eingabebasis zehn istB*10+D=11*10+13=123='{'
, ist der Wert und nicht 0xBD.Powershell,
7562 ZeichenBearbeiten: Verwendet -f (String.Format) und die Array-Indizierung, um die Codelänge erheblich zu reduzieren.
Wie es funktioniert
gm
ist ein Alias fürget-members
,1|gm
gibt also Mitglieder des Werts zurück1
, der vomSystem.Int32
Typ ist:"$(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) ..."quelle
($x=''+$(gv))[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"
auch 75 Zeichen sein :)''+$(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!BASH: 40 Zeichen
aeiou
verwendet.quelle
Haskell, 12
Oder betrügt das? :)
quelle
Parse error: naked expression at top level
MATLAB, 12 + 20 = 32 Zeichen
Nein eiou (12):
Nein aeou (20)
quelle
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).
=> Ergebnis: abcdefghijklmnopqrstuvwxyz
Im Gegensatz zur 'ähnlich aussehenden' PHP-Lösung ist dies ein echtes Programm . Das dekodierte Programm liest:
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:
und die ausgewertete Kodierung ist das Programm, das (innerhalb der Backticks) veröffentlicht wurde:
Grüße
rbo
quelle
Perl 5, 22 Zeichen
(1) enthält nur
a
unde
, 10 Zeichen (erfordert 5.10+, über die Befehlszeile ausführen):(2) enthält nur 'i', 12 Zeichen:
Wenn die Ausführung über die Befehlszeile nicht zulässig ist, müssen Sie
use 5.01;say a..z
fü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.quelle
use
, obwohl Sie sie durch die Befehlszeilenoption ersetzen-M5.01
und zwei weitere Zeichen entfernen könnten .-p
Option, bei der 2 Zeichen zur Zählung hinzugefügt werden. Wenn Sie sich diese Meta-Frage ansehen, sollten Sie die-M5.010
kostenlose verwenden können, wenn diese Option dazu beiträgt, Ihren Code zu verkürzen.print
Aussage durchdie
2 Zeichen ersetzenchr 97..z
kann durchv97..z
für 3 Bytes ersetzt werden.APL (Dyalog) (
1113)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):(Das ist:
[quad]UCS 96+[iota]26
)Nur
A
:quelle
U
ist ein Vokal ...Python 2, 83
Nein a , i , o oder u ; 47 :
Nein e ; 36 :
quelle
Python 2, 175 Zeichen
Hinweis: Die Ausgabe erfolgt anders als bei früheren Python-Antworten .
Verwendet 'e', aber kein a, i, o, u -
63615965(Fehlerbehebungi
in Kleinbuchstaben) 115 Zeichen (Leerzeichen entfernen).(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) -
6160 Zeichenquelle
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.exec('fr%cm sys
Ichmp%crt*\nf%cr
...exec('...')
JavaScript (154)
(1) Enthält nur
i
(99 Zeichen):(2) Enthält nur
aeou
(55 Zeichen):Demo: http://jsfiddle.net/SvN5n/
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,aeoui
im Code nicht verwendet. Funktioniert mit Chrome Browser.Python
159117Wie in der anderen Python-Veröffentlichung erwähnt, ist der schwierigste Teil die Tatsache, dass die einzige Möglichkeit zur Ausgabe die Verwendung von
print
oder istsys.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:
Dieser vermeidet die Verwendung von i für 104 Zeichen:
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:
Aber da dies auch o vermeidet, kann dies mit einem gepaart werden, das nur a, e, u für 49 Zeichen vermeidet:
quelle
vars(vars().values()[0]).values()[47]
Ruby
1961644447quelle
p
Anführungszeichen um das Alphabet ausgegeben werden?p x
damit einverstanden, ist gleichbedeutend mit aufrufenputs str.inspect
, was umgebende Anführungszeichen ergibt.$><<
, also +1 für das und Glückwünsche; Ihre Version ist viel besserRubin, 22
Keine Buchstaben :)
quelle
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 ...
Sofortige Funktionen
Läuft mit der Annahme von mellamokb, hier ohne die Funktionsdeklaration (ohne
SUB
undFUNCTION
) ( 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):
Das Folgende verwendet weder 'i' noch 'a' noch 'u' ( 33 Zeichen , formatiert, um im unmittelbaren Fenster ausgeführt zu werden):
Das Folgende verwendet weder 'a' noch 'o' noch 'u' ( 40 Zeichen , formatiert, um im unmittelbaren Fenster ausgeführt zu werden):
Wenn in der Ausgabe Zeilenumbrüche zulässig sind, können die obigen Beispiele kürzer sein:
( 37 Zeichen )
( 27 Zeichen )
( 34 Zeichen )
Rohe Gewalt
Laufen mit w0lfs Ruby-Antwort
( 76 Zeichen , formatiert für die Ausführung im unmittelbaren Fenster):
quelle
Sub..End Sub
darauf zu verzichten, da die meisten anderen Programme keine Funktionsdefinition enthalten.Sub
:) zu benötigenprint
,?
da dies im direkten Fenster funktioniert.Rebmu : 15 Zeichen
Das Lesen von Rebmu erfordert zu Beginn immer ein wenig Ruhe :
Dann hilft es, die Abkürzungen zu erweitern:
Es wäre offensichtlicher, ein Zeichenliteral für den Vorgänger von Kleinbuchstaben a zu verwenden:
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.)
quelle
<> <(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:
Sie können den Code hier ausführen
quelle