Défi
Étant donné deux chaînes dans n'importe quel format d'E / S par défaut, procédez comme suit:
REMARQUE: le défi fera référence à la première chaîne en tant que "données" et la seconde en tant que "programme".
- Changez le programme en une chaîne infinie qui est juste le programme répété à l'infini (par exemple
10
->1010101010...
). Le défi appellera cela le "programme infini" Pendant que les données ne sont pas vides, procédez comme suit lors de la boucle sur le programme infini:
une. Si la commande actuelle est "0", supprimez le bit le plus à gauche dans les données. Si les données sont vides, "0" ne fait rien.
b. Si la commande en cours est "1", ajoutez le caractère suivant du programme aux données si le bit le plus à gauche des données est un.
c. Si les données ne sont pas vides maintenant, sortez les données.
Cas de test
Les données sont le côté gauche de l'entrée et le programme est le côté droit.
100, 0 --> 00, 0
1111, 1 --> 11111, 111111, 1111111, ...
10, 011 --> 0, 0, 0
1110, 011 --> 110, 1101, 11010, 1010...
Remarques
- Les données et le programme ne comprendront que 0 et 1
- Pour les données / programmes qui ne s'arrêtent pas, votre programme n'a pas besoin de s'arrêter.
- Les données et le programme ne seront pas vides dans l'entrée.
- Vous pouvez avoir plusieurs nouvelles lignes de fin et de début
- Les échappatoires standard sont interdites
- Vous pouvez utiliser n'importe quel format d'E / S pratique
Comme toujours avec le code-golf , le code le plus court gagne !
100
passe à 10
cmd 0
, dont la définition est «supprimer le bit le plus à gauche des données». ne serait pas le plus à gauche peu 100
être 1
?