Mucha gente sabe qué es una máquina de verdad en la programación. Pero es hora de poner las cosas a un nivel superior. ¡Presentamos la máquina de la verdad extendida! Una máquina de verdad extendida toma dos cosas como entrada, un entero ny una cadena no vacía s. Produce s ntiempos con espacios en blanco finales opcionales. Sin embargo, si nes igual a 0, debe salir shasta que el programa se detenga manualmente, es decir, nunca debe terminar.
Además, si nes un número negativo, entonces la cadena debe invertirse. Por ejemplo con s=helloy n=-1, la salida sería olleh.
Métodos estándar de entrada, cualquier tipo de salida, siempre que pueda manejar infinito. Si tiene una respuesta que no maneja infinito, siéntase libre de publicarla si es interesante o en un idioma que no puede manejar la salida infinita.
Casos de prueba
n, s, output
5, "hello world", "hello worldhello worldhello worldhello worldhello world"
0, "PPCG", "PPCGPPCGPPCGPPCG..."
-2, "truThY", "YhTurtYhTurt"
2000, "o", "oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"
Este es el código de golf , ¡el código más corto gana!
Aquí está la publicación original de Sandbox. Se le han hecho modificaciones. Gracias a @ComradeSparklePony por crear la idea de este desafío.
fuente

-nlugar deabs n.PHP> = 7.1, 67 bytes
Versión con en
list(,$x,$y)lugar de ¡[,$x,$y]Pruébelo en línea!fuente
MATL , 37 bytes
Pruébalo en línea!
Explicación:
fuente
Python 3, 71 bytes
Pruébalo en línea!
La variable
kgarantiza que el bucle siempre se ejecuta al menos una vez. Esto significa que sin=0,nserá negativo en la próxima iteración del ciclo, por lo que el ciclo continuará ejecutándose para siempre.fuente
Matlab, 87 bytes
¡Mi primer intento de code-golf! Cualquier sugerencia para jugar al golf es bienvenida.
fuente
05AB1E ,
171614 bytesPruébalo en línea!
Explicación:
Guardado 2 bytes gracias a @EriktheOutgolfer
fuente
'-åcon0‹y0Qcon_.Cubix , 41
Cuarenta y cuatro45bytesToma entrada como
<N> <String>Pruébalo en línea!
Cubified:
Míralo correr
Todavía hay una cantidad de no-ops en el código de las que podría obtener algunos bytes más, pero quería obtener esto antes de romperlo.
El procedimiento básico es
Iobtener contador de entradaAtomar el resto de la entrada como caracteres;p?eliminar el espacio, subir el número y probarlopsuqB$)Si el contador es negativo, invierta la pila. Esto implica manejar el número de entrada y el marcador EOI (-1). Incrementa el contador.;p;ouquSi el contador es cero, quite el contador y el marcador EOI e inicie el ciclo de salida perpetua.(si disminuye positivamente el contador<<q?/o()uEl bucle de salida. Esto generará cada carácter de la pila hasta que se alcance el marcador EOI (-1).... _ ... ?wq!en el marcador EOI final, rodee el cubo y reflexione de nuevo sobre el?, cambie de carril, suelte el marcador EOI en la parte inferior y pruebe el contador.@si es cero, deténgase?u(si el cambio de sentido es positivo y disminuye, el golpe termina al principio del ciclo? ... <)si es negativo, rodee el cubo hacia el otro lado, redirija al comienzo del ciclo mientras pasa sobre un incremento./)<si el incremento negativo y continuar al bucle de salidafuente
JavaScript (ES6), 79 bytes
Retazo:
fuente
!n&&en hacer un bucle infinito. Sin embargo, ¿esto finalmente llegará a un StackOverflow?it should never terminate.JavaScript (ES6),
98949183 bytes-4, -5 bytes gracias a Arjun
-3 bytes gracias a Rick Hitchcock
Comenzó diferente a la respuesta de Java , pero rápidamente se volvió muy similar después del golf. La alerta es infinita, pero si quieres que se vea bien, cambia a
console.log.l=alert;y escribiralertson de la misma longitud, pero si cambia aconsole.logmás corto para redefinirlo.fuente
while(!n)l(s)en lugar deif(!n)for(;;)l(s).[...s].reverse()en lugar des.split''.reverse()l(s.repeat(Math.abs(n)))en lugar deforbucle por fin.QBIC , 36 bytes
Hay mucho aquí, y QBIC / QBasic simplemente no tiene la sintaxis para lidiar con tales condiciones con elegancia.
Explicación:
fuente
Java (OpenJDK 8) , 137 bytes
Pruébalo en línea!
fuente
str , 30 bytes
Pruébalo en línea!
Explicación
fuente
C (gcc) ,
115112109107104 bytesPruébalo en línea!
C (gcc) , 115 bytes (134 con
#include<string.h>delante)Pruébalo en línea!
fuente
Retina , 49 bytes
Formato de entrada: toma la cadena, seguida de una nueva línea, seguida del número.
Pruébalo en línea!
Explicación:
El
/¶-/&corre esta línea sólo si el número es negativo.Ves la etapa inversa, y se invierte^.+, que coincide con la cadena (.coincide con todos los caracteres excepto las nuevas líneas)El
/¶0/&corre esta línea sólo si el número es 0.//+>comienza un bucle infinito, que imprime la cadena de trabajo después de cada iteración.G0toma la cadena y descarta el número; lo hace infinitamente, imprimiendo siempre.Esto marca el código que generará una cadena; el programa evalúa la cadena como código Retina después.
(.+)¶-*(\d+)coincide con la cadena completa y coloca la cadena en el grupo de captura 1 y el número en el grupo de captura 2..-$2+>K`$1genera el código Retina que se ejecutará:.desactiva la salida implícita (de lo contrario, la cadena se imprimiría n + 1 veces),-$2+establece un ciclo de repetición que se repite {capturando el grupo 2} veces. El menos al principio convierte el número en un número negativo, ya que esto deshabilita la funcionalidad de convergencia en el bucle, lo que lo detendría después de la primera iteración.>establece este ciclo para imprimir después de cada iteración. El resto del código es solo para imprimir la cadena.fuente
Perl 6 , 44 bytes
Pruébalo en línea!
Bloque de código anónimo que toma un número y una cadena y devuelve una lista (posiblemente infinita)
fuente