Écrivez un programme qui ne prend aucune entrée et imprime Hello, World!
sur stdout ou l'alternative la plus proche de votre langue. Le hic, c'est que chaque ligne de votre programme ne doit contenir que des caractères ASCII imprimables et elle doit être dans l'ordre lexicographique, c'est-à-dire triée.
Voici les 95 caractères ASCII imprimables dans l'ordre:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Ainsi, par exemple, la ligne !!A0~
serait invalide car les A
et 0
sont en panne. La ligne !!0A~
serait valide.
Chaque ligne de votre programme peut être de n'importe quelle longueur et il peut y avoir un nombre quelconque de lignes. Les lignes vides sont considérées comme triées. Chacune des nouvelles lignes de votre programme doit être la même (pas de mixage \n
et \r\n
). Les tabulations et autres caractères ASCII non imprimables sont interdits.
En raison de la demande populaire , la condition de gain a été inversée:
la soumission avec le moins de lignes gagne. Tiebreaker passe au programme le plus court (les nouvelles lignes comptent comme des caractères uniques).
Uniquement Hello, World!
et une nouvelle ligne de fin facultative doit être sortie. Notez que HQ9 + n'est pas valide car il sort hello, world
. Je peux interdire les langues similaires à HQ9 + qui ont un caractère "Hello, World!" commandes en raison de leur trivialité.
Allusion:
C'est certainement possible en Unary et en Lenguage , mais pas de manière très concise.
la source
Réponses:
Headsecks , 1 ligne, 366 octets
Headsecks est une substitution Brainfuck triviale où la seule chose qui compte est le point de code modulo 8. L'équivalent Brainfuck est simplement
Heureusement , cette approche naïve juste convient. Il existe un certain potentiel pour jouer au golf sur les octets, mais cela pourrait être difficile.
Testé à l'aide de cet interpréteur Python .
Génération de code
la source
/// , 7 lignes, 22 octets
Une rare chance pour /// d'être compétitif (enfin tant que personne ne commence par Unary et Lenguage ...).
Le code rencontre d'abord a
/
et analyse lecomme instruction de substitution qui supprime toutes les nouvelles lignes du reste du programme. Ensuite, le programme lit simplement
qui est imprimé textuellement car il ne contient plus de barres obliques.
la source
JavaScript (
676662 lignes,227269 octets)(Remarque: testé uniquement sur Firefox 36 et Safari 8, contient des fonctionnalités ES6 mineures (la
Set
classe))Le code ci-dessus fait essentiellement:
De toute évidence
alert
n'est pas trié. Donc, à la place, nous devons générer l'instruction sous forme de chaîne et la "valider":Comment générer la chaîne? ES5 prend en charge la continuation de ligne afin que
Mais le code de caractère
\
apparaît avant toutes les lettres minuscules, nous devons donc générer les lettres minuscules en utilisant d'autres méthodes.Nous empruntons ici une idée de JSFuck . Les lettres minuscules impliquées dans les alertes sont:
tous ces éléments peuvent être extraits de caractères d'objets standard, qui peuvent être exprimés en termes de séquence triée:
Comment évaluons-nous la chaîne? Nous ne pouvons certainement pas l'utiliser
eval(s)
car il n'est pas trié. Alternativement, nous pourrions utiliserFunction(s)()
, mais nous ne pouvons pas utiliserFunction
car il n'est pas trié non plus. Cependant,Function
est le constructeur de toutes les fonctions, ce qui signifieSet.constructor === Function
.L'ajout de l'identifiant
constructor
fait de la liste des lettres minuscules:qui pourrait heureusement encore être généré par
"truefalseundefinedfunction"
:Après avoir amélioré, le code ci-dessus devrait se lire comme suit:
Mise à jour: Rebaptisé
E
,L
,O
,R
,T
à diverses répétitions de$
réduire de 4 lignes.la source
=Z[3*7]
peut être écrit comme=Z[~-22]
ayant besoin d'un seul saut de ligne au lieu de deux.Insomnie , 4 lignes, 59 octets
Ce programme est généré en optimisant le nombre de lignes.
10 lignes, 43 octets
Ce programme ci-dessus est généré en optimisant le nombre d'octets.
la source
Cygwin bash, 16 lignes, 60 octets
Cela ne fonctionne qu'en raison du nom de fichier insensible à la casse sous Windows et du fait que Cygwin recherche les utilitaires sans tenir compte de la casse même si vous ne le définissez pas pour reconnaître le chemin sans tenir compte de la casse.
Prenez note de cela
ECHO
à la fin.la source
> <> , 6 lignes, 111 octets
J'ai du mal à jouer une ligne supplémentaire, mais en tout cas, je suis heureux d'avoir battu la méthode à 7 lignes.
Explication
> <> est un langage 2D basé sur la pile où les instructions sont des caractères uniques et le flux du programme peut être en haut, en bas, à gauche ou à droite. L'
"
instruction bascule l'analyse de chaîne, poussant les caractères jusqu'à ce qu'une fermeture"
soit atteinte, mais en raison de la nature de> <>, il n'y a rien de tel que "l'analyse de chaîne multi-ligne" comme avec les chaînes de CJam ou les chaînes entre guillemets triples de Python. Cela s'est avéré être un problème majeur car le début et la fin d'une ligne avec a"
et le fait d'avoir d'autres caractères entre (par exemple"some chars"
) n'est pas autorisé!Notez cela
/
et\
reflétez le flux du programme, donc nous exécutons en fait la première ligne puis toutes les lignes dans l'ordre inverse, et la plupart des lignes sont en fait exécutées à l'envers!Sur une note latérale, voici une tentative amusante de> <> moins d'octets (23 lignes, 47 octets):
la source
CJam,
54 lignes, 162 octetsMême nombre de lignes que l'insomnie! (mais beaucoup plus d'octets)
Essayez-le en ligne .
Explication
CJam imprime automatiquement la pile par la suite.
Merci à @Optimizer de m'avoir rappelé que ça
Sc
marche, car sinonSX|
ça échoue (ça fait un setwise ou à la place, en donnant le tableau composé d'un espace et 1).la source
> <> (Fish) , 5 lignes, plusieurs octets
Le code est extrêmement long, quand je dis
[6535529689086686142930090 '+' signs]
et[6535529689086686142930090 'd' characters]
dans la première ligne du code, je veux dire qu'il y a littéralement des6535529689086686142930090
signes plus dans une rangée!(Et pour les lignes suivantes, ajoutez les espaces de préfixe nécessaires.)
Une alternative testable plus courte qui imprime uniquement
Hi
:Méthode:
:1(?;:882**%:o-288**,
.(Nous pouvons imprimer une chaîne longue arbitraire de 2+ caractères avec cette méthode.)
la source
[6535529689086686142930090 '+' signs]
et[6535529689086686142930090 'd' characters]
littéralement dans la première ligne du code." (Si vous nePHP (7/17 lignes, 36/59 octets):
En raison du nombre de réponses invalides, j'ai réécrit cette réponse.
La version du navigateur? Disparu.
Mais j'ai 2 solutions, toutes deux basées sur bitwise
xor
(^
) de chaînes en PHP.C'est une solution extrêmement puissante! Parfois, cela permet d'économiser beaucoup d'octets.
Tout d'abord, la réponse la plus courte:
Je sais, ça a l'air horrible, mais ça marche!
Le prochain dépend des nouvelles lignes.
Oui, il utilise des sauts de ligne (le
\n
style / UNIX est requis)!Les nouvelles lignes sur celui-ci sont nécessaires pour fonctionner.
Ce n'est pas parfait, mais ça marche!
Les deux réponses étaient basées sur la solution de @ MartinBüttner :
Un merci spécial à @ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ , @CJDennis , @ MartinBüttner et @skagedal pour avoir détecté toutes mes erreurs et pour leurs suggestions.
la source
Hello , Wor l d !
. Notez les espaces supplémentaires! Ce n'est malheureusement pas une réponse valable.<?php
est invalide! Cependant, je vous pardonne pour cela! OK, je viens de tester<?Php
ce qui fonctionne, donc je viens d'apprendre que la balise de démarrage est insensible à la casse!"!<br
- ce n'est pas trié. Le second a comme ligne 10:."!
- non trié.Pyth, 7 lignes, 23 octets
Assez simple, utilisez simplement une chaîne multiligne et supprimez les retours à la ligne.
Essayez-le ici.
la source
Forth, 41 lignes, 143 octets
Essayez-le en ligne.
Je suis très fier de ça. Je l'ai fouetté assez rapidement une fois que j'ai trouvé que je pouvais le faire, après avoir recherché Google pour les langues insensibles à la casse, et je connais déjà Forth décemment. Il peut presque certainement être raccourci, à la fois en octets et en lignes. Les suggestions sont appréciées. :RÉ
Ce programme pousse essentiellement la valeur décimale de chaque caractère ASCII, puis imprime chacun. J'ai essayé d'optimiser pendant que je l'écrivais, il est donc moins lisible que je ne le souhaiterais.
la source
Emit
lignes ne fonctionnent pas, cari
(105) est inférieur àm
(109).Marbelous, 9 lignes, 94 octets
Testez-le en ligne ici.
Using spaces for blank cells
doit être vérifié.Représentation visuelle de la source:
Explication: Chaque valeur hexadécimale de ce programme se déplace vers le bas à chaque "tick" (sauf si elle est activée
\\
, auquel cas elle se déplace vers la droite).++
va incrémenter la valeur,--
décrémenter,~~
appliquer un pas au niveau du bit, etc. Les valeurs qui tombent du bas sont imprimées sous forme de caractère ASCII.Par exemple: le
33
dans le coin supérieur devient(((0x33 +1 +1) << 1) +1 +1 = 0x6C (l)
.la source
Perl, 17 lignes
la source
Rebol - 15 lignes (51 octets)
Les mots dans Rebol sont insensibles à la casse (par exemple
PRINT
,Print
etprint
appellent tous la même fonction).Le code ci-dessus rangé:
NB.
sp
renvoie le caractère spatial !la source
{
il ne peut pas être précédé de lettres.{,}
. C'est maintenantSp + 12
(sur 3 lignes) qui équivaut à un espace + 12 (c'est-à-dire une virgule)Unaire , 1 ligne, beaucoup d'octets
Chaque personnage de ce programme l'est
0
. La source est trop longue pour être insérée ici, mais elle se compose d'une chaîne de ce nombre de zéros:Voici la représentation décimale de ce nombre binaire:
Qui a été créé à partir de ce programme BrainF ***:
Voir comment je l'ai généré: http://ideone.com/lMT40p
la source
Lot - 39 lignes (202 octets)
Je voulais réduire la taille en permettant une expansion retardée en exécutant le code à l'intérieur d'un
cmd
appel à l'aide du/v on
commutateur, mais je n'ai pas pu dépasser tous les carats.Sans les sauts de ligne (et carats pour échapper aux sauts de ligne):
la source
Ruby, 19 lignes, 95 octets
Peut-être la deuxième restriction de code la plus difficile pour Ruby que j'ai vue sur ce site, après la monstruosité ici .
Modifier pour explication: La seule méthode de sortie Ruby qui est triée est la
<<
méthode sur STDOUT. Malheureusement, la constante de STDOUT est$>
, et>
est ASCII plus élevée que la plupart des symboles, il n'est donc pas vraiment possible d'appeler une méthode dessus. Nous avons besoin d'une instruction d'affectation sur plusieurs lignes pour l'intégrer dans un nom de variable plus traitable$;
(le point-virgule est encore assez élevé, mais la plupart des variables de ce formulaire sont soit non assignables, soit uniquement des chaînes).Les symboles (
:Wor
, etc.) sont le moyen le plus simple de faire un littéral, et je ne vois pas de moyen de supprimer les retours à la ligne d'une chaîne, j'ai donc besoin de plusieurs instructions d'impression. L'espace et la ponctuation ne peuvent pas entrer dans un littéral de symbole, mais heureusement, lachr
méthode sur les nombres est légale, donc je peux obtenir un caractère de sa valeur ASCII.::
est une autre façon d'appeler les méthodes. L'espace est délicat car je ne peux pas écrire32
, donc je soustrais 1 de 33 et je l'assigne à une variable.la source
Rétine, 12 lignes, 29 octets (non concurrentes)
La langue est plus récente que le défi.
Essayez-le en ligne
la source