Desafío
Dadas dos cadenas en cualquier formato de E / S predeterminado, haga lo siguiente:
NOTA: El desafío se referirá a la primera cadena como "datos" y a la segunda como "programa".
- Cambie el programa a una cadena infinita que es solo el programa repetido infinitamente (por ejemplo,
10->1010101010...). El desafío se referirá a esto como el "programa infinito" Mientras los datos no estén vacíos, haga lo siguiente mientras recorre el programa infinito:
a. Si el comando actual es "0", elimine el bit más a la izquierda en los datos. Si los datos están vacíos, "0" no hace nada.
si. Si el comando actual es "1", agregue el siguiente carácter en el programa a los datos si el bit más a la izquierda en los datos es uno.
C. Si los datos no están vacíos ahora, envíe los datos.
Casos de prueba
Los datos son el lado izquierdo de la entrada y el programa es el lado derecho.
100, 0 --> 00, 0
1111, 1 --> 11111, 111111, 1111111, ...
10, 011 --> 0, 0, 0
1110, 011 --> 110, 1101, 11010, 1010...
Notas
- Los datos y el programa constarán de solo 0s y 1s.
- Para los datos / programas que no se detienen, su programa no necesita detenerse.
- Los datos y el programa no estarán vacíos en la entrada.
- Puede tener múltiples líneas nuevas y finales
- Las lagunas estándar están prohibidas
- Puede usar cualquier formato conveniente de E / S
Como siempre con code-golf , ¡el código más corto gana !
code-golf
interpreter
MilkyWay90
fuente
fuente

100va a10cmd0, cuya definición es "eliminar el bit más a la izquierda en los datos". no sería el más a la izquierda de100ser1?Respuestas:
Haskell,
777162 bytesPruébalo en línea!
Editar: -9 bytes gracias a @xnor.
fuente
f:[e,f++take d q]!!p#q.C # (compilador interactivo de Visual C #) , 82 bytes
Pruébalo en línea!
fuente
0, y 49 es el valor ASCII de1ListySkip, o algo asíJ , 65 bytes
Pruébalo en línea!
Puedo jugar golf más adelante. Tenga
5en cuenta que al final sería infinito_en el programa real, pero lo dejé allí para facilitar la ejecución de los ejemplos que no se detienen.fuente
Python 3 , 74 bytes
Pruébalo en línea!
Argumentos::
ddatosp,: programa.fuente
05AB1E ,
2421 bytesToma el programa como primera entrada y los datos como segunda entrada.
Pruébalo en línea.
Explicación:
fuente
Ruby ,
6259 bytesPruébalo en línea!
Cómo
cy los datosd, llámelosayb. Poner deanuevo al final dec.bal comienzo dedifa==1. Esto se puede acortar a[b]*acal final dedifa==1 and b==1. Esto se puede acortar ac[0,a*b].fuente
Python 2 ,
9682 bytesPruébalo en línea!
Robando un poco la respuesta de Emodiment of Ignorance ...
Un generador que utiliza listas de 1 y 0 para entrada / salida.
fuente
Jalea , 40 bytes
Pruébalo en línea!
Supuse que las nuevas líneas finales están bien. También he ido con una lista de dos listas de ceros y unos como entrada y salida a stdout.
fuente
Python 1 , 75 bytes
Pruébalo en línea!
fuente
[]lugar de una nueva línea en, por ejemplo, datos[1,0,0], programa[0].C ++ (gcc) , 178 bytes
Pruébalo en línea!
fuente
C ++ (gcc) ,
294289272 bytes-22 bytes gracias a @ceilingcat
Pruébalo en línea!
Algoritmo bastante sencillo. Copia los datos en una cola y recorre repetidamente el programa. En un "0", elimina el primer elemento de la cola (el primer "bit"). En un 1, agrega el siguiente "bit" del programa a los datos si el primer "bit" de los datos es 1. Luego recorre los datos, imprimiéndolos "bit" por "bit", y finalmente imprime un espacio para separar entradas de datos sucesivas.
fuente
c[1]! Actualizado.