Проблема с фильтрацией массива последовательностей для удаления дубликатов со смещенными последовательностями

PATH="~/.composer/vendor/bin:$PATH" ssh myalias 'drush'

предоставит измененный PATHна sshи любые утилиты, которые он вызывает.

1
03.11.2016, 10:41
1 ответ

Вот цикл bash, который считывает ввод из файла с именем 'input' в массив с именем input , затем перебирает этот массив и тесты, чтобы увидеть, наблюдалась ли эта конкретная последовательность раньше; если он не был виден, он печатает значение. Затем он вращает эту последовательность по всем 13 позициям, добавляя эти значения в ассоциативный массив с известным вращением. Я упростил данные, чтобы показать метод; вы можете взять цикл оболочки и настроить ввод или вывод по мере необходимости.

#!/usr/bin/env bash
readarray -t input < input
declare -A rotations
for((i=0; i < ${#input[*]}; i++))
do
  x=${input[i]}
  [[ ${rotations[$x]:-0} -eq 0 ]] && printf "%s\n" "$x"
  for((r=0; r < 13; r++))
  do
    new=${x:r}${x:0:r}
    rotations[$new]=1
  done
done

Пример входных данных (скопирован из Вопроса, затем упрощен):

0010111220121
0020222110212
0101112201210
0111220121001
0121001011122
0202221102120
0212002022211
0222110212002
1001011122012
1011122012100
1021200202221
1102120020222
1112201210010
1122012100101
1200202221102
1210010111220
1220121001011
2002022211021

Пример выходных данных:

0010111220121
0020222110212
0
28.01.2020, 01:08

Теги

Похожие вопросы