Inspiration : en 1939, un homme nommé Ernest Vincent Wright écrivit un roman intitulé Gadsby sans utiliser la lettre «e».
Votre tâche consiste à écrire un ensemble de programmes (jusqu’à 5) dans n’importe quelle langue (avec une syntaxe textuelle *) afin d’afficher les 26 lettres de l’alphabet dans l’ordre. Cependant, pour chaque voyelle, au moins un des programmes ne doit inclure aucune occurrence de la voyelle.
Donc il doit y avoir
- un programme qui n'utilise pas « un » ou « A » partout dans la syntaxe du programme.
- un programme qui n'utilise pas ' e ' ou ' E ' n'importe où dans la syntaxe du programme.
- un programme qui n'utilise ni « i » ni « je » dans la syntaxe du programme.
- un programme qui n'utilise ni " o " ni " O " dans la syntaxe du programme.
- un programme qui n'utilise pas " u " ou " U " n'importe où dans la syntaxe du programme.
Tous doivent sortir abcdefghijklmnopqrstuvwxyz
.
Le gagnant sera la solution lorsque la longueur de tous les programmes est la plus courte.
* puisque la contrainte ne serait pas un défi en Piet ou Whitespace
Classement actuel (06 mars 2014):
- Un PL : 11
- B ash : 31
- B éfunge : 26
- B urlesque : 12
- B rainfuck : 38
- C : 84
- C # : 278/149
- C jam : 6
- C lojure : 81
- D c : 18
- E rlang escript : 75
- F # : 96
- Acteur F : 264
- F ission : 21
- F orth : 46
- G olfscript : 8
- H askell (interprète) : 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 (ligne de commande) : 23
- P erl 5.10+ : 23
- P erl : 101
- P HP : 31
- P ostscript : 45
- P owershell : 62
- P coquille ython : 48
- P ython : 83
- R : 36
- R ebmu : 15
- R uby : 20
- R uby 1,8 : 18
- S cala : 55
- S âge CLI : 42
- T cl : 49
- T- SQL : 120
- V BA : 70
Réponses:
Golfscript - 8 caractères
la source
91,65>+
place.Brainfuck, 38 caractères
Bien sûr, il n'y a pas de voyelles (ou d'autres lettres) dans la syntaxe du brainfuck .
la source
++[[<+++>->++++<]>]<<<<++[->+.<]
PHP, 31 octets
Non a, e, i, o, u:
La chaîne binaire située après le tilde a la représentation hexadécimale suivante:
Puisqu'il y a un tableau d'affichage des langues, je pourrais aussi bien vous soumettre celui-ci:
Ruby (v1.8) 18 octets
la source
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
. La commande pour l' exécuter:php -d error_reporting=0 script.php; echo
.Rubis (
2422)Edit: les parenthèses peuvent être omises, moins de 2 caractères:
24 caractères en rubis:
Comment ça fonctionne
$>
est un alias pour$stdout
ouSTDOUT
. Vous pouvez y écrire en utilisant l'<<
opérateur. Le terme'%c'*26
répète la chaîne'%c'
26 fois. L'%
opérateur est défini sur String comme un aliassprintf
, ce quistr % val
revient à écriresprintf(str,val)
. Le caractère de format%c
est utilisé pour transformer une valeur de caractère en caractère. Ces valeurs proviennent de[*97..122]
ce qui crée un tableau contenant les valeurs de 97 à 122. Et voilá!la source
<<
mais j'avais oublié$>
.$>
auparavant, mais j'ai supposé qu'il devait exister un nom d'emprunt variable en dollars pour$stdout
que personne ne s'en souvienne :)$><<[*"`".."z"][1,26]
(note: cela ne fonctionne que dans Ruby 1.8)p [*"
".." z "] [1,26]` est encore plus courte.Array#to_s
est identique àArray#inspect
, alors que dans 1.8 c'estArray#join
- donc dans 1.9, la sortie est à la["a", "b", "c", "d", "e", ...]
place deabcdef...
. Pour la même raison,p
ne peut pas être utilisé (il appelleinspect
ses arguments au lieu deto_s
).Pyth , 1 caractère
Pyth prédéfinit certaines variables. G est prédéfini comme alphabet minuscule. Pyth imprime aussi implicitement chaque ligne avec une valeur de retour raisonnable.
la source
JavaScript (100)
Non 'aeou':
Non je':
la source
\x##
codes, mais je ne savais pas s'ils étaient valables en JavaScript.alert
,confirm
,prompt
,console.log
etdocument.write
. Déclarer simplement un littéral de chaîne ne le produit pas comme sortie lorsqu'il est exécuté. Sinon, vous auriez raison, et j'aurais utilisé cela.K, 9
K, 10
K, 14
la source
(@$`)$97+!26
$
prend des symboles au lieu de chaînes pour contrôler le type converti en: `c $ 97 +! 26J,
26231716 caractèresAprès une heure ou fouillant dans le tiroir de sous - vêtements de J Je l' ai finalement trouvé un moyen d'éliminer les
a.
et lesu:
verbes.Précédemment:
avec merci à randomra pour le
#\
tour.la source
#\
au lieu de+/\
.R, 17 + 19 = 36 caractères
non ae (17):
non iou (19):
la source
Bash (38)
Pas de voyelles du tout.
la source
[[ ! -d "/bin" ]] && mkdir "/bin"; sudo cp "/usr/local/bin/bash" "/bin/bash"
/bin/sh
c'est bash. Ensuite, le code peut se terminer par/*/sh
(36 octets). Mais je n'ai pas trouvé de système où cela fonctionne. Dans Debian, / bin / sh n’est pas bash. Dans mon ancien Mac, / bin / sh correspond à bash 2.05b0. (1), mais cette version est trop ancienne et ne se développe pas{a..z}
.C,
90 8884 caractèresCompiler en utilisant
gcc -nostartfiles
la source
_start
et_exit
sont un bon moyen de se déplacermain
. Mais si une ligne de compilation non standard est OK, pourquoi pas-DX=main
?-DX=main
se sent pire que-nostartfiles
ne le fait (pour moi). C'est un moyen de déplacer une partie du code source vers la ligne de compilation et cela revient à écrire#define X main
dans le code source, ce qui serait clairement invalide. Attendu que-nostartfiles
n’est pas un moyen de renommermain
, mais supprime la restriction selon laquelle il doit y avoir unemain
fonction (appelée dans_start
). Par contre, utiliser-nostartfiles
est un peu tricher, surtout qu’il contient 4 des 5 "mauvaises" lettres :)-nostartfiles
à-DX=main
est petite et pourquoi ne pas enregistrer des caractères avec-DX=main()
et ainsi de suite. Mais je ne peux pas trouver une solution qui n'implique rien de louche.-Dmn=main
. La fonction CA doit avoir unemain
fonction sauf si une option non standard telle que-nostartfiles
est utilisée.Golfscript, 10 caractères
la source
Ruby, 20 caractères
97.chr
est une manière élaborée de dire 'a'..
spécifie une plage?z
est un moyen plus court de dire "z"[*range]
provoque la plage à splat al il est des valeurs dans un tableau*''
est le même quejoin('')
; il colle toutes les valeurs d'un tableau ensemble.$><<
Perlicism: imprimer sur la sortie standard.la source
?z
n'est pas un raccourci pour'z'
, mais plutôt pour122
. Toutefois, cela ne fonctionne pour 18 octets:$><<[*97.chr..'z']
97.chr
avec?\x61
pour -1 octet.dc:
1817 caractèresEt il mourut un personnage courageux.
la source
x
pour le registre, ce qui rend la solution plus obscure.97[dP1+dBD>m]dsmx
, 17 caractères. Apparemment, vous pouvez toujours entrer des caractères hexadécimaux dans DC, mais comme la base d’entrée est dix, la valeur estB*10+D=11*10+13=123='{'
, et non 0xBD.Powershell,
7562 caractèresEdit: Utilisé -f (String.Format) et l'indexation de tableaux pour réduire considérablement la longueur du code.
Comment ça fonctionne
gm
est un alias pourget-members
, donc1|gm
renvoie les membres de la valeur1
, qui est duSystem.Int32
type:"$(1|gm)"
renvoie une représentation sous forme de chaîne de la liste ci-dessus, qui contient toutes les voyelles nécessaires pour compléter l'alphabet: " int C omp ar eTo (System.Object val ue) ..."la source
($x=''+$(gv))[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"
''+$(gv)
par"$(gv)"
vous obtenez($x="$(gv)")[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"
74 caractères. Agréable!BASH: 40 caractères
aeiou
utilisé.la source
Haskell, 12 ans
Ou est-ce tricher? :)
la source
Parse error: naked expression at top level
MATLAB, 12 + 20 = 32 caractères
Non eiou (12):
Non aeou (20)
la source
En Perl,
c'est aussi possible sans voyelles
mais beaucoup plus difficile qu'en Ruby, etc. Ceci utilise un total de 101 caractères mais ne nécessite pas d'invocation de ligne de commande (perl -e).
=> Résultat: abcdefghijklmnopqrstuvwxyz
Contrairement à la solution PHP «similaire» , il s'agit d'un programme réel . Le programme décodé se lit comme suit:
Après l’encodage en valeurs octales, un autre interpréteur Perl est appelé lors de l’exécution par le `` (backticks). Les backticks consomment la sortie, elle est donc imprimée sur STDERR.
L'encodage est fait par sprintf:
et le codage évalué est le programme posté (dans les backticks):
Cordialement
rbo
la source
Perl 5, 22 caractères
(1) ne contient que
a
ete
, 10 caractères (nécessite 5.10+, exécuté à partir de la ligne de commande):(2) contient uniquement 'i', 12 caractères:
S'il n'est pas autorisé à s'exécuter à partir de la ligne de commande, vous devez utiliser
use 5.01;say a..z
la première, avec un coût de 7 caractères et une voyelle de plus, mais elle n'a toujours pas de 'i'. Il en résulte une entrée valide de 29 au total. personnages.la source
use
, bien que vous puissiez le remplacer par l'option de ligne de commande-M5.01
et supprimer deux caractères supplémentaires.-p
option où 2 caractères sont ajoutés au compte. En regardant cette méta-question, vous devriez pouvoir utiliser le-M5.010
gratuitement si cette option permet de raccourcir votre code.print
déclaration pardie
deuxchr 97..z
peut être remplacé parv97..z
pour 3 octets.APL (Dyalog) (
1113)Vous pourriez avoir besoin d'une police APL. Ceci est supposé être Unicode mais il n'y a pas de prévisualisation ...
Seulement
U
(et peut⍳
- être en comptant les voyelles grecques):(C'est:
[quad]UCS 96+[iota]26
)Seulement
A
:la source
U
est une voyelle ...Python 2, 83
Non a , i , o ou u ; 47 :
Non e ; 36 :
la source
Python 2, 175 caractères
Remarque: les impressions sont générées contrairement à la réponse précédente en python .
Utilisations 'e', mais non a, i, o, u -
63615965(correction dui
déplacement erroné en minuscule) 115 caractères (suppression des espaces).(À l'origine, elle utilisait une virgule avec une virgule insérée; les lettres majuscules étaient également imprimées. Des exigences strictes étaient imposées pour 'abcdefghijklmnopqrstuvwxyz' en sortie; il fallait donc ajouter une déclaration d'importation).
N'utilise pas 'e' (utilise a, i, o, u; pourrait trivialement se débarrasser de a, u pour une petite extension) -
6160 caractèresla source
i
, elle devrait donc être:exec('f%cr x %cn r%cnge(65,91):pr%cnt chr(x),'%(111,105,97,105))
et nous sommes revenus à 64 caractères.exec('fr%cm sys
Jemp%crt*\nf%cr
...exec('...')
JavaScript (154)
(1) contient uniquement
i
(99 caractères):(2) contient uniquement
aeou
(55 caractères):Démo: http://jsfiddle.net/SvN5n/
la source
$("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, nonaeoui
utilisé dans le code. Fonctionne sur le navigateur chrome.Python
159117Comme mentionné dans l'autre publication Python, le plus difficile est de traiter le fait que le seul moyen de générer une sortie est d'utiliser
print
ousys.stdout.write
, les deux contenant i. Il faut le faire avec 2 programmes (qui sont indépendants et n'utilisent pas le shell interactif python pour créer la sortie):Celui-ci utilise uniquement i pour 55 caractères:
Celui-ci évite d'utiliser i pour 104 caractères:
EDIT: percée massive !!! Je pensais qu'utiliser eval (ou même exec) était un peu un tricheur et pas vraiment dans l'esprit de la compétition. Quoi qu'il en soit, en parcourant les fonctions intégrées, j'ai trouvé un moyen d'obtenir la fonction d'impression sans utiliser i. Voici donc le programme Avoid-i (et o) pour 68 caractères:
Mais parce que cela évite aussi o, cela peut être jumelé avec celui qui évite seulement a, e, u pour 49 caractères:
la source
vars(vars().values()[0]).values()[47]
Rubis
1961644447la source
p
guillemets sont affichés autour de l'alphabet?p x
est équivalent à appelerputs str.inspect
, ce qui entraîne des guillemets.$><<
, donc +1 pour cela et félicitations; ta version est bien meilleureRuby, 22 ans
Aucune lettre que ce soit :)
la source
VBA: 76 force brute, 116 sans "triche" (98 si les nouvelles lignes sont acceptables dans la sortie)
Fonctions standard
Grâce à la verbosité de VBA, je ne crois pas que cela puisse se faire sans "E" ou "U" dans un module de code standard ...
Fonctions immédiates
Sous l'hypothèse de mellamokb, voici sans la déclaration de fonction (laissant dehors
SUB
etFUNCTION
) ( 116 caractères , 98 si les nouvelles lignes sont acceptables en sortie):Le texte ci-dessous n'utilise ni 'e' ni 'a' ( 43 caractères , formatés pour être exécutés dans la fenêtre immédiate):
Le texte ci-dessous n'utilise ni 'i' ni 'a' ni 'u' ( 33 caractères , formatés pour être exécutés dans la fenêtre immédiate):
Le texte ci-dessous n'utilise ni 'a' ni 'o' ni 'u' ( 40 caractères , formatés pour être exécutés dans la fenêtre immédiate):
Si les caractères de nouvelle ligne sont autorisés dans la sortie, les exemples ci-dessus peuvent être plus courts:
( 37 caractères )
( 27 caractères )
( 34 caractères )
Force brute
Courir avec la réponse Ruby de w0lf
( 76 caractères , formatés pour être exécutés dans la fenêtre immédiate):
la source
Sub..End Sub
côté, car la plupart des autres programmes n'incluent pas de définition de fonction.Sub
:)print
par ceux?
qui fonctionnent dans la fenêtre immédiate.Rebmu : 15 caractères
Lire Rebmu nécessite toujours un peu de désinvolture pour commencer:
Ensuite, il est utile d’élargir les abréviations:
Il serait plus évident d'utiliser un littéral de caractère pour le prédécesseur de minuscule a:
Mais cela ne "va pas", donc convertir un mot littéral en un personnage passe dans le même but. Comme dans la plupart des autres entreprises Rebmu, ce qui me plaît, c’est qu’il a l’esprit d’un programme judicieux malgré la compression. (La réponse de Golfscript est plus courte mais ne correspond pas à la façon dont un programmeur penserait habituellement lors de la programmation.)
la source
<> <(Poisson) - 22 caractères
Parce que <> <utilise le 'o' pour imprimer un personnage, ce défi semble impossible à relever. Heureusement, le poisson peut modifier son propre code en cours d'exécution. Cela m'a permis d'ajouter l'instruction d'impression au code.
Ce code n'utilise aucune des voyelles:
Vous pouvez exécuter le code ici
la source