Beaucoup de gens savent ce qu'est une machine à vérité dans la programmation. Mais il est temps que nous accélérions les choses. Présentation, la machine de vérité étendue! Une machine de vérité étendue prend deux choses en entrée, un entier n
et une chaîne non vide s
. Il génère des s
n
heures avec un espace de fin facultatif. Cependant, si n
est égal à 0
, vous devez produire s
jusqu'à ce que le programme soit arrêté manuellement, c'est-à-dire qu'il ne devrait jamais se terminer.
De plus, si n
est un nombre négatif, la chaîne doit être inversée. Par exemple avec s=hello
et n=-1
, la sortie serait olleh
.
Méthodes d'entrée standard, tout type de sortie tant qu'il peut gérer l'infini. Si vous avez une réponse qui ne gère pas l'infini, n'hésitez pas à la publier si elle est intéressante ou dans une langue qui ne peut pas gérer la sortie infinie.
Cas de test
n, s, output
5, "hello world", "hello worldhello worldhello worldhello worldhello world"
0, "PPCG", "PPCGPPCGPPCGPPCG..."
-2, "truThY", "YhTurtYhTurt"
2000, "o", "oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"
C'est le code-golf , donc le code le plus court gagne!
Voici la publication Sandbox originale. Des modifications y ont été apportées. Merci à @ComradeSparklePony d'avoir créé l'idée de ce défi
la source
-n
place deabs n
.PHP> = 7.1, 67 octets
Version avec
list(,$x,$y)
au lieu de[,$x,$y]
Essayez-le en ligne!la source
MATL , 37 octets
Essayez-le en ligne!
Explication:
la source
Python 3, 71 octets
Essayez-le en ligne!
La variable
k
garantit que la boucle est toujours exécutée au moins une fois. Cela signifie que sin=0
, alorsn
sera négatif à la prochaine itération de la boucle, la boucle continuera donc d'être exécutée indéfiniment.la source
Matlab, 87 octets
Ma première tentative de code-golf! Toutes les suggestions pour le golf sont les bienvenues.
la source
05AB1E ,
171614 octetsEssayez-le en ligne!
Explication:
2 octets enregistrés grâce à @EriktheOutgolfer
la source
'-å
par0‹
et0Q
par_
.Cubix , 41
quarante-quatre45octetsPrend l'entrée comme
<N> <String>
Essayez-le en ligne!
Cubifié:
Regardez-le courir
Il y a toujours une quantité de no-ops dans le code dont je pourrais peut-être obtenir quelques octets de plus, mais je voulais le faire avant de le casser.
La procédure de base est
I
obtenir le compteur de l'entréeA
prendre le reste de l'entrée en tant que caractères;p?
supprimer l'espace, augmenter le nombre et le testerpsuqB$)
si le compteur est négatif, inversez la pile. Cela implique la gestion du numéro d'entrée et du marqueur EOI (-1). Incrémentez le compteur.;p;ouqu
si le compteur est nul, retirez le compteur et le marqueur EOI et démarrez la boucle de sortie perpétuelle.(
si positif décrémenter le compteur<<q?/o()u
la boucle de sortie. Cela affichera chaque caractère de la pile jusqu'à ce que le marqueur EOI (-1) soit atteint.... _ ... ?wq!
à la fin du marqueur EOI, contournez le cube et réfléchissez à nouveau?
, changez de voie, déposez le marqueur EOI au fond et testez le compteur.@
si zéro, arrêtez?u(
si demi-tour positif et décrémentation, le vol finit par frapper le début de la boucle? ... <)
s'il est négatif, faites le tour du cube vers l'autre côté, redirigez-le vers le début de la boucle en passant sur un incrément./)<
si incrément négatif et continuer sur la boucle de sortiela source
JavaScript (ES6), 79 octets
Fragment:
la source
!n&&
à boucler infiniment. Cependant, cela atteindra-t-il finalement un StackOverflow?it should never terminate.
JavaScript (ES6),
98949183 octets-4, -5 octets grâce à Arjun
-3 octets grâce à Rick Hitchcock
Commencé différemment de la réponse Java , mais est rapidement devenu très similaire après le golf. L'alerte est infinie, mais si vous voulez qu'elle soit belle, passez à
console.log
.l=alert;
et l'écriturealert
sont de la même longueur, mais si vous basculez versconsole.log
c'est plus court pour le redéfinir.la source
while(!n)l(s)
au lieu deif(!n)for(;;)l(s)
.[...s].reverse()
au lieu des.split''.reverse()
l(s.repeat(Math.abs(n)))
au lieu defor
boucler enfin.QBIC , 36 octets
Beaucoup de choses ici, et QBIC / QBasic n'a tout simplement pas la syntaxe pour gérer ces conditions avec élégance.
Explication:
la source
Java (OpenJDK 8) , 137 octets
Essayez-le en ligne!
la source
str , 30 octets
Essayez-le en ligne!
Explication
la source
C (gcc) ,
115112109107104 octetsEssayez-le en ligne!
C (gcc) , 115 octets (134 avec
#include<string.h>
devant)Essayez-le en ligne!
la source
Rétine , 49 octets
Format d'entrée: prend la chaîne, suivie d'une nouvelle ligne, suivie du numéro.
Essayez-le en ligne!
Explication:
Le
/¶-/&
exécute cette ligne uniquement si le nombre est négatif.V
est l'étape inverse, et elle inverse^.+
, ce qui correspond à la chaîne (.
correspond à chaque caractère à l'exception des sauts de ligne).L'
/¶0/&
exécute cette ligne uniquement si le nombre est 0.//+>
démarre une boucle infinie, qui imprime la chaîne de travail après chaque itération.G0
prend la chaîne et jette le numéro; il le fait à l'infini, imprimant à chaque fois.Cela marque le code qui va générer une chaîne; le programme évalue la chaîne comme code Retina après.
(.+)¶-*(\d+)
correspond à la chaîne entière et place la chaîne dans le groupe de capture 1 et le numéro dans le groupe de capture 2..-$2+>K
`$1
génère le code Retina à exécuter:.
désactive la sortie implicite (sinon la chaîne serait imprimée n + 1 fois),-$2+
définit une boucle de répétition qui se répète pour {capturing group 2} fois. Le moins au début transforme le nombre en nombre négatif, car cela désactive la fonctionnalité de convergence dans la boucle, ce qui l'arrêterait après la 1ère itération.>
définit cette boucle pour imprimer après chaque itération. Le reste du code consiste simplement à imprimer la chaîne.la source
Perl 6 , 44 octets
Essayez-le en ligne!
Bloc de code anonyme qui prend un nombre et une chaîne et renvoie une liste (éventuellement infinie)
la source