Среди национальных лидеров различных стран не так много тех, кто хорошо разбирается в современных технологиях. И еще меньше тех, кто может самостоятельно написать какую-либо программу. Похоже, Сингапуру очень повезло со своим премьер-министром — кроме решения важных государственных проблем, Ли Сяньлун может писать программы на C++. На днях Сяньлун выложил в общий доступ свою решалку Судоку, плюс исходный код программы.

Об этой программе премьер-министр упомянул в своем обращении к представителям ИТ-индустрии от 20 апреля. Стоит отметить, что саму программу он написал несколько лет назад, теперь на это у премьер-министра просто нет времени.

Тем не менее, дети Ли Сяньлуна работают в ИТ-сфере, оба заканчивали MIT. После того как премьер-министр завершил речь, к нему обратилось сразу несколько человек с просьбой показать его программу.

Что и было сделано. Вот здесь размещен исходный код ПО, с примером работы, а также готовая программа. Работает все это в командной строке, в среде Windows. Для того чтобы начать работу, нужно ввести данные построчно, например, 1-3-8---6.

Кстати, если кто-то будет оценивать программу — отпишитесь в комментариях, хорош ли код, написанный премьер-министром.

Короткая справка из Вики: Ли Сяньлун (кит. трад. ???, упр. ???, пиньинь: Li Xian Long, англ. Lee Hsien Loong, род. 10 февраля 1952 года, Сингапур) — премьер-министр Сингапура с 12 августа 2004, сменил Го Чок Тонга; министр финансов с 2001 по 1 декабря 2007 года. Председатель правящей партии ПНД. Старший сын бывшего премьера Ли Куан Ю.
Окончил Тринити-колледж Кембриджского университета, математик. Служил в армии. Занимал различные министерские посты

Комментарии (33)


  1. BelBES
    05.05.2015 13:37
    +5

    Ну, во первых там код не плюсовый, а чистый ANSI C, даже переменные объявляются только в начале блоков (=
    Как по мне, так код написан так себе, т.к. в функциях присутсвует куча неявных изменений глобальных данных без прямой передачи их в функцию через параметры, именование переменных тоже не айс (то с маленькой буквы, то с большой). Думаю, что эту программулину товарисч написал не несколько лет назад а в далекие студенческие годы.

    з.ы. ну и коды не в репозитории — это теперь почти моветон (=


    1. Sequd
      05.05.2015 14:54
      +18

      Как по мне, так код написан так себе

      Он премьер Сингапура, а чего добился ты?


      1. BelBES
        05.05.2015 15:06
        +24

        Он премьер Сингапура

        The eldest child of Singapore's first prime minister Lee Kuan Yew and his wife Kwa Geok Choo

        И чего такого особенного он добился при таких родителях?
        Да и не понимаю я, почему я должен умиляться говнокоду человека, который программирование изучал в одном из лучших ВУЗ'ов мира.


        1. BelBES
          05.05.2015 15:14
          +3

          з.ы. судя по карме, много на ГТ оскорбленных моими коментами граждан Сингапура (=


          1. iroln
            05.05.2015 15:24
            -4

            Просто вы сразу начали агрессивно критиковать, что, видимо, кому-то не очень понравилось. Вы представляете, что какой-нибудь наш высокопоставленный чиновник будет выкладывать свой код куда-нибудь и рассказывать об этом? Я вот не представляю. :)


            1. BelBES
              05.05.2015 15:55
              +13

              А чего там было агрессивного? О_о


          1. iUser
            06.05.2015 05:11

            Из граждан Сингапура в данной теме, скорее всего, я в единственном числе. Поэтому не надо на нас инсинуаций насчёт кармы :)

            Код как код, выглядит как и должен выглядеть код написаный специалистом в другой прикладной области, решившим попрограммировать самостоятельно по книжке в качестве хобби. Умиляться коду совершенно незачем. Тем более, что код в этой новости на втором месте.

            А ещё у нас есть министр, который достаточно адекватно занимается C и Arduino :)


            1. BelBES
              06.05.2015 11:27
              +2

              Ну вообще то у него именно что профильное образование, причем полученное в Кембридже ;-)
              А судя по коду, не похоже, чтобы он был написан недавно и очень смахивает на студенческую лабораторку.

              А вообще IT-шник в политике — это хорошо как минимум потому, что есть вероятность, что он будет развивать эту отрасль со знанием дела, а не с префиксом «нано-», как у нас)


              1. iUser
                06.05.2015 15:02

                Он по образованию больше математик, CS — это сопутствующий диплом. Поэтому код именно что на студенческий и похож.

                В нашем парламенте самый IT-шник — это как раз ардуинщик. Который на самом деле доктор медицинских наук. Он, кстати, и отвечает за новую госпрограмму Smart Nation.

                С поддержкой отрасли тут всё очень хорошо :)


    1. BalinTomsk
      05.05.2015 19:31
      -2

      Мне кажется хреновы вы код разбирали, S2 определяется стазу после if.
      Так что C++ однозначно.


      1. BelBES
        05.05.2015 19:51
        +3

        Ну или это ANSI C99, начиная с которого стало можно объявлять переменные не только глобально, или в начале блока. Т.ч. не однозначно (=


  1. ChiefPilot
    05.05.2015 13:51

    Извините, но сразу вспоминается анекдот про Брежнева и то, как он спрашивает у Пельше, читал ли он «Малую землю»! Ни в коем случае никак не хочу обидеть премьер-министра Сингапура (может, он и правда такой!), но если остальные решат уподобиться ему, то возможно появление вот таких вот «Малых земель»…


  1. cesium
    05.05.2015 14:14
    +43

    Сразу вспоминается анекдот:

    … и выиграл сразу в двух номинациях: «Лучший программист среди премьер-министров» и «Лучший премьер-министр среди программистов».


  1. mbait
    05.05.2015 14:49
    +6

    Код — норм. Именование переменных немного странное, некоторые блоки невыровненны, что может быть причиной копипасты, а может — и нет. Если код действительно его, то очень круто (наверно) иметь такого премьера.


    1. virtualtoy
      05.05.2015 16:54
      +2

      Чем круто? Похоже просто на хобби, не хуже, не лучше других.


      1. mbait
        05.05.2015 17:53
        +2

        Круто тем, что такой человек не позволит себе опуститься до того, чтобы воровать бюджетные деньги, нести какую-то чушь из телевизора или обвинять другие страны в своих бедах. Его «понтами» будет не количество денег, которую он успел утащить подальше от дома, а уровень развития родной страны. Ну, и как бы уровень развития Сингапура намекает об этом.


        1. nullptr
          05.05.2015 18:00
          +10

          Круто тем, что такой человек не позволит себе опуститься до того, чтобы воровать бюджетные деньги, нести какую-то чушь из телевизора или обвинять другие страны в своих бедах.
          У меня есть смутное подозрение, что люди начинают воровать, нести чушь из телевизора и заниматься прочими подобными вещами совершенно не потому, что они не знают С++.


          1. mbait
            05.05.2015 18:14
            +1

            Импликацию обращать нельзя. Из A => B следует только, что !B => !A, но никак не !A => !B.


            1. virtualtoy
              05.05.2015 18:22
              +8

              Первая посылка вашего силлогизма: политик, умеющий кодить — честен. Думаю, можно не продолжать :)


        1. BelBES
          05.05.2015 19:53
          +4

          Борис Березовский преподавал в ВУЗ'е, имел докторскую степень по математике, был членом академии наук, опубликовал чертову кучу статей, руководил IT-отделом АвтоВАЗ'а в лохматые 80-е годы. Но тем не менее против него было заведено немало уголовных дел. Т.ч. вряд ли и тут есть какая-то связь между умением программировать и отсутствием криминальных наклонностей. Хотя исключать такой связи тоже не стоит.


          1. cesium
            05.05.2015 20:51
            +3

            Скорее всего связи нет, иначе это напоминает одно из произведений Жванецкого — «Консерватория».

            Консерватория, аспирантура, мошенничество, афера, суд, Сибирь.

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

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

            Может, что-то в консерватории подправить?


    1. f3ath
      06.05.2015 08:47

      Не причиной, а следствием. Не надо путать причину и следствие. В особенности не надо путать следствие.


  1. zenden2k
    05.05.2015 15:06
    +7

    Код лучше, чем у некоторых сеньоров-помидоров.


  1. pehat
    05.05.2015 17:24
    +3

    Ждем ответа от главблогера. Тем более, что он уже умеет в гипертекстовый векторный фидонет.


  1. Lertmind
    05.05.2015 17:48

    Работает быстро, но не хватает проверки на неверные входные данные. Программа перебирает даже для таких данных:

    Входные данные
    123456789
    123456789
    ---------
    ---------
    ---------
    ---------
    ---------
    ---------
    ---------
    


  1. nullptr
    05.05.2015 17:55
    -3

    В другой стране когда-то давно какой-то мужик в высшим математическим образованием осилил совершить действие, которое в принципе под силу толковому учащемуся средней школы в Усть-Зарюпинске.
    Это считается новостью, заслуживающей публикации. Журнализм.


  1. prishelec
    05.05.2015 18:59

    Если бы я не знал, то сильно усомнился бы в том, что это код премьер-министра. Кодеров с таким стилем еще поискать надо (я про стиль, а не про логику).


  1. Gular
    05.05.2015 20:55

    Интересно, Дворкович может что-то подобное предоставить? Неважно на чём.


    1. murzilka
      06.05.2015 17:08

      Почему Дворкович а не Сурков?


  1. kosmos89
    06.05.2015 03:11
    +3

    >Кстати, если кто-то будет оценивать программу — отпишитесь в комментариях, хорош ли код, написанный премьер-министром.
    Итак, оценка со всей строгостью, без скидок на непрофессионализм и размер программы:
    1. Код пронизан магическими числами.
    2. Почти весь код — чистый Си. Но вкралась 163-я строка, которая все портит. Надо было настроить компилятор таким образом, чтобы он такое не пропускал (или просто назвать файл .c)
    3. Отсутствие соглашения об именовании. Полная каша.
    4. Однобуквенные и прочие непонятные и неоднозначные имена переменных.
    5. Слишком императивный подход. Непонятный поток управления. Place() в случае успеха вызывает Succeed(), при этом ничего не возвращая. Лучше бы вернул результат, а вызывающий сам решил, что с ним делать. Соответственно, повторное использование кода затруднено. Сюда же относятся глобальные переменные.
    6. Плохая декомпозиция. Алгоритм не понятен. Что происходит в main()? Какие-то циклы, что они делают? Затем идет ConsoleInput(), затем какой-то Place() и, по сути, всё. А где результат и где он выводится? Как читающий должен догадаться, что он в Place()?
    7. Высокоуровневый алгоритм переплетен с битоё*ством. Но это тоже относится к проблемам декомпозиции.


  1. serafims
    06.05.2015 10:15

    Вот не надо всех судить по способности написать программу. Думаю, министру культуры это не так важно, как какие-то творческие навыки. И не факт, что Сингапуру этот премьер-министр был бы бесполезен, не научившись он в университете основам программирования. Это полезно, так как тренирует мозги, поэтому и хорошо, что программирование есть в программах обучения, даже если оно не очень полезно с прикладной точки зрения (какой-нибудь консольный турбопаскаль в наши времена).
    Главное, будучи на высоких постах, не быть узким специалистом, не видящим картины в целом, не имеющего системного подхода к решению проблемы.


  1. entze
    06.05.2015 11:51
    +1

    Да у нас и свои таланты имеются!
    github.com/dmalikov


    1. KvanTTT
      06.05.2015 15:33
      +2

      Надеюсь все понятно, что это фейк?)