Votre objectif est d'écrire "Hello, World!" (moins les citations). Ceci est un concours de popularité , donc la majorité des votes sont gagnants. La longueur du code sera utilisée pour rompre les liens.
Tout est permis, dans la mesure où il respecte les règles suivantes:
- Tous les caractères doivent être des lettres ou des chiffres, vous ne pouvez donc utiliser que des caractères dans la chaîne "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".
- Tout le code que vous utilisez doit être dans un seul fichier, à l'exception des modules / classes importés / peu importe leur nom, dans votre langue préférée.
- Seules les bibliothèques / infrastructures standard pour la langue de votre choix sont autorisées (par exemple, le module Math de Python est autorisé, mais Numpy, Scipy et Pygame ne le sont pas). Je vais autoriser TkInter car il s’agit du standard de facto pour les interfaces graphiques en Python.
- Aucune saisie n'est autorisée, qu'il s'agisse de lire à partir de stdin, de lire un fichier, de déplacer une image ou de lire sur le Web.
+10 points brownie si vous savez comment le faire en Java sans contourner les règles.
À vos marques, prêts, code!
EDIT: les accolades ({}), les crochets ([]) et les parenthèses (()) sont autorisés car cela serait pratiquement impossible pour la plupart des langues sans eux. Je supprime également la règle de limite de personnage. Espérons que cela le rendra plus intéressant.
EDIT ^ 2: les espaces sont également autorisés. Mon cerveau ne fonctionne pas correctement, désolé. >. <
;
? Comment puis-je écrire quelque chose en C?72 101 108 108 111 44 32 87 111 114 108 100 33{a.
nécessite le temps écoulé à la fin, et un cheminu:
similaire nécessite deux points. Sans.
et:
nous ne sommes rien.Réponses:
Perl
Certains disent que perl est une langue pleine de bruit ascii et de symboles aléatoires comme
$
... Ce n'est pas vrai: Pla source
s/PATTERN/REPLACEMENT/FLAGS
, mais vous pouvez utiliser la plupart des options de votre choix à la place des barres obliques. Le code utilise ici "z" au lieu de barres obliques et tourne (rien) en "Helloq Worldm" puis remplace "q" pour chr 44 (en utilisant le drapeau \ e pour évaluer REMPLACEMENT aka "chr 44" comme une expression) qui est ", ". Il remplace ensuite "m" par "chr 33", un "!", Et l’imprime.q//
, tout delimiter peut être utilisé,q!! q** q\\ q;;
. Quelques exceptions sont que pour fermer que(
vous utilisez)
,q() q[] q{} q<>
et que d'utiliser un alphanumérique comme séparateur, il doit être espacé de l'opérateur à l' ambiguïté disallow, par exempleq qq
,q 66
. Les mêmes astuces s'appliquent aux autres opérateurs semblables à des devis.C
la source
switch(putchar(72)){}switch(putchar(101)){}
, etc.putchar(putchar(108))
(Edit - BBC Basic a déplacé la réponse séparée comme suggéré. La plupart des votes à ce sujet sont définitivement pour la réponse LOGO.)
LOGO
Interprète à http://www.calormen.com/jslogo/#
Sortie (le triangle vert est le curseur de la tortue)
la source
Applescript
Pas de crochets
[]
, accolades{}
ou parenthèses()
du tout dans celui-ci:La sortie est:
la source
set s to s as list
transforme"H"
en{"H"}
(une liste). Dans d'autres langages, comme Java, il est généralement beaucoup plus compliqué de le faire.Frapper
Cette sorte de travail, si vous plisser les yeux:
la source
banner Hello World
oufiglet Hello World
,
et!
. Sinon, je n'utiliserais que du vieuxecho
.base64
Satisfait les règles d'origine.
la source
"
Python
Alors quoi, nous supposons juste que tout le monde lit horizontalement? Pour les utilisateurs qui aiment lire verticalement:
la source
sys.stdout.write
est le moyen standard de générer du texte sans nouvelles lignes dans la plupart des versions sur Python (le comportement est légèrement modifié dans la version 3.0). Nous ne pouvons pas faire cela ici à cause des périodes.Polyglotte: HQ9 +, H9 +, HQ9 ++, CHIQRSX9 +, HQ9 + B et HQ9 + 2D (1 octet)
Merci @victor pour la liste des langues.
la source
OMGROFL
Je suis un grand fan des langues ésotériques. Heureusement, OMGROFL est alphanumérique:
La
iz
commande définit une valeur sur une variable, dans ce caslol
,lool
etloool
sert de variable ...La
rofl
commande renvoie l'équivalent ASCII au nombre stocké dans la variable.La
stfu
commande termine le programme;)la source
COBOL
Quelques modifications nécessaires pour devenir une source véritablement alphanumérique uniquement.
PROGRAM-ID peut être supprimé. Vous obtenez un nom de programme généré (voir les messages).
WORKING-STORAGE peut être abandonné. Encore une fois, le compilateur gémit.
Étant donné que les deux lignes précédemment manquaient de points / points manquants, qui ne sont plus pertinents maintenant que les descriptions sont totalement manquantes, le nombre de messages d'erreur est le même qu'auparavant et n'affecte toujours pas le code généré pour le programme.
En remplaçant COMP-5 par COMP, les clauses VALUE ne sont plus autorisées, car COMP 9999 ne comporte que quatre chiffres décimaux, tandis que COMP-5 est un fichier binaire à deux octets avec toutes les valeurs de bits disponibles.
Les valeurs dans les MOVE sont les valeurs décimales qui donnent les valeurs binaires qui donnent les paires de caractères.
Même si les champs COMP comportent quatre chiffres et n'autorisent pas les clauses VALUE comportant plus de quatre chiffres, vous pouvez utiliser plus de chiffres dans le déplacement d'une valeur littérale sans troncature à ce stade ... ne me demandez pas pourquoi. L'option du compilateur DIAGTRUNC (que j'ai désactivée) produira des diagnostics d'avertissement pour ceux-ci.
L'option de compilation TRUNC (BIN) peut être utilisée pour traiter COMP comme COMP-5, mais les MOVE sont un autre moyen de le faire.
Comme il s'agit de COBOL, la sortie doit être en majuscule (un mensonge, mais juste pour le fun).
OK, cédé, produit maintenant:
Qui, étant un nombre impair de caractères, a nécessité quelques modifications supplémentaires, car nous ne pouvons pas avoir de champs binaires avec un nombre impair avec ce compilateur. Regardez cette ligne de 13 X! Ce serait normalement écrit comme X (13), mais peut être comme je l'ai montré ...
Et ORTEXT est nécessaire (ou pas OR, de toute façon) comme nom car OR est un mot réservé au compilateur (cela signifie OU, bien sûr).
Il s’agit de valeurs EBCDIC et non ASCII, car il s’exécute sur une boîte compatible EBCDIC et Big Endian.
Oh, COBOL nécessite beaucoup de points / périodes. Je les ai laissés de côté (ils sont bannis) donc j'ai reçu beaucoup de messages de compilation. Je viens de dire au compilateur de générer le code de toute façon (aucun des messages ne concerne le code de l'objet).
Même sans DIAGTRUNC, les messages sont maintenant à 17 ...
la source
-
soit permisRuby (n'utilisant que des alnums et des espaces)
Sortie:
Hello, World!
la source
Javascript
Utilisez la console du navigateur pour tester.
la source
JavaScript
la source
ferNANDo
la source
Rebol
Seule solution alphanumérique:
Ci-dessus est une mise à jour qui utilise le Dr Rebmu excellente suggestion de
add space 1
(qui produit!
) pour obtenir tous les caractères.Ci-dessous la version originale:
Version plus courte avec crochets:
Et même version plus courte avec des accolades:
Et la version la plus courte avec les deux supports et accolades:
Rebol utilise des accolades
{}
pour les devis multilignes. Tellement valide sous les changements de règles mais pas tout à fait dans l’esprit (IMHO) comme mes deux premières réponses ci-dessus.NB L'impression
!
était pénible!Rebol autorise et utilise régulièrement des caractères de ponctuation pour les noms de fonction et les types de données. Ainsi, des options telles que
to-char 33
outo char! 33
non autorisées par les règles (même si ces ponctuations ne sont pas des opérateurs en soi).Heureusement, j’ai trouvé un moyen effronté en transformant l’objet système Rebol:
make object! [...]
en une chaîne que l’on choisit comme point de!
départ :)Mise à jour: Et maintenant, choisissez aussi une virgule dans le texte de licence de l'objet système.
la source
!
n'est pas autorisé-
ou!
vous pouvez maintenant retirer le voteC
Utilise uniquement des caractères alphanumériques, des espaces et des accolades {}, des crochets [] et des parenthèses ().
printf () accepte un caractère * comme argument, mais comme nous ne pouvons pas utiliser de guillemets ("), je transtype la chaîne sous la forme d'un tableau long-long. Les valeurs observées ici sont des chaînes ASCII, en little endian (0x48 = H, 0x65 = e, 0x6c = l, etc.) Je transtype le texte en long long [], car je peux ainsi passer un argument de 8 octets et utiliser uniquement deux appels printf () au lieu de quatre.
la source
BBC BASIC
Emulator sur bbcbasic.co.uk
Séparer de ma réponse au LOGO.
Le moyen facile
Les chiffres à droite ne sont que des codes ASCII. Ceci est identique à l'impression. Si on me permettait une virgule je pourrais le faire sur une seule ligne (
VDU 72,101,108,etc.
)Une manière plus créative
la source
Mathematica
la source
DC
DC est à peu près l'outil idéal pour ce travail.
La commande de
P
contrôleurs de domaine extrait un numéro de la pile et envoie sa représentation informatique brute à STDIO. See as5735816763073854918203775149089 = 0x48656C6C6F2C20576F726C6421
, qui est représenté comme0x21, 0x64, 0x6C... = 'H', 'e', 'l'...
dans une architecture little-endian, il génèreHello, World!
.la source
16i48656C6C6F2C20576F726C6421P
JavaScript!
Et ils ont dit que cela ne pouvait pas être fait ... Pas d'opérateurs d'affectation, pas de concaténateurs, pas de guillemets! Arghhhh!
Ne crains pas ... Car la force c'est
with
toi ...la source
Javascript
Mise à jour: Géré pour couper un tas de caractères en introduisant une fonction World.
Une autre solution Javascript qui écrit sur console.log:
Inspiré par cette entrée .
Premièrement, je définis des fonctions nommées Hello et World. Cela sera utilisé plus tard.
Ensuite, je commence ma chaîne de fichiers imbriqués. Les
with (console)
etwith (String)
sont utilisés pour que je puisse ultérieurement invoquerconsole.log
etString.fromCharCode
sans utiliser de point.Le plan est maintenant de construire la chaîne
Hello, World!
en abusant des imbriqués avec. Chaque fois que j'appellerai concat (), la chaîne résultante sera le contexte du prochain bloc with. Je prends un raccourci pour obtenir rapidement"Hello"
en accédant à laname
propriété de laHello
fonction. Ensuite, je concatène les caractères virgule et espace en utilisantString.fromCharCode
.L'astuce suivante consiste à obtenir la
"World"
partie de la chaîne. Je ne peux pas utiliser la même méthode que j'avaisHello
, car je ne peux pas appeler World.name. Au lieu de cela, je mets cette logique dans la méthode World et l'invoque.Enfin, j’ajoute le dernier point d’exclamation et envoie le résultat directement à la fonction log, qui est bien sûr console.log.
la source
Perl
Dans un Perl moderne (5.10 ou plus récent):
Dans les anciens Perl:
Les deux solutions ci-dessus utilisent un
q
opérateur de type citation Perl et permettent aux délimiteurs sélectifs de citer une chaîne, par exemple.q{}
q[]
q()
q//
Cette solution nécessite le changement de règle qui autorise les accolades, les crochets ou les parenthèses. Ainsi, bien qu’il soit tout à fait valide, je pense que l’
mniip
excellente réponse de Perl correspond davantage à l’esprit des règles (+1).Cependant,
mniip
ma solution pourrait prendre la forme suivante:et bien que cela soit plus dur pour les yeux, cela fonctionne.
la source
syntax error at -e line 1, near "say chr"
Perl
la source
Python:
provoque "Bonjour, le monde!" apparaître sur votre écran. Ne me crois pas? Essayez vous-même! En outre, cela n'utilise pas réellement le Web, il ouvre un navigateur, qui pourrait rechercher un site Web.
la source
dc, (26 octets pour les golfeurs)
Les espaces et les
[]
crochets sont maintenant autorisés:Sortie:
la source
Rebmu , 46 caractères
Fortement parallèle à la solution de @ dragetun dans Rebol (Rebmu étant un outil pédagogique Rebol / Red qui est un "dialecte" qui vise à attirer l'attention sur les langues en basculant sur Code Golf. :-P)
Cependant, pour obtenir les personnages manquants, j'ai fait quelque chose de plus évident. Je viens d'ajouter l'espace, au lieu d'aller chercher dans les chaînes du système. Vous pouvez obtenir un espace supplémentaire 1 pour obtenir le caractère littéral # "!" et ajoutez un espace 12 pour obtenir le caractère littéral # ",".
Si nous courons cela, nous pouvons le voir devenir "sans ambages":
Ce qui est assez logial:
la source
Espace blanc
Ok, nous pouvons utiliser des espaces. Il utilise seulement
Space
,Tab
,LineFeed
et ne tient pas compte des autres personnages.Avec commentaire:
S
,T
ouL
moyenSpace
,Tab
ouLineFeed
respectivement.Avec en surbrillance: http://en.wikipedia.org/wiki/Whitespace_(programming_language)#Sample_code
la source
T-SQL, 52
Ah, c'est mieux! Conversion binaire directe, seulement 52 caractères.
Précédemment...
Il existe une solution beaucoup plus astucieuse et plus golfeuse qui fonctionnerait si nous pouvions utiliser
=
et+
(Rechercher des données intégrées standard dans msdb et les utiliser pour construire une chaîne de requête exécutable avec EXEC)Mais puisque nous ne pouvons pas, vous obtenez cette approche naïve:
la source
Python:
Pfff, qui a besoin de la partie numérique de alphanumérique?
Cela dépend des paramètres régionaux, donc votre kilométrage peut varier. Toutefois, si vous souhaitez vraiment répliquer ce résultat, vous pouvez utiliser les instructions suivantes à la place des instructions d'importation:
(cela ne fait pas partie de ma soumission, je partage simplement mes sections locales pour en améliorer le caractère reproductible)
la source
J - 73 caractères
Cela peut être fait, après tout!
Voici la chose à propos de J. La plupart des primitives sont la ponctuation ASCII, suivie de deux points ou deux points au maximum. Les primitives qui ne sont pas faites de ponctuation sont un caractère alphanumérique suivi de deux points ou deux points. Donc, nous ne sommes autorisés à rien, sauf pour
{ } [ ]
.[
et]
sont des verbes d'identité et sont donc inutiles.Heureusement,
{
les tableaux d'index, donc si nous avions, par exemple, une chaîne avec chaque caractère ASCII (a.
appelé Alphabet ), nous pourrions extraire les lettres par leurs points de code ASCII. Nous avons également une méthode de sauvegarde pour créer des chaînes ,0 : 0
puis des trucs, puis un seul)
; le côlon où possède un alias dans la bibliothèque standarddef
.Ensuite, il y a un verbe dans la bibliothèque standard
show
, qui vous donne la représentation interne d'un verbe si vous lui transmettez le nom sous forme de chaîne. Il y a un autre verbe,do
qui va évaluer une chaîne. Donc, si nous pouvons sortira.
d’une telle représentation, nous pouvons l’évaluer et le retirerHello, World!
.Notre sauveur se présente sous la forme de
take
, un pseudonyme{.
qui a una
dans son nom.show'take'
reviendratake=: {.
, alors nous avons notrea.
et donc une solution.Nous pouvons nous en débarrasser
{
en utilisant l’équivalentpick
de la bibliothèque standard, mais le paren à la fin ne peut être évité.la source