День теоремы Пифагора

Сегодня, 16.12.2020, отмечается день теоремы Пифагора. Он отмечается лишь тогда, когда сумма квадратов даты и месяца равна квадрату года. 16² + 12² = 20²


Праздник бывает не каждый год. Предыдущий день был 15.08.2017, а следующий будет 24.07.2025.

Вы смотрите срез комментариев. Показать все
651
Автор поста оценил этот комментарий

16/12/20

24/07/25

24/10/26

04/03/05

03/04/05

08/06/10

06/08/10

12/05/13

05/12/13

12/09/15

09/12/15

15/08/17


for ($i=0; $i<=365*100; $i++)

{

$d=date('d',time()+3600*24*$i);

$m=date('m',time()+3600*24*$i);

$y=date('y',time()+3600*24*$i);

if (($d*$d+$m*$m)==$y*$y) echo $d.'/'.$m.'/'.$y.'<br>';

}

раскрыть ветку (150)
1219
Автор поста оценил этот комментарий
А вы так много долларов можете писать, потому что вы программист и вам много платят?
раскрыть ветку (31)
89
Автор поста оценил этот комментарий
Пхпшникам так мало платят, что они пишут доллар в каждой переменной
раскрыть ветку (2)
15
Автор поста оценил этот комментарий
Это потому что пхп сделали евреи
3
Автор поста оценил этот комментарий

Искал этот комментарий

218
Автор поста оценил этот комментарий

Скорее программист пытается сказать, что заработки непостоянные. Потому что знаком "$" в нескольких языках объявляют переменную.

З.Ы. Не погромист, могу ошибаться

раскрыть ветку (23)
40
Автор поста оценил этот комментарий

это php, на нём сайты пишут
Пикабу вроде тоже на php написан

А вот здесь его код проверить можно

https://paiza.io/projects/JF0JOupIG2uzfqI-ulNaaQ

раскрыть ветку (21)
52
Автор поста оценил этот комментарий
Ты чего напугал? Я думал, код пикабу там можно проверить.
раскрыть ветку (20)
36
Автор поста оценил этот комментарий
Код Пикабу проверяется нажатием на кнопку ф12 в любом десктопном браузере
раскрыть ветку (19)
67
Автор поста оценил этот комментарий

Так фейсбук можно скопировать

раскрыть ветку (7)
44
Автор поста оценил этот комментарий

А вот и идея для стартапа!

раскрыть ветку (4)
16
Автор поста оценил этот комментарий

ПФ, был такой клиент,

раскрыть ветку (3)
33
Автор поста оценил этот комментарий

Фамилия не Дуров?

раскрыть ветку (2)
57
Автор поста оценил этот комментарий
Недуров
15
Автор поста оценил этот комментарий
Верни стену!!
8
Автор поста оценил этот комментарий

Это как копировать ярлыки на дискету)

4
Автор поста оценил этот комментарий

wget -r -k -l 7 -p -E -nc http://facebook.com
Заебешься с F12 копировать. Держи, может пригодиться.

P. S. Не проверял работает ли с этими ключами, тупо скопипастил, но однажды так один лэндос копировал ради интереса.

22
DELETED
Автор поста оценил этот комментарий

Нет, это только фронтенд, в котором нет ничего секретного

раскрыть ветку (2)
18
Автор поста оценил этот комментарий

Причем уже скомпилированный, а местами и минифицированный :)

раскрыть ветку (1)
13
Автор поста оценил этот комментарий
Мумифицированный?
6
Автор поста оценил этот комментарий
Или альт f4 на компе
8
Автор поста оценил этот комментарий

Только фронт, бекенд вам никто не покажет

раскрыть ветку (3)
28
Автор поста оценил этот комментарий
А если сзади обойти?
раскрыть ветку (2)
29
Автор поста оценил этот комментарий

За монитор заглянуть надо

раскрыть ветку (1)
4
Автор поста оценил этот комментарий
Иллюстрация к комментарию
3
Автор поста оценил этот комментарий
В контексте обсуждения бэкэнд кода ваш коммент ложен
2
Автор поста оценил этот комментарий
Не код, а то что этот код сгенерировал в виде отображенной странички html.
3
Автор поста оценил этот комментарий
Я про бэк
1
Автор поста оценил этот комментарий
это да, $ нынче очень непостоянный...
31
Автор поста оценил этот комментарий

Нет, просто он php-шник

2
Автор поста оценил этот комментарий
Количество долларов в тексте обратно пропорционально зарплате!
Автор поста оценил этот комментарий
не, он не программист, он пыхарь
1
Автор поста оценил этот комментарий

Этому пдатят мало, потому как он пишет хрень )

64
Автор поста оценил этот комментарий

Ээ, блин, это выходит, что после 2026 года следующий раз праздник будет только в 2105 году? :(

раскрыть ветку (3)
95
Автор поста оценил этот комментарий

А вы оптимист, еще до 2021 не дожили, а уже на 2105 засматриваетесь.

раскрыть ветку (2)
14
Автор поста оценил этот комментарий
На пятёре в своё время ездить учились.
Автор поста оценил этот комментарий

и с чего бы ему не дожить до 2021?

16
Автор поста оценил этот комментарий
Вот раньше были нормальные языки программирования, бесплатные - бейсик, паскаль... а не это вот все, за доллары ваши...
раскрыть ветку (7)
4
Автор поста оценил этот комментарий

Питон в обсуждении выше на пару сообщений и есть наследник Бэйсика и Паскаля, простой народный язык для любых ОС, интуитивно понятный.

Паскаль и сейчас жив в составе Delphi и бесплатен, если вы с него не зарабатываете более 100 000$ в год ))

раскрыть ветку (2)
1
Автор поста оценил этот комментарий
Только Delphi уже практически мертв. Ещё жив только из-за легаси.

Наследник и нынешний обладатель технологии Embarcadero ломит адский ценник за то, что едва трепыхается и развивается почти никак.

Альтернативный Lazarus... Ну, open source частенько развивается крайне медленно, если нет коммерческого интереса. Также и тут вышло.

Сейчас ещё и Microsoft активно вливает бабло в свой .Net, который является прямым конкурентом Deplhi. Плюс, активное сообщество, которое развивает и поддерживает экосистему библиотек. У Delphi всего этого нет.

Так, что, увы и ах, но если вышеперечисленное не случится и здесь, то технология просто сгинет в анналах истории.
раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Только Delphi уже практически мертв. Ещё жив только из-за легаси.

Даже 0.1% проектов это сотни тысяч программистов

Embarcadero ломит адский ценник за то, что едва трепыхается и развивается почти никак.

1. С 2019 бесплатен, если не зарабатываете на Delphi более 100 000$ в год. А если зарабатываете 2000$ не сделают вас беднее, всё логично.

2. Цена не большая, сраный Инвентор рисовать детальки 2500$ в год подписка, для всех. Некоторые покупают даже для хобби проектов.

Microsoft активно вливает бабло в свой .Net

По сути это и есть Delphi, они купили разработчиков и по внешнему виду даже видно что по сути одно и то же. Только .Net требует, а Дельфи компилируется в быстрый код. Один exe файл и больше ничего не требует.

технология просто сгинет в анналах истории.

Даже динозавры Фортран, Ада, Кобол еще используются.

А так да, Питон кажется более универсальным, все на него думаю перейдут как на стандарт программирования.

1
Автор поста оценил этот комментарий

В перечисленных тобой языках строки и число разные типы переменных, у меня получаются строки 02, 03, 04, перемножают с собой до 4, 9, 16 и успешно складываются для сравнения формулы. на выходе дата с нулями. delphi у меня стоит, но:

- его надо запускать

- я на нем не работал год, а коммерческой разработки лет 5 точно не было, но даже сейчас помню что дата там объект, вы предлагаете для такой простой задачи использовать ООП?


в целом согласен, надо было javascript использовать, чтобы любой  мог в консоли пикабу проверить.

раскрыть ветку (3)
3
Автор поста оценил этот комментарий
Так в питоне вообще всё объект...
1
Автор поста оценил этот комментарий
И вообще давно пора свою платформу для Pikabu-ботов развернуть.
Автор поста оценил этот комментарий

Delphi не обязательно как ООП использовать,  3 вложенных цикла FOR и всё.

23
Автор поста оценил этот комментарий
Лови PHP-шника!
4
Автор поста оценил этот комментарий
Это в каждом столетии, получается, вообще все дни Пифагора, которые могут быть?
раскрыть ветку (1)
21
Автор поста оценил этот комментарий
Да, всего 12 дней на век. В январе, феврале и ноябре дней Пифагора не бывает, зато в августе – дважды, а в декабре – трижды за столетие. Чем больше делителей у номера месяца, тем больше шансов иметь день Пифагора.
17
Автор поста оценил этот комментарий
Ловите PHPэшника!
раскрыть ветку (2)
34
Автор поста оценил этот комментарий
Вытряхивайте из него доллары!
раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Зачем вам столько переменных? Неуж-то "стабильность" наскучила?

3
Автор поста оценил этот комментарий
Давайте бухать по более существенным праздникам? Например цикличная последовательность от 1 до 30?
12
Автор поста оценил этот комментарий

Корявая версия на Python (после 2026 праздников не будет!)

Иллюстрация к комментарию
раскрыть ветку (11)
4
Автор поста оценил этот комментарий

https://codepen.io/akeinhell/pen/QWKvaOq?editors=0010


Вот вам на JS с учетом високосных :-)

Иллюстрация к комментарию
раскрыть ветку (1)
2
Автор поста оценил этот комментарий
Сколько модулей пришлось подключить?
3
Автор поста оценил этот комментарий
Ужасный вариант. 31 день не включён, теряем часть дней. А ещё у нас появляется 30 февраля. В чем проблема взять date() и прибавлять timedelta(days=1)?
раскрыть ветку (1)
3
Автор поста оценил этот комментарий
Номер дня не может быть простым числом, большим 5, а январь и февраль в любом случае не подходят, так что код скорее избыточен.
1
Автор поста оценил этот комментарий

А чего она корявая? Лучше и не придумать.

раскрыть ветку (6)
10
Автор поста оценил этот комментарий

Согласен – вполне себе рабочий код:
#python 3.7.1
for y in range (1,100):
for m in range (1,13):
for d in range (1,32):
if d**2 + m**2 == y**2:
print (f'{d:02}.{m:02}.{y:02}')

Иллюстрация к комментарию
раскрыть ветку (2)
6
Автор поста оценил этот комментарий

Корявая потому, что количество дней в месяце всегда 31

раскрыть ветку (1)
Автор поста оценил этот комментарий

Такой будет валидным с теми же результатами:
for y in range (3,33):
for m in range (3,13):
for d in range (3,31):
if d**2 + m**2 == y**2:
print (f'{d:02}.{m:02}.{y:02}')

2
Автор поста оценил этот комментарий

Только непонятно, почему у @x4ile, перебор не до 2099 года. Но с математической точки зрения действительно достаточно перебирать только до 34-го.

раскрыть ветку (1)
5
Автор поста оценил этот комментарий
Пифагоровых троек с 1 и 2 не существует, так что начинать можно с 3. Максимальный день месяца тоже можно исключить (т.к. 31 – число простое и для него единственная очевидная тройка: 31² + 480² = 481², с числами (31²±1)/2). Тогда 30² + 12² = 1044 < 33² = 1089. Получаем декартово произведение [3,32]×[3,12]×[3,30]. Но это уже, конечно, не чистый перебор всех возможных вариантов.
1
Автор поста оценил этот комментарий

ну, вывод некрасивый ) а так рабочая, да

2
DELETED
Автор поста оценил этот комментарий
может противники пхп напишут аналогичный рабочий код на каком-нибудь эликсире? мммм?
раскрыть ветку (5)
6
Автор поста оценил этот комментарий

for (y=0; y<=34; y++)

for (d=1; d<=31; d++)

for (m=1; m<=12; m++)

if ((d*d+m*m)==y*y) console.log(d+'/'+m+'/'+y);


в консоле на пикабу

раскрыть ветку (3)
1
Автор поста оценил этот комментарий

Надо учесть 30-дневные и февраль отдельно

раскрыть ветку (2)
6
Автор поста оценил этот комментарий

Как уже ниже ктото написал раз их нет в результате вывода, значит и нет смысл проверять, была бы хоть одна дата с 31 числом, можно было бы обсудить.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Уговорил

Автор поста оценил этот комментарий

В функциональном стиле (WL, доступен на lab.wolframcloud.com):

Select[Tuples[
Range/@{31, 12, 99}
], {1, 1, -1}.#^2 == 0&]

Вывести можно списком дат:
Sun 3 Apr 2005
Fri 4 Mar 2005
Thu 5 Dec 2013
Fri 6 Aug 2010
Tue 8 Jun 2010
Wed 9 Dec 2015
Sun 12 May 2013
Sat 12 Sep 2015
Tue 15 Aug 2017
Wed 16 Dec 2020
Thu 24 Jul 2025
Sat 24 Oct 2026

1
Автор поста оценил этот комментарий
А br зачем открыт в конце?
раскрыть ветку (4)
Автор поста оценил этот комментарий
Чтобы перенос
раскрыть ветку (3)
Автор поста оценил этот комментарий
Или <br/> или я тормоз
раскрыть ветку (2)
1
Автор поста оценил этот комментарий
Непринципиально. HTML не требует самозакрывающих тегов
раскрыть ветку (1)
Автор поста оценил этот комментарий
Блин... Зато я раньше... Все <бр>, <а хрефы, и прочие <хр> обязательно открывая, закрывал. А то вылезало на странице
1
Автор поста оценил этот комментарий

Педант бы сказал, что надо проверить ещё 24 дня: количество дней в 100 годах от и до сегодняшней даты i = 365*100+ количество високосных лет

раскрыть ветку (2)
Автор поста оценил этот комментарий

Так у ТС сказано что предыдущий был 15.08.17 , он у меня последний.


365.25 надо было

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Если программу запустить завтра, то сегодняшний день она не найдёт. Мы же проверяем ТС и не можем брать его данные как исходные.

Да, нужно 25 добавлять, а не 24. А то вдруг её запустят например 13.16.2320 (2400 - високосный), ну или в любой день после подходящего в 23хх-м годах, тоже не сработает.

1
Автор поста оценил этот комментарий
А почему только первые 100 лет считает? У нас их уже больше 2000
раскрыть ветку (22)
7
Автор поста оценил этот комментарий

Да потому что я быстро состряпал, а если подумать то:


31^2+12^2= 1105, поэтому там максимум 33 год. Но с другой стороны 33 год пришлось бы отсчитывать от 2000 да еще учитывать високосные даты, а так 100 лет от сегодняшнего дня.

раскрыть ветку (16)
1
Автор поста оценил этот комментарий

29 февраля любого года подходить не будет. Високосный год или нет - никак не влияет

раскрыть ветку (1)
5
Автор поста оценил этот комментарий

И даже 29 числа любого месяца: т.к. 29 – число простое, то разложить 29² на множители можно только как 29² = 1×841. Тогда если d² + m² = y² и d = 29, то y² – m² = (y – m)×(y + m) = 1×841, откуда y = (841 + 1)/2 = 421, m = (841 – 1)/2 = 420 и единственная пифагорова тройка: 29² + 420² = 421².

1
Автор поста оценил этот комментарий
А еще можно не считать квадраты если сумма дней и месяцев больше года. И вообще сделать тройной цикл и в дату не переводить)
раскрыть ветку (13)
Автор поста оценил этот комментарий

"И вообще сделать тройной цикл и в дату не переводить"


для этого надо заранее знать что среди дат нет високосных.


в твоем случае 29.02 = 2021  если бы дало верный результат то  такой даты не существует.

раскрыть ветку (12)
Автор поста оценил этот комментарий
Не дало бы это верный результат. Хотя бы потому что 2021 в кв. Слишком дофига получается. И почему вы думаете что проверить делится ли год на 4 это трудно?
раскрыть ветку (11)
1
Автор поста оценил этот комментарий
Чуть сложнее. Каждый 400-й год високосный, НО не каждый 100-й! Поэтому не каждый 4-й. И не важно, что 100/4=25
раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Нам в этом плане повезло: 180 лет подряд високосным является каждый четвёртый.
1
Автор поста оценил этот комментарий

При чем тут поделить на 4?


Если ты собрался писать три цикла, один из которых перебирает все дни от 1 до 31, то как минимум 5 раз в год, это не верно, не всегда в месяце 31 день, даже без 28/29 февраля. т.е. ты будешь массив сохранят с количеством дней в каждом из 12 месяцев. Нее, мой код раз в 5 проще, и не требует проверки существования даты, так как проходит по циклу по всем датам от сегодня, за 100 лет.

раскрыть ветку (8)
1
Автор поста оценил этот комментарий
For(year=1;year<=100;year++) {
For (month=1;month <= 12; month++) {
For(day=1;day <= 31; day++){
If(day*day + month*month === year * year && checkdate (month, day, year)){
echo "{day}.{month}.{year}";
}
}
}
}
так понятнее? Пишу с телефона так что кривовато. И без значков бакса
раскрыть ветку (7)
3
Автор поста оценил этот комментарий

он пишет, что ваш цикл может выдать 31 ноября какого-нибудь года в качестве правильного ответа, когда такой даты не существует, а первоначальный цикл в принципе не переберет эту дату


другое дело, что начиная с 29 числа любого месяца даты Пифагора в принципе отсутствуют, что легко проверяется на коленке:
год всегда больше дня (иначе тупо правило невыполнимо при любом месяце)
29.mm.30 не подходит (нет целого числа)
29.mm.31 не подходит (нет целого числа)
29.mm.32 и дальше не подходит, т.к. mm должен быть уже больше 12

то же самое и с 30 и с 31 числом, поэтому ваш цикл имеет право на жизнь


вопрос только, какая разница, какой из этих кодов использовать?)

раскрыть ветку (4)
4
Автор поста оценил этот комментарий
Если вы не заметили то перед выводом дата валидируется. И некорректная дата не выведется. Разница в том что в том цикле идет работы с датой +вычиление timestamp, а следовательно он будет в разы медленнее и будет потреблять намного больше памяти. Кол-во итераций можно ещё очень сильно сократить если добавить ещё несколько условий в цикл.
раскрыть ветку (2)
Автор поста оценил этот комментарий

И поэтому мой код:


04/03/05

03/04/05

08/06/10

06/08/10

12/05/13



А твой:

4/3/5

3/4/5

/8/6/10

6/8/10

12/5/13


Еще в моем коде есть смысл в 100 годах,так как я с текущей даты проверяю,  определяю ближайшие события, а  в твоем нет. повторяюсь 34 в квадрате это больше чем 31*31+12*12. Нет смысла проверять больше 34 year

раскрыть ветку (1)
Автор поста оценил этот комментарий

Да я в целом согласен, нет в моем выводе ни одной даты ни с 31, ни 30, ни с 28. Максимум 24, поэтому и нет смысла проверять эти даты на существования, вот были бы там 29 или 31, то решение без определение високосный или нет, бы было спорным а так пофигу :)

Автор поста оценил этот комментарий

day <= 31

31 февраля не существует
зачем ты его проверяешь?
а если вдруг найдётся дата?
она будет несуществующая

раскрыть ветку (1)
Автор поста оценил этот комментарий
Ну таки несущ дату он не выведет в конце. Я с телефона писал. Массивы с днями месяцев как то не очень вводить. А так это совсем несущ увеличивает колво итераций
2
Автор поста оценил этот комментарий

Так в любом веке даты одни и те же будут, в которые выполнятся условие про сумму квадратов. Ну типа 03/04/05 подходит вне зависимости от того, был ли это 2005, 1905 или просто 5 год.

раскрыть ветку (4)
1
Автор поста оценил этот комментарий
В условии четко сказано что квадрат года надо брать а не квадрат двух последних цифр года.
раскрыть ветку (3)
1
Автор поста оценил этот комментарий

поэтому сегодня день Пифагора, которое четко не подходит под условие, ведь год у нас не 20, а 2020?

раскрыть ветку (2)
1
Автор поста оценил этот комментарий

Ну хз. Думаю на всякий случай надо отметить.

Автор поста оценил этот комментарий
Вот именно. Поэтому сегодня не день Пифагора
Автор поста оценил этот комментарий
Прекрасно читается как числовое стихотворение.
за исключением пары рифм)
Автор поста оценил этот комментарий
На python с учётом високосных.
Иллюстрация к комментарию
раскрыть ветку (4)
1
Автор поста оценил этот комментарий
Но 1900 и 2100 ведь не являются високосными.
раскрыть ветку (3)
Автор поста оценил этот комментарий
Хмм, точно. Я думал, что каждый четвертый - високосный. Тогда так.
Иллюстрация к комментарию
раскрыть ветку (2)
2
Автор поста оценил этот комментарий

Так лучше, но в действительности в этом нет реальной необходимости, т.к. пифагоровых троек вида d² + 1² = y² и d² + 2² = y² не существует, поэтому range для месяца можно начинать с 3. Для d = 31 такой календарной тройки тоже не существует (и вообще для любого простого d > 5), поэтому range для дня можно сделать одинаковым для всех месяцев. А если есть желание перебрать все даты, то лучше использовать встроенные функции для работы с датами (вариант для Mathematica):
Select[
DateValue[
DayRange[
{1, 1, 1}, {99, 12, 31}
],{"Year","Month","Day"}
], {-1, 1, 1}.#^2==0&]

раскрыть ветку (1)
Автор поста оценил этот комментарий
Понятно, спасибо! :)
Автор поста оценил этот комментарий
рhр?
Автор поста оценил этот комментарий
Уважаемый комментатор, очень стало интересно узнать, куда нужно закинуть эту формулу (или код, я далек от всего этого), чтоб оно посчитало
раскрыть ветку (18)
2
Автор поста оценил этот комментарий

уже накидали ребята выше

https://paiza.io/projects/JF0JOupIG2uzfqI-ulNaaQ

1
Автор поста оценил этот комментарий
Jupyter notebook,
а есть ещё другие онлайн пхп отладчики
ещё комментарии
ещё комментарии
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку