7.12. Проверка года на високосность
7.12. Проверка года на високосность
В классе Date есть два метода класса julian_leap? и gregorian_leap?, но только последний применим к относительно недавнему времени. Есть также метод leap?, но это просто синоним gregorian_leap?.
require "date"
flag1 = Date.julian_leap? 1700 # true
flag2 = Date.gregorian_leap? 1700 # false
flag3 = Date.leap? 1700 # false
Любой ребенок знает первое правило проверки на високосность: год должен делиться на 4. Меньшее число людей знают второе правило: год не должен делиться на 100. И уж совсем немногие знают про исключение из второго правила: если год делится на 400, то он високосный. Таким образом, последний год тысячелетия является високосным, только если делится на 400; так, 1900 год не был високосным, а 2000 был. (Эта поправка необходима, потому что в году не ровно 365.25 дней, а приблизительно 365.2422.)
В классе Time нет аналогичного метода, но при желании его легко можно добавить.
class Time
def Time.leap? Year
if year % 400 == 0
true
elsif year % 100 == 0
false
elsif year % 4 == 0
true
else
false
end
end
Я привел этот код только для того, чтобы прояснить алгоритм; конечно, гораздо проще вызвать метод Date.leap?. В моей реализации это метод класса по аналогии с классом Date, но можно было бы сделать его и методом экземпляра.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Шаг 4. Программист. Опыт работы 1-3 года.
Шаг 4. Программист. Опыт работы 1-3 года. К сожалению, часть программистов зависает на этой стадии развития. 3 года стажа работы в одной должности превращаются в 5 лет, затем в 10. Человек вдруг понимает, что по возрасту уже должен находиться совершенно на другой ступени
Наука: Проблемы 2000 года: P=?NP
Наука: Проблемы 2000 года: P=?NP Автор: Сергей НиколенкоНаверное, мало кто из людей, связанных с компьютерной индустрией, не слышал об этой задаче, занимающей центральное место в современной теоретической (и практической) информатике. За применениями ее возможного решения
Голубятня: Гаджеты года. Часть первая Опубликовано 25 декабря 2012 года
Голубятня: Гаджеты года. Часть первая Опубликовано 25 декабря 2012 года Две последние Голубятни уходящего 2012 года я отдам под хит-парад самых потрясающих открытий, какие мне довелось сделать в hardware. Как и полагается, countdown начнем с конца, поэтому сегодня я
Компьютеррные события года
Компьютеррные события года Несколько дней назад я (я — это Сергей Вильянов) попросил всех коллег написать несколько слов о том, что в уходящем году взволновало/заинтересовало/удивило/обрадовало их больше всего. При этом тематика жёстко не оговаривалась; мы договорились
Два года спустя: Замечена атака
Два года спустя: Замечена атака Джордж и Натан проработали около двух лет, пока на их сайт из Интернета не «забрел» хакер. Натан обнаружил хакера благодаря написанной им программе для отслеживания времени доступа клиентов (программа была довольно хорошей). На выходе она
Машина времени «Суворин и сын», или Найдите десять отличий года нынешнего и года 1913-го Василий Щепетнёв
Машина времени «Суворин и сын», или Найдите десять отличий года нынешнего и года 1913-го Василий Щепетнёв Опубликовано 26 мая 2013 Нет, сколь ни выворачивайте карманы старых брюк, ни шарьте в ящиках письменного стола, ни листайте «Книгу о вкусной и
Понедельник, 16 октября 1989 года
Понедельник, 16 октября 1989 года Космический центр имени Кеннеди, Флорида.NASA лихорадило от возбуждения по мере приближения времени запуска. «Галилей» наконец-то отправлялся к Юпитеру.Руководители и научные сотрудники самого престижного в мире космического агентства
Среда, 18 октября 1989 года
Среда, 18 октября 1989 года Космический центр имени Кеннеди, ФлоридаПять членов экипажа «Атлантиса» получили в среду утром не слишком приятные известия. Метеорологи с сорокапроцентной вероятностью предсказывали дождливую и облачную погоду в районе стартовой площадки. А
Тридцать четыре года спустя
Тридцать четыре года спустя Сиэтл, 1999. Я заказал две порции кофе с молоком и белым шоколадом и протянул бармену в качестве оплаты карточку Mileage Plus First Card. Несмотря на то что напитки стоили всего по 3 доллара каждый, я предпочел заплатить комиссию за транзакцию вместо
Времена года
Времена года Каждое время года дарит фотохудожнику свои подарки, поэтому не откладывайте съемку пейзажа только на летний отпуск. Замечательные пейзажи можно сделать и в зимний день. Не забывайте, что при зимней съемке необходимо вводить экспокоррекцию, чтобы снег
Новая война для нового года
Новая война для нового года Автор: Киви БердВсе чаще и чаще в сообщениях СМИ и выступлениях важных шишек начинает мелькать выражение "холодная кибервойна". Причем контекст, в котором звучит новый термин, окрашен в драматические тона примерно такого рода:
Десять технотронных потрясений года
Десять технотронных потрясений года Автор: Сергей ГолубицкийДесять технотронных потрясений года (замечательная, надо сказать, традиция "КТ"!) освежевываю в памяти, трясясь в поезде традиционного для меня направления. В отличие, однако, от предыдущего опыта - сутки на