Ecrivez un programme qui affiche "Hello, World!". Mais aussi, si vous ne prenez que les premier, troisième, cinquième, etc. caractères de votre programme, le programme résultant devrait quand même afficher "Hello, World!".
Si votre programme est:
abc
def
Il devrait produire "Hello, World!", Mais il devrait en être de même
acdf
Aucune solution avec moins de 2 caractères.
code-golf
string
source-layout
hello-world
radiation-hardening
Leo Tenenbaum
la source
la source
Réponses:
Python 3 , 61 octets
Essayez-le en ligne!
Abuser du fait qu’il s’agisse d’
print
une fonction de Python 3 :)La solution la moins partisane que vous trouverez ici sur PPCG.
Devient
la source
[:]
réellement travaillé: o Nice!Cardinal , 29 octets
Essayez-le en ligne!
Supprimer tous les autres caractères supprime tous les sauts de ligne, ce qui entraîne toujours
Hello, World!
:Essayez-le en ligne!
Cela fonctionne parce qu'il
%
crée quatre indicateurs d'instruction, se déplaçant dans chacune des quatre directions cardinales. Les IP qui laissent le code source sont simplement supprimées. Ainsi, dans le premier cas, seule la propriété intellectuelle allant du sud reste et dans le second cas, seule la propriété intellectuelle allant vers l'est, tous les autres sont simplement abandonnés. Dans les deux cas, le programme exécuté est alors juste"Hello, World!
. Les"
bascule en mode chaîne où chaque cellule est simplement imprimée sur STDOUT. Nous n'avons pas besoin de terminer la chaîne, car laisser le code source met toujours fin au programme.Notez que la même idée fonctionne dans Beeswax , en utilisant
*
au lieu de%
et`
au lieu de"
(c’est parce que la cire d’abeille a été largement inspirée par Cardinal mais utilise une grille hexagonale).Essayez-le en ligne! (vertical) | | Essayez-le en ligne! (horizontal)
la source
C, 125 octets
Essayez-le en ligne!
Même avec les caractères supprimés:
Essayez-le en ligne!
la source
En fait , 2 octets
Explication:
H
, comme on pouvait s'y attendre, pousseHello, World!
à la pile.Le programme principal (
HH
) rencontrera le premierH
et pousseraHello, World!
dans la pile. Sur le secondH
, cependant, il essaiera d'utiliser deux arguments (car la pile doit être vide pour pousserHello, World!
) et échouera. Cependant, cette erreur sera ignorée etHello, World!
sera ensuite implicitement imprimée.Le second programme (
H
) pousseraHello, World!
une fois, et sera implicitement imprimé.Ceci est similaire à la réponse à 2 octets de Fatalize, mais cela ne "triche" pas vraiment.
Essayez-le en ligne!
la source
H
ne pousserait queHello, World!
sur une pile vide, et si la pile n'est pas vide, elle attendrait 2 arguments, donc il y aura une erreur et les erreurs sont ignorées. Et non, en fait, n'imprime pas implicitement uniquement l'élément le plus haut.Lua , 89 octets
Essayez-le en ligne! Comme le montre la coloration syntaxique, il s'agit d'un abus de commentaire massif.
Alterner:
Essayez-le en ligne!
Et pour plus de commodité, un programme permettant de convertir un programme en toute autre forme de caractère: essayez-le en ligne!
la source
HHeelllloo WWoorrlldd!!
est un peu ennuyeux: PRetina , 39 octets
Essayez-le en ligne!
Prendre tous les autres personnages donne:
Essayez-le en ligne!
Le premier programme crée une chaîne avec le message d'accueil dupliqué. Ensuite, chaque paire de caractères est remplacée par le premier. Il y a aussi une scène vide qui remplace toutes les chaînes vides par des chaînes vides entre les deux, mais cela ne fait rien. Le second programme ne correspond pas à la lettre "x", il ne remplace donc rien après la création du message d'accueil.
Plus amusant peut-être, si la troisième étape est légèrement modifiée, le premier groupe de caractères ne doit pas nécessairement être identique. Cela pourrait conduire à de nombreuses solutions de longueur identique telles que complète et divisée par deux .
la source
Charbon de bois , 25 octets
Essayez-le en ligne!
Si vous supprimez les caractères pairs, vous supprimez simplement les commandes de flèche qui indiquent la direction du texte suivant, ce qui laisse le code suivant:
Essayez-le en ligne!
Cela imprime aussi la salutation.
la source
Haskell , 85 octets
Essayez-le en ligne!
Chaque deuxième caractère supprimé:
Essayez-le en ligne!
Cela exploite les deux formats de commentaire dans Haskell:
{- -}
pour les commentaires en ligne ou multi-lignes et--
pour commenter le reste de la ligne.la source
Javascript, 67 octets
Chaque seconde lettre enlevée:
Tout comme la réponse de Haskell dans Laikoni, cela exploite les commentaires.
la source
// * /
en//**/
(ce qui n’est malheureusement pas possible dans votre cas en raison du/**/alert`Hello, World`
nombre impair d’octets, au lieu de comme dans mon cas .Brachylog , 4 octets
Essayez-le en ligne!
Explication
~w
écrit sa variable de droite dansSTDOUT
, et ignore son argument de gauche.Ḥ
est"Hello, World!"
, donc cela imprimeHello, World!
.Si nous prenons uniquement les premier et troisième caractères, nous obtenons
Ḥw
. Dans ce cas,w
écrit sa variable de gauche et ignore sa variable de droite, ainsi il imprime égalementHello, World!
.2 octets
Essayez-le en ligne!
Ceci est techniquement une réponse valable, mais cela unifie la variable de sortie du programme au lieu de l’imprimer
STDOUT
, donc je suppose que le programme de 4 octets est plus dans l’esprit du défi.la source
Haskell, 102 octets
Le programme complet:
et avec tous les autres personnages supprimés:
la source
p u t S t r
et\"
.code machine x86, 162 octets
PROG.COM Téléchargez et exécutez-le dans un émulateur MS-DOS , DOSBox par exemple.
après enlèvement MINI.COM Télécharger
Comment courir?
Installer DOSBox pour Ubuntu / Debian
Exécuter
Dans DOSBOX
Comment ça fonctionne?
Les codes d'opération de la machine représentent les instructions en langage d' assemblage .
Dans MS-DOS, pour imprimer le caractère, vous allez définir des registres et effectuer des interruptions. Le registre AH sera 0x02, le registre DL contient votre caractère. Le vecteur d'interruption est 0x21.
Le petit modèle de fichier COM MS-DOS est un bon choix, car il n'a pas d'en-tête . Il est limité à 64K, mais dans notre cas, cela n’a pas d’importance.
Pour arrêter le programme, utilisez 0x20 interruption
la magie
Si vous voulez exécuter la commande 0xAB opcode avec un paramètre 0xCD , vous écrivez
Dans PROG.COM
Dans MINI.COM
Ce sont des codes machine égaux , si vous n'utilisez pas le registre BL .
Générateur
Convertir un fichier texte avec hex en hex binaire
Afficher l'extrait de code
la source
Pyth , 31 octets
Essayez-le en ligne!
Devient
Merci à @CalculatorFeline pour avoir signalé une erreur et supprimé un octet.
la source
V , 32 octets
Notez qu'il
<esc>
s'agit d'un seul caractère, par exemple0x1b
Essayez-le en ligne!
Supprimer tous les autres caractères donne:
Essayez-le en ligne!
la source
05AB1E , 29 octets
Essayez-le en ligne!
Explication
Après avoir supprimé tous les autres caractères, il nous reste le code
Essayez-le en ligne!
Explication
la source
Mathematica, 62 octets
Il revient
"0H0e0l0l0o0,0 0W0o0r0l0d0!0" Null P0r0i0n0t0[0]
et s'imprimeHello, World!
comme un effet secondaire. Lorsqu'il est exécuté en tant que programme (pas dans le REPL), la valeur de retour ne sera pas imprimée.Après avoir supprimé tous les autres caractères:
Il revient
Null ol! rn[Hlo]
et imprimeHello, World!
.la source
Gelée ,
26 à25 octetsEssayez-le en ligne!
Après avoir supprimé tous les deux caractères, il nous reste le code suivant.
Essayez-le en ligne!
Comment ça fonctionne
la source
Cubiquement v2.1 , 222 octets
Essayez-le en ligne!
Toutes les autres lettres:
Essayez-le en ligne!
la source
CJam , 32 octets
Essayez-le en ligne!
Prendre tous les autres personnages donne:
Essayez-le en ligne!
la source
Aidez-moi, WarDoq! , 2 octets
Essayez-le en ligne!
H
estampesHello, World!
,i
est un non-op.Aidez-moi, WarDoq! peut ajouter deux nombres et tester les nombres premiers, il est donc considéré comme un langage de programmation valide par cette méta publication .
la source
/// , 25 octets
Essayez-le en ligne!
Avec tous les autres personnages supprimés:
la source
PHP, 53 octets
Avec tous les autres personnages supprimés:
la source
Octave,
49 à45 octets4 octets enregistrés, Octave n’ayant pas besoin de crochets pour effectuer l’indexation.
Essayez-le en ligne!
Et le réduit:
Essayez-le en ligne!
Explication:
Le code initial a les lettres de la chaîne dupliquées, ce qui nous laisse le temps de
Hello, World!
supprimer chaque seconde. Des espaces sont ajoutés pour assurer le maintien des crochets et des apostrophes.L'indexation est vraiment
1:2:end
. Il y a 27 caractères, et nous ne pouvons pas utiliserend
ou27
puisque nous devons supprimer un caractère, nous allons donc avec3 ^ 3
. Lorsque nous supprimons tous les trois caractères, l'indexation devient(:)
(et quelques espaces supplémentaires).(:)
signifie "aplatir et se transformer en un vecteur vertical" . Nous devons donc le transposer, en utilisant'
. Nous n'avons pas besoin de transposer la chaîne dans le code d'origine, mais la transposition double fonctionne, donc la première chaîne est transposée deux fois à l'aide de''
et la seconde n'est transposée qu'une seule fois.la source
APL (Dyalog) ,
35 à34 octets-1 merci à Martin Ender.
Essayez-le en ligne!
'0H0e0l0l0o0,0 0W0o0r0l0d0!0'
le message avec des zéros comme caractères de remplissage amovibles~
sauf⍕
formaté (stringifié)0
numéro zéroNe laissant que les personnages étranges, cela devient
'Hello, World!'
.la source
T-SQL, 75 octets
Utilisation abusive de commentaires sur une ou plusieurs lignes, inspirée de la version LUA de CalculatorFeline .
Après suppression de tous les caractères pairs, dont certains sont des sauts de ligne:
la source
Javascript, 73 octets
Construit une chaîne
a
avec le contenua0l0e0r0t0`0H0e0l0l0o0,0 0W0o0r0l0d0!0`0/0/
, puis supprime tout0
à donneralert`Hello, World!`//
, qui esteval
'd.Prendre tous les autres personnages du programme donne
qui
Hello, World
utilise la syntaxe de chaîne de modèle de la même manière que ce qui a été évalué dans le programme complet, puis stocke le résultat de l'appela
et inclut le commentaire perspicace//;vlarpae//,')
.la source
> <> , 47 octets
Original:
A chaque deuxième caractère supprimé:
Essayez-les en ligne: original , modifié
Le programme original pousse les caractères de "Hello, World!" dans la pile (en ordre inverse) parsemé d'espaces, puis imprime alternativement un caractère et en supprime un jusqu'à ce que la longueur de la pile soit égale à zéro. Le deuxième programme fait de même, sauf que les instructions de suppression
~
ont disparu.Si cela ne vous dérange pas de vous arrêter avec une erreur, nous pouvons prendre une feuille du livre Cardinal de Martin Ender : le code modifié est
et l'original est le même mais avec des nouvelles lignes insérées entre tous les caractères, pour 39 octets. Essayez-les en ligne: original , modifié .
la source
,,, 34 octets
En supprimant les caractères pairs numérotés ...
Explication
Avec tous les personnages:
Sans les caractères pairs:
la source
Brainfuck, 155 octets
Essayez-le en ligne!
Chaque deuxième caractère supprimé:
la source
Gelée , 32 octets
Essayez-le en ligne!
-2 octets grâce à la réponse de @ totallyhuman
Maintenant, le mien est une dupe>. <
Remontez celui-là aussi: D
la source