Вызов
Имея две строки в любом формате ввода / вывода по умолчанию, сделайте следующее:
ПРИМЕЧАНИЕ. Задача будет называть первую строку как «данные», а вторую - как «программу».
- Измените программу на бесконечную строку, которая является просто программой, повторяемой бесконечно (например,
10
->1010101010...
). Задача будет называть это «бесконечной программой» Пока данные не пустые, выполните следующие действия во время цикла бесконечной программы:
а. Если текущая команда "0", удалите самый левый бит в данных. Если данные пусты, «0» ничего не делает.
б. Если текущая команда «1», добавьте следующий символ в программе к данным, если самый левый бит в данных равен единице.
с. Если данные сейчас не пусты, выведите данные.
Тестовые случаи
Данные - это левая сторона ввода, а программа - это правая сторона.
100, 0 --> 00, 0
1111, 1 --> 11111, 111111, 1111111, ...
10, 011 --> 0, 0, 0
1110, 011 --> 110, 1101, 11010, 1010...
Заметки
- Данные и программа будут состоять только из 0 и 1
- Для данных / программ, которые не останавливаются, ваша программа не должна останавливаться.
- Данные и программа не будут пустыми на входе.
- У вас может быть несколько трейлингов и лидирующих новых строк
- Стандартные лазейки запрещены
- Вы можете использовать любой удобный формат ввода / вывода
Как всегда с code-golf , выигрывает самый короткий код !
code-golf
interpreter
MilkyWay90
источник
источник
100
происходит10
переход к cmd0
, определение которого «удалить самый левый бит в данных». не крайний левый бит100
быть1
?Ответы:
Haskell,
777162 байтаПопробуйте онлайн!
Изменить: -9 байт благодаря @xnor.
источник
f:[e,f++take d q]!!p#q
.C # (интерактивный компилятор Visual C #) , 82 байта
Попробуйте онлайн!
источник
0
, а 49 - значение ASCII1
List
иSkip
, или что-то в этом родеJ 65 байт
Попробуйте онлайн!
Я могу сыграть в гольф позже. Обратите внимание, что
5
в конце_
в реальной программе будет бесконечность , но я оставил ее там, чтобы упростить запуск примеров без остановки.источник
Python 3 , 74 байта
Попробуйте онлайн!
Аргументы::
d
данныеp
,: программа.источник
05AB1E ,
2421 байтПринимает программу как первый ввод, а данные как второй input.input.
Попробуйте онлайн.
Объяснение:
источник
Рубин ,
6259 байтПопробуйте онлайн!
Как
c
и данныхd
, позвоните имa
иb
. Положитеa
обратно в концеc
.b
в начале,d
еслиa==1
. Это может быть сокращено до[b]*a
c
в концеd
ifa==1 and b==1
. Это может быть сокращено доc[0,a*b]
.источник
Python 2 ,
9682 байтаПопробуйте онлайн!
Кража немного из ответа Emodiment of Ignorance ...
Генератор, который использует списки 1 и 0 для ввода / вывода.
источник
Желе , 40 байт
Попробуйте онлайн!
Я предположил, что последние переводы строки в порядке. Я также пошел со списком из двух списков нулей и один в качестве ввода и вывода на стандартный вывод.
источник
Python 1 , 75 байт
Попробуйте онлайн!
источник
[]
вместо новой строки, например, данные[1,0,0]
, программы[0]
.C ++ (gcc) , 178 байт
Попробуйте онлайн!
источник
C ++ (gcc) ,
294289272 байта-22 байта благодаря @ceilingcat
Попробуйте онлайн!
Довольно простой алгоритм. Копирует данные в очередь и многократно перебирает программу. На «0» он удаляет первый элемент в очереди (первый «бит»). На 1 он добавляет следующий «бит» программы к данным, если первый «бит» данных равен 1. Затем он циклически перебирает данные, печатая их «бит» на «бит», и, наконец, печатает пространство для разделения последовательных записей данных.
источник
c[1]
! Обновлено.