- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Северка - Николай Соловьев
Шрифт:
Интервал:
Закладка:
С разницей в две недели течка началась у армянской кошечки.
Однажды она зашла, наскоро поела и стала петь песенки для Мурмяши.
Повернется спиной, хвостик на бок и поет. И глазом косит. А он подходит и с удивлением нюхает ее. Армяшечка подождет, отходит на несколько шагов и снова поет. Сорок минут он ее нюхал, после чего она влепила ему пощечину. Я выпустил ее, а про Мурмяшу подумал, что, пожалуй, он еще молод для этого. Прошел месяц, и я увидел, как
Мурмяша любит армянку, а потом и других кошек. Как и все коты, он набрасывается как орел и зубами держит любимую за шею, вдавливая ее мордочку в землю.
Несколько раз видел, как во дворе Мурмяша поет с другим котом. Они садятся в нескольких сантиметрах друг от друга. Вупор друг на друга не смотрят и резких движений не делают.
До сих пор Хитрюшка откуда-то приносил свою добычу. А сегодня он при мне сам поймал полевую мышь. Тут же взял в зубы и поволок ее за угол дома. Косо глянул на меня на прощание – не хочет делиться. Я тоже завернул за угол, посмотреть. Мне повезло. Хитрюшке преградил дорогу другой кот. Не страшный, но с дороги не уходит. Я подошел близко и рассмотрел пушистую мышку в его зубах.
В середине лета по утрам в поселок стали наведываться бродячие собаки. Однажды, часа в четыре утра они разбудили меня, судя по возне и голосам их не меньше четырех. В поселке стали пропадать кошки. За Мурмяшу я не боялся. Хоть он и уходит ночью, когда вздумается, но они ходят вместе с Рыжим. Если на него нападут на улице, он залезет на дерево, если в подвале – выскочит в одно из окошек. Они задушили его. Миленький мой иногда пропадал сутками.
Сначала я беспокоился, потом привык. И этим утром его тоже не было.
Пошел в магазин. Женщина из соседнего дома остановила меня и рассказала, что слышала ночью, как в подвале кричит кошка, и лают собаки. Она пыталась прогнать их, но ничего не помогло. Сантехников искать долго, я сбил замок с подвала и спустился. Во второй комнате на полу лежал Миленький. Он уже остыл и отвердел. Никаких повреждений на нем не было, только кровь на губе. После армии я думал, что подвал – длинный зал. Оказалось, что это ряд пустых комнат без дверей. В комнате, где лежал Миленький на окне была решетка. Дома я обмыл его, взял лопату и пошел хоронить. В лесу вырыл ямку, положил полотенце, на него – Миленького, головкой на запад. Пытался сделать надгробие из глины, не получилось, трескается, когда обжигаешь. Дерево сразу отверг. В Москве искал небольшой камень, но везде продают большие и дорогие. Тогда купил пакет цемента и сделал камень из него. 'Коту Мотьке, который меня любил'. Иногда я звал его тимошечный Мотя.
Два года назад, когда я увлекся японскими кроссвордами, мне вдруг захотелось написать программу для их решения. Тогда я сделал всего лишь наброски на двух листах и отложил. Дальше идти без конкретного языка, без конкретных подпрограмм и обработки ошибок нельзя. К своей идее я вернулся, как только сделал ремонт. А ноутбук у меня уже был.
Послушайте, это так интересно. Обязательно попробуйте сами написать такую программу. Если Вы не имеете специальной подготовки, можете воспользоваться описанием:
Выход лучше сделать в Excel-файл. Вы можете программно сделать его ячейки квадратными, каждую пятую горизонтальную и вертикальную линию – жирной. Заполняются крайние левые и верхние ячейки числами тоже программно. В процессе решения кроссворда на бумаге Вы зачеркиваете числа (назову их размерами блоков), которые полностью построены. Зачеркивание тоже можно сделать программно или окрашивать цифры другим цветом.
Исходные данные (размеры блоков) тоже удобно разместить в том же
Excel-файле. На листе с именем: 'Данные'. Для простоты их можно разместить в двух соседних столбцах. Программа создает, если их нет, другие листы с именами: 'Отладка', 'Итог', 'Тест'. Полученный файл удобно хранить, изменять, распечатывать, увеличивать или уменьшать при просмотре.
Глоссарий, чтобы исключить путаницу:
– Поле – вся совокупность клеток кроссворда.
– Линия – элемент поля. Линии двух типов: горизонтальные или вертикальные
– Строка – горизонтальная линия
– Столбец – вертикальная линия
Каждая линия имеет статус 'активная' или 'старая', при инициализации статус – 'старая'.
Два вида объектов:
– Блок – объект, заданный размером (цифрой из списка в крайнем левом столбце или крайней верхней строке поля). На рисунке блок отображается символами.
– Ограничитель – объект, заполняющий пространство между построенными блоками
Отображается символами
Каждый объект имеет свой статус. Точнее два статуса – для строки и для столбца. Ведь статусы строки и столбца могут не совпадать.
Например, на строке блок может быть построен, и тогда все его '*' имеют здесь статус 'сделан'. Если теперь посмотреть на столбцы, которые пересекают эти 'сделанные' '*', то они могут быть частью построенных или недостроенных блоков и значит иметь другой статус.
При инициализации все пустые клетки имеют статус 'старый'.
В памяти объекты представляют собой три массива одного размера.
Один массив – изображение, два других – статусы строк и столбцов.
Размер массивов: количество столбцов, умноженное на количество строк.
Программа пробегает линии, пытаясь нарисовать в ней объекты. Если это удалось, соответствующий объект изменяет свой статус строки и столбца. Вновь появившиеся объекты принимают статус 'новый'.
Перпендикулярная линия, получившая новый объект, изменяет статус
'старый' на 'активный'. Обрабатываются только линии со статусом
'активная'. Обработка заканчивается при возникновении ошибки или при отсутствии линий со статусом 'активная'.
Какие ошибки видит программа. во входных данных:
– введено не число на строке? ХХ, поз.? ХХ
– отсутствуют начальные записи "строк ХХ" или "столбцов ХХ"
– задано нулевое число строк/столбцов
– сумма размеров блоков для линии превышает ее размер
– число считанных строк/столбцов не соответствует указанному в начальных записях "строк ХХ/столбцов ХХ" при обработке:
– программа пытается поставить '*' на позицию, где стоит '-' и наоборот.
Есть ошибки, которые программа не видит. Если Вы измените любую цифру в меньшую сторону или вовсе опустите ее. Например:
Длина линии: 30
Вместо: 3,1,1,6.
Вы введете: 2,1,1,6 или 3,1,6 и это будет принято к обработке.
О статусах объектов.
'нитка' – в этот статус переходит ограничитель из статуса 'новый'.
Больше у ограничителя нет статусов. Сразу поставить 'нитку' невозможно, так как в этом случае линия не получит статус 'активная' и не будет обработана.
У блока есть несколько статусов:
'сделан_*' – означает, что блок построен. То есть имеет с обеих сторон ограничитель или начало/конец линии. По размеру и порядку в списке блоков точно соответствует конкретному блоку. Звездочка соответствует порядковому номеру блока в списке.
'фрагмент' – означает фрагмент, который может принадлежать любым блокам. Не имеет ограничителей или имеет его с одной стороны.
'условный_*_*' – Закрытый с обеих сторон блок. Но точно указать его принадлежность пока невозможно, так как в обрабатываемой линии есть другие блоки такого же размера. Звездочки соответствуют порядковым номерам, на которые похож блок. Как условные превращаются в 'сделан_*'? Например, если имеем список: 2,4,1,2,9,1,9 и в результате первичной обработки получили:
'условный_5_7', 'условный_5_7', то они преобразуются в 'сделан_5' и 'сделан_7'.
Другой пример: имеем список: 1,2,2,1,1,2
Пусть в результате обработки получено: 'условный_2_3',
'условный_2_3_6' они преобразуются в 'сделан_2' и 'условный_3_6'
'неизвестный' – ограниченный с обеих сторон блок. Он получен в результате обработки не текущей линии, а предыдущих обработок перпендикулярных линий и требует рассмотрения на предмет отнесения его к статусу 'условный_*_*' или 'сделан_*'.
'визуальный_*' – фрагмент, точно принадлежащий некому блоку. Не имеет ограничителей или имеет его с одной стороны. В отличие от
'фрагмента', 'визуальный_*' можно попробовать удлинить в одну или другую сторону или объединить несколько 'визуальных_*' с одинаковым номером в один.
Кроме обычного режима работы программы лучше предусмотреть еще два: пошаговый и отладочный.
В пошаговом режиме предварительно можно задать номер линии и номер прохода, на котором намечается остановить программу. Проход – это один полный цикл просмотра всех активных линий.
Пошаговый режим показывает картинку текущей линии со статусом каждой клетки до обработки и после нее.
Отладочный режим служит для того, чтобы задать конкретную длину линии, список блоков, расставить на линии любые объекты и посмотреть, как реагируют Ваши подпрограммы на конкретную ситуацию.

