Задачу из первой части можно решить перебором на компьютере гораздо проще не задействуя никакие среды программирования, а просто введя вот такую команду в стандартную командную строку bash, правда у меня это было в одну строку, но для удобства восприятия я добавил табуляцию и разбил на строки:
for a in {1..9}; do
for b in {1..9}; do
for c in {1..9}; do
for d in {0..9}; do
if ((100*$a$b$c$d/$c$d==$b$c$d*100)); then
echo "$a$b$c$d:$c$d=$b$c$d"
fi
done
done
done
done
Умножение на 100 здесь нужно поскольку bash работает только с целочисленной арифметикой, без него получается три лишних варианта:
3125:25=125
7148:48=148
8153:53=153
8235:35=235
Вторая задача ещё проще, а iconv тут понадобился только из-за кодировки исходного файла. Ну серьёзно, кто хранит текст в UTF-16?
$ iconv -f utf16 makarov_frc.txt | egrep '(.)\1(.)\2'
ГЕЕННА
ВАКУУММЕТР
МАССООБМЕН
ВАКУУММЕТРИЯ
МЕТАЛЛООПТИКА
ВОЕННООБЯЗАННАЯ
ВОЕННООБЯЗАННЫЙ
КРИСТАЛЛООПТИКА
МЕТАЛЛООБРАБОТКА
ПАРААГГЛЮТИНАЦИЯ
ТЕЛЕГАММААППАРАТ
МИЦЕЛЛООБРАЗОВАНИЕ
КРИСТАЛЛООБРАЗОВАНИЕ
$ iconv -f utf16 makarov_frc.txt | egrep '(.)\1(.)\2(.)\3'
ТЕЛЕГАММААППАРАТ
Третья задача ничем не отличается от второй, только тут проблема c форматом уже другая, в конце каждой строки мусорный байт 0x13, который надо учесть:
$ egrep '^(.*)\1\s$' EnDictionary_frc.txt
COCO
DODO
GAGA
MAMA
PAPA
BONBON
BULBUL
CANCAN
DUMDUM
MURMUR
MUUMUU
TARTAR
TESTES
BERIBERI
CHOWCHOW
FROUFROU
HOTSHOTS
Третья задача тоже решается в одну строку, но вывод слишком длинный, чтобы его приводить полностью:
$ tr -d \\r < EnDictionary_frc.txt | sort | egrep -z '\s(.*)\s\1'
Для следующей задачи делаем так:
$ iconv -f utf16 makarov_frc.txt | egrep '[БВГДЖЗКЛМНПРСТФХЦЧШЩ]{6}'
АДЪЮНКТСТВО