Учитывая две последовательности, A и B, как я могу сгенерировать список всех возможных способов удаления B из A?
Например, в JavaScript, если бы у меня была функция removeSubSeq
с двумя аргументами массива, которые делали то, что я хочу, она работала бы следующим образом:
removeSubSeq([1,2,1,3,1,4,4], [1,4,4])
вернет [ [2,1,3,1], [1,2,3,1], [1,2,1,3] ]
, потому что 4s в конце будет соответствовать, и есть три возможных места для соответствия 1
removeSubSeq([8,6,4,4], [6,4,8])
вернет []
, потому что второй аргумент фактически не является подпоследовательностью
removeSubSeq([1,1,2], [1])
вернет [ [1,2], [1,2] ]
, потому что есть два способа удаления 1, хотя это приводит к дублированию