Виклик
Дано два рядки у будь-якому форматі вводу / виводу за замовчуванням, виконайте наступне:
ПРИМІТКА. Перший рядок буде викликом як "дані", а другий - "програма".
- Змініть програму на нескінченну рядок, яка є просто програмою, що повторюється нескінченно (наприклад
10
->1010101010...
). Виклик буде стосуватися цього як "нескінченної програми" Якщо дані не порожні, виконайте наступне, переглядаючи нескінченну програму:
а. Якщо поточна команда "0", видаліть найбільшу ліву частину даних. Якщо дані порожні, "0" нічого не робить.
б. Якщо поточна команда "1", додайте до даних наступний символ у програмі, якщо самий лівий біт у даних - це один.
c. Якщо дані зараз не порожні, виведіть дані.
Випробування
Дані - ліва частина вводу, а програма - права.
100, 0 --> 00, 0
1111, 1 --> 11111, 111111, 1111111, ...
10, 011 --> 0, 0, 0
1110, 011 --> 110, 1101, 11010, 1010...
Примітки
- Дані та програма складатимуться лише з 0 та 1
- Для даних / програм, які не зупиняються, програму не потрібно зупиняти.
- Дані та програма не будуть порожніми на вводі.
- У вас може бути кілька останніх та нових ліній
- Стандартні лазівки заборонені
- Ви можете використовувати будь-який зручний формат вводу / виводу
Як завжди у коді-гольф , виграє найкоротший код !
100
переходить до 10
cmd 0
, визначення якого - "видалити найбільш лівий біт у даних". НЕ крайній лівий біт 100
бути 1
?