Статья из Киевского еженедельника
"Мой компьютер" №4(175)/04.02.2002 найдена на http://docs.gets.ru/read.html?id=4731 и
выкладывается с любезного разрешения автора.
Смотрите также коллекцию
палиндромов на Арбузе
Как я стал палиндромом
Зарема СЕЙДАМЕТОВА vzts@home.cris.net
Не все юные программисты
любят математику; есть и такие, у которых нелады с
грамотностью. Но фокусы и приключения со словами
и числами, думаю, всякому интересны.
Наступил 2002 год. И, как недавно заметил Альфред
Посаментиер (Madam, I’m 2002 –– a Numerically Beautiful
Year — http://www.nytimes.com/2002/01/02/opinion/02POSA.html),
профессор математики и декан педагогической
школы при колледже нью-йоркского университета:
«Теперь можно констатировать, что мы последнее в
наступившем тысячелетии поколение, прожившее
сразу в двух палиндромических годах –– 1991 и
2002».
Палиндром (от греческого palindromeo –– бегу
назад) –– это слово, фраза или стих, одинаково
читающиеся слева направо и справа налево. В
математике палиндромы (перевертыши) –– это
числа, которые читаются одинаково в обоих
направлениях. В русском языке хорошо известны
такие перевертыши:
Кармен не мрак.
А роза упала на лапу Азора.
Аргентина манит негра.
На в лоб, болван.
Чин зван мечем навзничь (В. Хлебников).
Есть палиндромические слова и выражения и в
английском языке. Например,
Madam, I’m Adam.
Nurses run.
Rotator.
Reviver.
Палиндромические числа не просто красивы, у них
есть еще ряд замечательных свойств. Например,
возьмем любое число и запишем его в обратном
порядке. Если мы начнем эти два числа складывать,
в сумме рано или поздно получим палиндромическое
число. Продемонстрируем это на примерах.
Пример 1
3724 + 4273 = 7997. Ура! :-)
Пример 2
865 + 658 = 1433. Не палиндромическое число,
продолжим процесс сложения .
1433 + 3341 = 4774. Ура! :-)
Пример 3
9238 + 8329 = 17567. Похоже, придется продолжить.
17567 + 76571 = 94138. Сложим еще раз.
94138 + 83149 = 177287. Дальше.
177287 + 782771 = 960058. Увы, ничего не получилось.
960058 + 850069 = 1810127.
1810127 + 7210181 = 9020308. Попробуем еще разок.
9020308 + 8030209 = 17050517. Кажется, мое терпение вот-вот
лопнет.
17050517 + 71505071 = 88555588. А вот теперь действительно
ура. :-)
Вот ведь она какая бывает, математика. Думаю, у
тех, кто доселе был к ней равнодушен, этот фокус
засветил в глазах огонек.
А теперь попробуйте свои силы в решении
следующих проблем:
1. Написать программу, которая будет осуществлять
процесс получения палиндромического числа из
заданного описанным путем.
2. Найти самое неудачное четырехзначное число,
имеющее самую длинную цепочку
непалиндромических сумм.
Ниже приведено решение задачи о поиске
палиндромов в текстовом файле, выполненное в
среде программирования Turbo Pascal (задачи и их
решения на Turbo Pascal см. на http://sapisoft.h1.ru/pascal.html).
Поиск
палиндромов
Задача: В тексте слова отделяются
друг от друга пробелами. В конце предложения
стоит точка. Найти все слова-перевертыши.
Необходимые условия: Программа должна читать
исходные данные из файла input.txt, содержащего
исследуемый текст. Файл output.txt должен содержать
список всех слов-палиндромов, разделенных
пробелами.
Решение: Программа читает текст из файла
input.txt, удаляет знаки пунктуации, затем переводит
все буквы в нижний регистр и с помощью функции Perev
логического типа проверяет, является ли каждое
из слов исследуемого текста палиндромом:
Приведем еще несколько задач для реализации
в Turbo Pascal или любой другой среде
программирования.
1. Найти самый длинный палиндром в тексте. Если
таких слов несколько, взять первое попавшееся.
Интерфейс прежний — программа должна читать
текст из файла input.txt и выводить самое длинное
слово в файл output.txt.
2. Дан одномерный массив натуральных чисел a[1],
a[2],...,a[1000]. Определить максимальное количество
палиндромов.
3. Из двух натуральных чисел составить наибольший
возможный палиндром, максимально приближенный к
первоначальной последовательности цифр. Опять
же, исходные числа читаются из файла input.txt,
полученное число или сообщения о невозможности
построения такого числа выводятся в файл output.txt. |