Еженедельная задача 177
Задача, мое решение
Задача 1: Алгоритм Дамма
Задача
Вам дано положительное число $n
.
Напишите скрипт, который будет проверять заданное число на соответствие включенной контрольной цифре.
Мое решение
Благодаря приведенной ссылке на Википедию, это оказалось довольно простой задачей. Начиная с 0, измените строку, соответствующую значению этой цифры в текущей строке. Повторяйте, пока не обработаем все цифры. Если последняя строка равна 0, то она подтверждена. Если это что-то другое, то у вас сомнительные данные.
Примеры
$ ./ch-1.py 5724
1
$ ./ch-1.py 5727
0
Задача 2: Палиндромический предельный циклоп
Задание
Напишите скрипт для генерации первых 20 палиндромных простых циклопических чисел.
Циклопическое число — это число с нечетным количеством цифр, у которого ноль находится только в центре.
Мое решение
Вместо того, чтобы проверять, является ли число палиндромом с 0 в центре, я генерирую левую часть числа, а затем добавляю ноль и число меняется на противоположное. Это проще и быстрее, IMO. YMMV
Затем мне нужно проверить, не содержит ли число других нулей, и является ли оно простым.
Затем я заворачиваю это в цикл, который увеличивает число на единицу и продолжается до тех пор, пока мы не найдем 20 решений. Наконец, я распечатываю результаты.
Примеры
$ ./ch-2.py
101, 16061, 31013, 35053, 38083, 73037, 74047, 91019, 94049, 1120211, 1150511, 1160611, 1180811, 1190911, 1250521, 1280821, 1360631, 1390931, 1490941, 1520251
$ ./ch-2.pl
101, 16061, 31013, 35053, 38083, 73037, 74047, 91019, 94049, 1120211, 1150511, 1160611, 1180811, 1190911, 1250521, 1280821, 1360631, 1390931, 1490941, 1520251