Comme une sorte de partie 2 à Hello, World! (Un caractère sur deux) , écrivez un programme tel que ces trois programmes affichent "Bonjour, le monde!": Le programme entier, les 1er, 3e, 5e, etc. caractères de votre programme et les 2e, 4e, 6e, etc.
Si votre programme est:
abc
def
Il devrait afficher "Bonjour, monde!", Mais
acdf
Et
b
e
Pas de solutions avec le "Bonjour, monde!" Intégré.
code-golf
source-layout
hello-world
Leo Tenenbaum
la source
la source
Réponses:
code machine x86, 378 octets
PROG.COM Téléchargez et exécutez-le dans l' émulateur MS-DOS , DOSBox par exemple.
Vous pouvez également télécharger LEFT.COM et RIGHT.COM
Comment ça marche et comment courir
Voir la réponse à la première partie
la magie
Si vous souhaitez exécuter la commande opcode 0xAB avec un paramètre 0xCD , vous écrivez
Générateur
Exécutez le code, obtenez hex. Convertir en binaire
Afficher l'extrait de code
la source
Python 3 , 115 octets
Chaque personnage étrange
Chaque personnage pair
Essayez-le en ligne!
Cela pourrait probablement être beaucoup plus court, mais je suis heureux d'avoir réussi à le faire fonctionner en Python. Similaire à la réponse de vroomfondel dans la première partie.
Réponse ennuyeuse de 93 octets
Chaque personnage étrange
Chaque personnage pair
Essayez-le en ligne!
la source
> <> , 45 octets
Ou même des personnages:
Ou juste des caractères étranges:
Essayez - les en ligne: originaux , Evens , cote .
La version originale pousse "
!!ddllrrooWW oolllleeHH
" vers la pile, puis le poisson rebondit entre>~o <
, ce qui supprime une lettre, imprime deux, supprime deux, imprime deux, supprime deux, etc. Les deux demi-programmes sont des programmes d'impression de chaîne assez standard. La partie délicate consistait à combiner"
et!
à basculer correctement dans le mode chaîne dans les trois programmes.la source
Befunge-98 , 43 octets
Essayez-le en ligne!
Seuls les étranges:
Essayez-le en ligne!
Seuls les pairs:
Essayez-le en ligne!
Explication
Le programme complet:
Dans le programme étrange, le
2
est parti, de sorte que10x
cela ne fait vraiment rien du tout (il définit le delta(1,0)
auquel est par défaut de toute façon). Le reste du programme est alors le même.Dans le programme pair, nous poussons juste
2
le début que nous pouvons ignorer complètement. Le reste du programme est le même qu'avant.la source
Gammaplex , 46 octets
Vois ici.
Interprète. Il peut avoir besoin de quelques modifications pour fonctionner dans les compilateurs modernes.
la source
Mathematica, 65 octets
Il lance des avertissements, des impressions
Hello, World!
et des retoursNull PPrriinntt[["" HHeelllloo, Null, "" WWoorrlldd!!]]
. 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é les caractères pairs:
Il imprime
Hello, World!
et revient"el,Wrd" Null Pit
.Après avoir supprimé les caractères impairs:
Il imprime
Hello, World!
et revientNull ol! rn[Hlo]
.la source
code machine x86, 73 octets
Inspiré par la solution de Евгений Новиков , je pensais que cela devrait être faisable avec moins de trucs, c'est-à-dire en sautant simplement sur des codes autrement "disjoints" pour les trois variantes. J'essaie toujours avec une variante intelligente qui utilise
lodsb; lodsb
comme point central (donc une seule constante de chaîne est nécessaire pour toutes les variantes)Si je me souviens bien de mon enfance, le petit modèle de COM commence par
DS=CS=SS
et le code est chargé à partir deCS:0100h
. Je ne suppose pas qu'il est garanti que le code est chargé dans un bloc de mémoire mis à zéro (s'il était garanti, je pourrais laisser tomber deux octets).Le démontage du code long doit être
Démontage de code impair
Démontage du code pair:
la source
8A
at 0116 devrait être à laBA
place et les chaînes sont terminées par$
, pas NULL.Rétine , 48 octets
Essayez-le en ligne!
Positions impaires:
Essayez-le en ligne!
Positions paires:
Essayez-le en ligne!
Explication
Le programme complet:
Cela ne fait rien du tout. Ce
|
n'est pas une option de configuration existante. LeG
fait cette une étape grep, mais il n'y a vraiment rien à l'expression rationnelle et rassemblés de vide est tout, donc cela ne fait rien. Le but de cette étape est d'avoir deux sauts de ligne devant le principal "Hello, World!" ligne de sorte que l'un d'eux survit toujours à la réduction. La raison pour laquelle il s'agit d'un cerf grep est que nous devons compenser la parité des lignes, et les étapes grep ne nécessitent qu'une seule ligne.Cela transforme la chaîne de travail (vide) en sortie requise avec chaque caractère doublé.
Cela ne fait rien. Le regex essaie de faire correspondre a
_
et a&
après la fin de la chaîne, ce qui est bien sûr impossible. Nous aurons cependant besoin de ces caractères dans la version réduite, encore une fois pour faire face aux sauts de ligne disparus.Enfin, nous supprimons les caractères en double en les remplaçant
(.)\1
par$1
. Let?
n'est jamais utilisé mais sera de nouveau nécessaire dans les versions réduites.Le programme étrange:
Le
G
ne peut pas correspondre à l'entrée vide, mais c'est pourquoi nous devons|
autoriser une autre correspondance vide. Cela transforme la chaîne de travail vide en sortie souhaitée.Cela remplace les traits de soulignement par
()1?$
, mais il n'y a aucun trait de soulignement dans la chaîne, donc cela ne fait rien.Le programme pair:
Le
`
dénote juste une chaîne de configuration vide, nous utilisons donc à nouveau l'expression régulière vide pour remplacer la chaîne de travail par la sortie. Cette fois, nous insérons également$&
mais c'est le match lui-même, qui est vide, bien sûr, donc il ne fait rien.Cela remplacerait tout caractère suivi d'un onglet par un
1
, mais nous n'avons aucun onglet, il s'agit donc également d'un no-op.la source
Lua , 106 octets
Essayez-le en ligne!
Suppléant 1:
Essayez-le en ligne!
Alternative # 2:
Essayez-le en ligne!
Script alternateur: essayez-le en ligne!
la source
CJam , 44 octets
Essayez-le en ligne!
la source
PHP, 70 octets
Caractères étranges:
Caractères pairs:
la source
Haskell , 92 octets
Essayez-le en ligne! Il semble que l'abus de commentaire soit trop pour la mise en évidence de la syntaxe.
{- ... -}
est un commentaire en ligne ou sur plusieurs lignes, alors qu'il--
démarre un commentaire en ligne.Caractères étranges:
Essayez-le en ligne!
Caractères pairs:
Essayez-le en ligne!
la source
Zsh , 54 octets
Essayez-le en ligne!
Le programme principal exécute la première instruction avec succès, donc l'instruction après le booléen
||
est ignorée.Pour impair / pair, le
<<<Hello\ world!
devient soit un non terminé<<heredoc
ou un<file
fourni sur stdin. Dans tous les cas, le||
devient|
, et donc tout ce qui est sorti par la première commande est canalisé et ignoré parecho
.la source
LOGO , 71 octets
(le programme a une nouvelle ligne de fin)
Deux versions supprimées:
et
(le programme a une nouvelle ligne de fin)
Pour une explication quoi
pr
eter
faire, voir ce post . Dans ce cas,er
est alimenté avec un mot pour déterminer le nom de la procédure.Le
\
caractère d'échappement est dans Logo, qui échappera à la nouvelle ligne après la fin du commentaire, donc faites de la deuxième ligne (rHlo ol!e |
) du deuxième programme supprimé un commentaire.la source
Javascript, 68 octets
Caractères étranges:
Caractères pairs:
Version modifiée de ma réponse sur l'autre.
la source
l
inHHeelllloo
.Perl 5 , 61 octets
Code de 60 octets + 1 pour
-p
.Essayez-le en ligne!
Chaque octet impair
Essayez-le en ligne!
Chaque octet pair
Essayez-le en ligne!
la source
BotEngine ,
180178 octetsBasé sur ma réponse à cette question.
Caractères impairs (notez les multiples espaces de fin sur la dernière ligne):
Caractères pairs:
la source
Enchantements runiques , 52 octets
Essayez-le en ligne!
Runic n'est généralement pas très doué pour gérer les radiations, car le fait de retirer les caractères de contrôle de flux au hasard rend l'exécution du traçage très difficile, mais les radiations prévisibles comme tous les autres personnages? Facile, nous encodons simplement deux programmes qui sont inversés l'un de l'autre et entrelacés, puis clouons sur une troisième copie pour l'exécution de base et contrôlons laquelle est exécutée avec un seul caractère. Dans le programme 2, la troisième copie est une ordure qui n'a jamais été vue, et dans le programme 3, elle conserve les guillemets, ce qui lui permet d'être sauté sans l'imprimer.
Le programme 1 exécute uniquement cette partie:
Le programme 2 exécute uniquement cette partie:
Comme ça:
Essayez-le en ligne!
Le programme 3 exécute uniquement cette partie:
Comme ça:
Essayez-le en ligne!
La
"drW,le"
portion est exécutée, mais le~
sort immédiatement de la pile, préservant la sortie souhaitée.Naïvement, il semblerait qu'une conversion de la réponse> <> entraînerait un programme plus court, pesant 45 octets:
Cependant, Runic a une limitation que> <> n'a pas: une taille de pile maximale de 10 + mana IP (qui est initialement 10). Et
!!ddllrrooWW oolllleeHH
contient 24 caractères, provoquant une perte de mana de l'IP jusqu'à son expiration juste avant l'exécution de laR
commande, ce qui n'entraîne aucune sortie pour le programme de base.Essayez-le en ligne!
la source