Введение
Рассмотрим последовательность целых чисел и одну из ее подпоследовательностей, скажем, A = [4 2 2 4 4 6 5] и B = [2 4 5] . Мы хотим удалить элементы B из A по порядку, и есть несколько способов сделать это:
A = 4 2 2 4 4 6 5
B = 2 4 5
-> 4 2 4 6
A = 4 2 2 4 4 6 5
B = 2 4 5
-> 4 2 4 6
A = 4 2 2 4 4 6 5
B = 2 4 5
-> 4 2 4 6
A = 4 2 2 4 4 6 5
B = 2 4 5
-> 4 2 4 6
Во всех случаях оставшаяся последовательность одинакова, [4 2 4 6] . Если это произойдет, то мы говорим , что B является уникальным выниматься из A .
Задание
Ваши входы две последовательности неотрицательных целых чисел, A и B , где B гарантированно подпоследовательность A . Входы могут быть равны, и они могут быть пустыми. Вы можете взять их в любом порядке, в любом разумном формате.
Ваш вывод должен быть истинным значением, если B однозначно удаляется из A удаляется , и ложным значением, если нет.
Правила и оценки
Вы можете написать полную программу или функцию. Побеждает самое низкое число байтов.
Контрольные примеры
[] [] -> True
[0,3] [] -> True
[1,0,1] [1] -> False
[0,2] [0,2] -> True
[2,2,1,1,2,2,2] [2,1] -> True
[4,2,2,4,4,6,5] [4,5] -> False
[10,5,10,10,5,10] [10,5,10] -> False
[4,2,2,4,4,6,5] [2,4,5] -> True
[1,1,1,0,0,0,1,1,1,0] [1,0,1,1] -> True
[0,1,0,0,0,0,1,1,0,1] [1,0,1,1] -> False
[0,4,0,0,4,1,4,2,2] [0,0,0,1,4] -> True
[0,2,2,25,0,2,2,26,0,0,2] [2,0,0,0,2] -> True
[1,1,1,3,2,1,3,2,2,3,3,2] [1,1,2,3,2] -> False
[0,3,2,0,1,3,2,0,0,0,3,2] [0,1,2,0,3] -> False
[5,7,2,7,7,1,7,7,5,2,7,7,5,2,2,7,5] [2,7,5,7,7,2] -> False
[5,4,0,5,4,5,4,1,0,4,2,1,1,2,4,4,0,2,2,1] [4,0,1,1,2,1] -> False
[0,1,4,0,1,4,0,1,5,1,4,4,2,0,0,1,1,1,2,4] [0,1,0,0,2,0,1,4] -> True
x%_=x
для второго случая%
. Кроме того, я думаю, что основная функция была бы короче в точечной форме.x%_=x
не будет работать, потому что типы не будут совпадать, но_%_=[]
сохранит байт.JavaScript (ES6), 141
152 156 159Рекурсивная функция - довольно длинная
Меньше гольфа
Тест
источник
Pyth - 27 байт
На мобиле в школе прямо сейчас, поэтому не полностью в гольф.
Тестирование
источник
JavaScript (ES6),
116114113 байтовВозвращает
false
илиtrue
.Отформатировано и прокомментировано
Контрольные примеры
Показать фрагмент кода
источник
MATL , 27 байт
Самые длинные тесты заканчиваются в онлайн-компиляторе.
Попробуйте онлайн!
источник
JavaScript (Firefox 30+),
159147 байтВот пара альтернативных подходов, обе анонимные функции:
Тестовый фрагмент
Показать фрагмент кода
источник
Mathematica, 128 байт
Безымянная функция, принимающая два аргумента списка, где первый - это подпоследовательность, а второй - полная последовательность; выходы
True
илиFalse
.Основной частью является следующая последовательность, не разглаженная для удобства чтения:
Здесь
#
представляет подпоследовательность - например{2,4,5}
,. ПерваяArray
команда создает список строк like{"a1___","a2___","a3___","a4___"}
, который затемRiffle
объединяется с d#
для получения странного списка like{"a1___",2,"a2___",4,"a3___",5,"a4___"}
; затем этот список преобразуется в фактическое выражение Mathematica. Для примера{2,4,5}
, частичная оценка этого основного кодакоторый точно дает список всех возможных способов удаления подпоследовательности
{2,4,5}
из#2
и оставить остальную часть списка в одиночку.После того, как этот список сформирован, мы просто удаляем дубликаты с помощью
Union
и проверяем, равна ли длина полученного результата 1 или нет.источник