Votre travail est assez simple, écrivez un programme qui imprime Hello, world!
, qui une fois tordu crée un programme qui imprime Twister!
.
Comment les cordes sont tordues
L'algorithme de torsion est très simple. Chaque colonne est décalée vers le bas par son index (col 0 descend 0, col 1 se déplace 1, ...). Le décalage de colonne se déplace vers le haut. Cela ressemble un peu à ceci:
a
ba
cba
----
cba
cb
c
Avec tout sous la ligne enveloppant vers le haut. Exemple réel:
Original:
\\\\\\\\\\\\
............
............
............
Twisted:
\...\...\...
.\...\...\..
..\...\...\.
...\...\...\
(D'autres exemples et quelques twisters dans votre langue préférée sont ici )
Notation
Votre programme doit être un rectangle matelassé. C'est le code-golf donc le nombre d'octets le plus bas gagne!
Règles
- Votre premier programme doit s'imprimer
Hello, world!
. Une seule nouvelle ligne de fin est autorisée. - Vos premier et deuxième programmes doivent être dans la même langue.
- Votre deuxième programme doit s'imprimer
Twister!
. Une seule nouvelle ligne de fin est autorisée. - Votre programme doit avoir au moins 2 lignes et 2 colonnes.
½
et prend la racine carrée d'un nombre. Lequel des deux devrait être considéré comme la nouvelle ligne pour ce défi?Réponses:
Gelée ,
333129 octetsOriginal
Essayez-le en ligne.
Tordu
Essayez-le en ligne!
Comment ça marche
Dans chaque programme, chaque ligne définit un lien. Le dernier est le lien principal, et il est exécuté au démarrage du programme. Puisqu'il n'y a aucune référence au premier lien, il est simplement ignoré.
Pour les deux programmes,
“ɗ⁻%OḶ$“¡¦ḟṠ»
donne la liste['Hello, world!', 'Twister!']
, en utilisant la compression de dictionnaire statique de Jelly .La seule différence entre le code original et le code torsadé est le dernier caractère du lien principal.
Ḣ
sélectionne la première chaîne de la liste etṪ
sélectionne la dernière.la source
Python 2, 59 octets
Tordu:
Fondamentalement, place les
Twister!
données dans les indices impairs de la chaîne, puis passe de la suppression des deux premiers caractères (remplissage) à la suppression de tous les autres caractères à la place.la source
print " Hello, world!" [2::]
Fission ,
215162565350 octetsVoici un début:
Essayez-le en ligne!
Lorsqu'il est tordu:
Essayez-le en ligne!
Explication
Le
Hello, world!
code est assez simple:D
engendre un seul atome, descendant.\
(miroirs) le dévient sur la deuxième colonne."Hello, world!"
imprime la chaîne requise.1
est un portail. Il téléporte l'atome au suivant1
dans l'ordre de lecture, en conservant sa direction (c'est celui à côté dur
).;
qui détruit l'atome et termine le programme.Le flux de contrôle du
Twister!
code est un peu plus ... tordu ...D
naissance à l'atome.\
le dévie vers la droite, dans le1
.1
. L'atome frappe leo
qui change juste sa masse, mais nous pouvons l'ignorer. Le code s'enroule pour que l'atome frappe de1
nouveau la même chose , sautant deux lignes. Encore une fois, nous pouvons ignorer lel
, l'atome s'enroule et frappe à1
nouveau. Maintenant, il n'y a plus1
dans le code, donc l'atome saute tout en1
haut.\
, puis redescend."Twister!"
imprime le code requis.1
téléporte l'atome une fois de plus, après le premier;
, mais il y en a un autre qui;
attend qu'il termine le programme.la source
Fission , 35 octets
Approche de la fission # 3 (# 4 en comptant celle que j'ai éditée de mon premier post).
Essayez-le en ligne!
Essayez-le en ligne!
Explication
Celui-ci est en fait la plus simple des solutions de fission à ce jour. Dans les deux programmes, il y a deux points d'entrée:
R
crée un atome de droite etL
un atome de gauche. Dans les deux cas, le;
détruit immédiatement l'un d'eux.Maintenant dans le
Hello, world!
programme, l'atome imprime d'abord la moitié de la chaîne avec"Hello, "
, puis\
et/
(qui sont des miroirs) dévient l'atome sur la deuxième ligne à gauche."world!"
(lu dans le sens de l'atome en mouvement) imprime le reste de la chaîne.L
est maintenant un no-op et;
détruit également cet atome, mettant fin au programme.Le
Twister!
programme est essentiellement le même mais tourné de 180 degrés. Cette fois, l'L
atome survit et commence à imprimer avec"Twist"
. Le\
et le/
dévie à nouveau sur l'autre ligne, maintenant à droite."er!
imprime le reste de la chaîne,R
est un no-op et;
termine le programme.la source
Fission, 53
Essayez-le en ligne!
et tordu:
Essayez-le en ligne!
la source
Japt,
676157 octets6 octets enregistrés grâce à @JAtkin, 4 octets grâce à @Ian
Tordu:
Testez-le en ligne: Original , Twisted
Comment ça marche
la source
Twister!
en remplaçant les espaces par.
."T.w.i.s.t.e.r.!. . . . . "k".(newline)"H.e.l.l.o.,. .w.o.r.l.d.!"k".
Python, 398
414 380 456octets *J'ai réussi à mettre à jour pour qu'il soit conforme aux règles, mais j'hésite toujours à appeler cela compétitif. Étant donné que les lignes commentées sont nécessaires pour qu'il s'exécute, je les ai incluses dans le nombre d'octets
Cette solution ne suit pas les règles, car elle affichera des messages d'erreur en plus de la sortie autorisée.Je voulais juste voir si cela pouvait se faire en python. C'est possible, mais ce n'est pas joli.
Quand tordu devient
la source
rint '
sur chaque ligne.C (gcc) , 87 octets
Sans torsion
Essayez-le en ligne!
Tordu
Essayez-le en ligne!
la source
Brainfuck,
467367285 octetsSans torsion
Essayez-le en ligne!
Tordu
Essayez-le en ligne!
la source