можно выяснить является ли число простым. Суть этого метода заключалась в следующем.
Преобразуем число в унарную форму, ее можно представить как счет на палочках
3 записывается как 111
7 как 1111111
и все это дело, как я по быстрому накидала для шел, перенаправляется сюда
Код: Выделить всё
egrep -x '1?|(1{2,})\1+'
По быстрому проверяю строчку
Shell
shuf -e 1 -zrn 10 | egrep -x '1?|(1{2,})\1+'
Двоичный файл (стандартный ввод) совпадает
Shell
shuf -e 1 -zrn 10 | cat -vet
1^@1^@1^@1^@1^@
Shell
echo $(shuf -e 1 -zrn 10) | egrep -x '1?|(1{2,})\1+'
bash: предупреждение: подстановка команды: во входных данных проигнорирован нулевой байт
Код: Выделить всё
yes 1 | head -10 | tr -d '\n'
Код: Выделить всё
shuf -e 1 -zrn 10 | tr -d '\0' | egrep -x '1?|(1{2,})\1+'
и нет выгоды в использовании shuf
Код: Выделить всё
seq -s* 10 | tr -d '[0-9]\n' | egrep -x '.?|(.{2,})\1+'
и передавать такую строчку в пайп придется опять же через команду tr. На всякий случай смотрю на результат
Shell
echo $_{1..10}$'\b'* | cat -vet
^H* ^H* ^H* ^H* ^H* ^H* ^H* ^H* ^H* ^H*$
может подправить регулярку чтобы она учитывала разделитель, наверное опция -z в grep здесь не поможет?