Среди национальных лидеров различных стран не так много тех, кто хорошо разбирается в современных технологиях. И еще меньше тех, кто может самостоятельно написать какую-либо программу. Похоже, Сингапуру очень повезло со своим премьер-министром — кроме решения важных государственных проблем, Ли Сяньлун может писать программы на C++. На днях Сяньлун выложил в общий доступ свою решалку Судоку, плюс исходный код программы.
Об этой программе премьер-министр упомянул в своем обращении к представителям ИТ-индустрии от 20 апреля. Стоит отметить, что саму программу он написал несколько лет назад, теперь на это у премьер-министра просто нет времени.
Тем не менее, дети Ли Сяньлуна работают в ИТ-сфере, оба заканчивали MIT. После того как премьер-министр завершил речь, к нему обратилось сразу несколько человек с просьбой показать его программу.
Что и было сделано. Вот здесь размещен исходный код ПО, с примером работы, а также готовая программа. Работает все это в командной строке, в среде Windows. Для того чтобы начать работу, нужно ввести данные построчно, например, 1-3-8---6.
Кстати, если кто-то будет оценивать программу — отпишитесь в комментариях, хорош ли код, написанный премьер-министром.
Короткая справка из Вики: Ли Сяньлун (кит. трад. ???, упр. ???, пиньинь: Li Xian Long, англ. Lee Hsien Loong, род. 10 февраля 1952 года, Сингапур) — премьер-министр Сингапура с 12 августа 2004, сменил Го Чок Тонга; министр финансов с 2001 по 1 декабря 2007 года. Председатель правящей партии ПНД. Старший сын бывшего премьера Ли Куан Ю.
Окончил Тринити-колледж Кембриджского университета, математик. Служил в армии. Занимал различные министерские посты
Комментарии (33)
ChiefPilot
05.05.2015 13:51Извините, но сразу вспоминается анекдот про Брежнева и то, как он спрашивает у Пельше, читал ли он «Малую землю»! Ни в коем случае никак не хочу обидеть премьер-министра Сингапура (может, он и правда такой!), но если остальные решат уподобиться ему, то возможно появление вот таких вот «Малых земель»…
cesium
05.05.2015 14:14+43Сразу вспоминается анекдот:
… и выиграл сразу в двух номинациях: «Лучший программист среди премьер-министров» и «Лучший премьер-министр среди программистов».
mbait
05.05.2015 14:49+6Код — норм. Именование переменных немного странное, некоторые блоки невыровненны, что может быть причиной копипасты, а может — и нет. Если код действительно его, то очень круто (наверно) иметь такого премьера.
virtualtoy
05.05.2015 16:54+2Чем круто? Похоже просто на хобби, не хуже, не лучше других.
mbait
05.05.2015 17:53+2Круто тем, что такой человек не позволит себе опуститься до того, чтобы воровать бюджетные деньги, нести какую-то чушь из телевизора или обвинять другие страны в своих бедах. Его «понтами» будет не количество денег, которую он успел утащить подальше от дома, а уровень развития родной страны. Ну, и как бы уровень развития Сингапура намекает об этом.
nullptr
05.05.2015 18:00+10Круто тем, что такой человек не позволит себе опуститься до того, чтобы воровать бюджетные деньги, нести какую-то чушь из телевизора или обвинять другие страны в своих бедах.
У меня есть смутное подозрение, что люди начинают воровать, нести чушь из телевизора и заниматься прочими подобными вещами совершенно не потому, что они не знают С++.mbait
05.05.2015 18:14+1Импликацию обращать нельзя. Из A => B следует только, что !B => !A, но никак не !A => !B.
virtualtoy
05.05.2015 18:22+8Первая посылка вашего силлогизма: политик, умеющий кодить — честен. Думаю, можно не продолжать :)
BelBES
05.05.2015 19:53+4Борис Березовский преподавал в ВУЗ'е, имел докторскую степень по математике, был членом академии наук, опубликовал чертову кучу статей, руководил IT-отделом АвтоВАЗ'а в лохматые 80-е годы. Но тем не менее против него было заведено немало уголовных дел. Т.ч. вряд ли и тут есть какая-то связь между умением программировать и отсутствием криминальных наклонностей. Хотя исключать такой связи тоже не стоит.
cesium
05.05.2015 20:51+3Скорее всего связи нет, иначе это напоминает одно из произведений Жванецкого — «Консерватория».
Консерватория, аспирантура, мошенничество, афера, суд, Сибирь.
Консерватория, частные уроки, еще одни частные уроки, зубные протезы, золото, мебель, суд, Сибирь.
Консерватория, концертмейстерство, торговый техникум, зав. производством, икра, крабы, валюта, золото, суд, Сибирь.
Может, что-то в консерватории подправить?
f3ath
06.05.2015 08:47Не причиной, а следствием. Не надо путать причину и следствие. В особенности не надо путать следствие.
pehat
05.05.2015 17:24+3Ждем ответа от главблогера. Тем более, что он уже умеет в гипертекстовый векторный фидонет.
Lertmind
05.05.2015 17:48Работает быстро, но не хватает проверки на неверные входные данные. Программа перебирает даже для таких данных:
Входные данные123456789 123456789 --------- --------- --------- --------- --------- --------- ---------
nullptr
05.05.2015 17:55-3В другой стране когда-то давно какой-то мужик в высшим математическим образованием осилил совершить действие, которое в принципе под силу толковому учащемуся средней школы в Усть-Зарюпинске.
Это считается новостью, заслуживающей публикации. Журнализм.
prishelec
05.05.2015 18:59Если бы я не знал, то сильно усомнился бы в том, что это код премьер-министра. Кодеров с таким стилем еще поискать надо (я про стиль, а не про логику).
kosmos89
06.05.2015 03:11+3>Кстати, если кто-то будет оценивать программу — отпишитесь в комментариях, хорош ли код, написанный премьер-министром.
Итак, оценка со всей строгостью, без скидок на непрофессионализм и размер программы:
1. Код пронизан магическими числами.
2. Почти весь код — чистый Си. Но вкралась 163-я строка, которая все портит. Надо было настроить компилятор таким образом, чтобы он такое не пропускал (или просто назвать файл .c)
3. Отсутствие соглашения об именовании. Полная каша.
4. Однобуквенные и прочие непонятные и неоднозначные имена переменных.
5. Слишком императивный подход. Непонятный поток управления. Place() в случае успеха вызывает Succeed(), при этом ничего не возвращая. Лучше бы вернул результат, а вызывающий сам решил, что с ним делать. Соответственно, повторное использование кода затруднено. Сюда же относятся глобальные переменные.
6. Плохая декомпозиция. Алгоритм не понятен. Что происходит в main()? Какие-то циклы, что они делают? Затем идет ConsoleInput(), затем какой-то Place() и, по сути, всё. А где результат и где он выводится? Как читающий должен догадаться, что он в Place()?
7. Высокоуровневый алгоритм переплетен с битоё*ством. Но это тоже относится к проблемам декомпозиции.
serafims
06.05.2015 10:15Вот не надо всех судить по способности написать программу. Думаю, министру культуры это не так важно, как какие-то творческие навыки. И не факт, что Сингапуру этот премьер-министр был бы бесполезен, не научившись он в университете основам программирования. Это полезно, так как тренирует мозги, поэтому и хорошо, что программирование есть в программах обучения, даже если оно не очень полезно с прикладной точки зрения (какой-нибудь консольный турбопаскаль в наши времена).
Главное, будучи на высоких постах, не быть узким специалистом, не видящим картины в целом, не имеющего системного подхода к решению проблемы.
BelBES
Ну, во первых там код не плюсовый, а чистый ANSI C, даже переменные объявляются только в начале блоков (=
Как по мне, так код написан так себе, т.к. в функциях присутсвует куча неявных изменений глобальных данных без прямой передачи их в функцию через параметры, именование переменных тоже не айс (то с маленькой буквы, то с большой). Думаю, что эту программулину товарисч написал не несколько лет назад а в далекие студенческие годы.
з.ы. ну и коды не в репозитории — это теперь почти моветон (=
Sequd
Он премьер Сингапура, а чего добился ты?
BelBES
И чего такого особенного он добился при таких родителях?
Да и не понимаю я, почему я должен умиляться говнокоду человека, который программирование изучал в одном из лучших ВУЗ'ов мира.
BelBES
з.ы. судя по карме, много на ГТ оскорбленных моими коментами граждан Сингапура (=
iroln
Просто вы сразу начали агрессивно критиковать, что, видимо, кому-то не очень понравилось. Вы представляете, что какой-нибудь наш высокопоставленный чиновник будет выкладывать свой код куда-нибудь и рассказывать об этом? Я вот не представляю. :)
BelBES
А чего там было агрессивного? О_о
iUser
Из граждан Сингапура в данной теме, скорее всего, я в единственном числе. Поэтому не надо на нас инсинуаций насчёт кармы :)
Код как код, выглядит как и должен выглядеть код написаный специалистом в другой прикладной области, решившим попрограммировать самостоятельно по книжке в качестве хобби. Умиляться коду совершенно незачем. Тем более, что код в этой новости на втором месте.
А ещё у нас есть министр, который достаточно адекватно занимается C и Arduino :)
BelBES
Ну вообще то у него именно что профильное образование, причем полученное в Кембридже ;-)
А судя по коду, не похоже, чтобы он был написан недавно и очень смахивает на студенческую лабораторку.
А вообще IT-шник в политике — это хорошо как минимум потому, что есть вероятность, что он будет развивать эту отрасль со знанием дела, а не с префиксом «нано-», как у нас)
iUser
Он по образованию больше математик, CS — это сопутствующий диплом. Поэтому код именно что на студенческий и похож.
В нашем парламенте самый IT-шник — это как раз ардуинщик. Который на самом деле доктор медицинских наук. Он, кстати, и отвечает за новую госпрограмму Smart Nation.
С поддержкой отрасли тут всё очень хорошо :)
BalinTomsk
Мне кажется хреновы вы код разбирали, S2 определяется стазу после if.
Так что C++ однозначно.
BelBES
Ну или это ANSI C99, начиная с которого стало можно объявлять переменные не только глобально, или в начале блока. Т.ч. не однозначно (=