Блог пользователя A.K.Goharshady

Автор A.K.Goharshady, 13 лет назад, перевод, По-русски

Итак, языком этого раунда является Io. Io (первая буква — заглавная i) — скриптовый, чисто объектно-ориентированный язык программирования с динамической типизацией. Язык был разработан Стивом Декортом (Steve Dekorte) в 2002 году. Реализация является кросплатформенной, открытой (лицензия BSD) и рассчитана на лёгкость встраивания в качестве скриптового языка (из Wikipedia). Версия, установленная на Codeforces — Io-2008-01-07 (Win32).

Одна из основных особенностей языка — минималистичность синтаксиса. Код знаменитой программы "Hello World!" на этом языке выглядит так:

"Hello World!" println

А вот пример решения задачи "A+B" (числа заданы на разных строках):

a := File standardInput readLine asNumber
b := File standardInput readLine asNumber
c := a+b
c println

Вы можете скачать интерпретатор отсюда и следовать инструкциям из дистрибутива для установки. Также дистрибутив доступен по ссылке. Пароль — f0ca4da70e5c5f80

Дополнительную информацию можно прочесть в Wikipedia, а документация доступна на официальном сайте здесь. Вы можете найти больше еще информации, используя Google. Удачи и веселого вам контеста!

Во время контеста, вы можете пользоваться вкладкой "Запуск", но мы не гарантируем ее работоспособность при большом ажиотаже. В таком случае будьте готовы установить интерпретатор локально.

Обратите внимание, что так как интерпретатор Io всегда возвращает код возврата 0 и не имеет возможности проверить синтаксис программы до запуска, то вердикты "Ошибка компиляции" и "Ошибка времени исполнения" будут отображаться как "Неправильный ответ".

Задачи не отсортированы от простой к сложной.


Для предварительной загрузки доступен зашифрованный по паролю архив. Контест задерживается примерно на 10 минут. Пароль будет доступен примерно за 1 минуту до начала контеста.

[Вольный перевод оригинального поста]

Всем привет!

Unknown language round #1 был проведен 21-го февраля и мы решили повторить этот эксперимент.

Он будет проведен по правилам обычного ACM-ICPC контеста. Единственная особенность раунда - задачи на нем можно будет сдавать, используя один-единственный язык программирования. Какой именно это будет язык? Пока - секрет! Мы надеемся, что вам придется его изучить во время контеста, а сам язык будет анонсирован примерно за одну минуту до начала соревнования.

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

Дата раунда выбрана не случайна - это канун Нового Года в Иране и некоторых других странах.

Хафт син

Авторы задач — Alireza Farhadi, Saeed Ilchi, Sajjad Ghahramanpour, Zahra Rohanifar и я. Мы очень благодарны Михаилу Мирзаянову и Артему Рахову.

Кроме того, 20-е марта это день национализации нефти в Иране. Поэтому, мы посвящаем этот раунд Мосаддык.


Мосаддык, Иранский бывший премьер-министр и лидер национального фронта в национализации нефти
  • Проголосовать: нравится
  • +52
  • Проголосовать: не нравится

13 лет назад, # |
  Проголосовать: нравится +7 Проголосовать: не нравится
Happy  New Year (Norouz)

I like  Unknown Language Round 2 #
13 лет назад, # |
  Проголосовать: нравится +12 Проголосовать: не нравится
When this match will appear on the 'Contests' page?
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится
    It'll be scheduled soon :D
    But this post was written sooner because Mr.Mirzayanov wanted anyone (including those who didn't take part in ULR#1) to get familiar with the rules.
    For sure, It'd be there after beta round #62.
  • 13 лет назад, # ^ |
      Проголосовать: нравится +9 Проголосовать: не нравится
    It's in the list
13 лет назад, # |
  Проголосовать: нравится +9 Проголосовать: не нравится
Happy Nowruz to all!
13 лет назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится
unrated?
13 лет назад, # |
  Проголосовать: нравится +7 Проголосовать: не нравится
yes, it's unrated like unknown language round #1.
13 лет назад, # |
  Проголосовать: нравится +13 Проголосовать: не нравится
Happy norowz to all.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Bad thing it will coincide with CodeChef Cook-off. I wanted to finally participate in ULR. Probably next time
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Happy new year (1390)!


13 лет назад, # |
  Проголосовать: нравится +10 Проголосовать: не нравится
It will overlap with March Cook-Off Challenge on CodeChef!
13 лет назад, # |
  Проголосовать: нравится +7 Проголосовать: не нравится
это какун(?) Нового Года.
13 лет назад, # |
  Проголосовать: нравится +9 Проголосовать: не нравится
А у казахов этот новогодний праздник называется Наурыз (Nauryz).
13 лет назад, # |
  Проголосовать: нравится +2 Проголосовать: не нравится
Есть предположения, что это может быть за язык? Делаем ставки ))
13 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится
Could we not have a separate rating for the Unknown Language Rounds? It would be great and it would invite more serious participants.
13 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится
Почему контест не рейтинговый? Что мешает ему стать таковым?
  • 13 лет назад, # ^ |
      Проголосовать: нравится +5 Проголосовать: не нравится
    Он ведь для "развлекухи" и тренировки, к тому же врядли все сходу смогут находу новый язык так вот выучить. Некоторые и Си выучить не могут нормально :)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      для "развлекухи" стал бы рейтинговым, тогда бы точно выучили за 2 часа язык ;)
      • 13 лет назад, # ^ |
          Проголосовать: нравится +8 Проголосовать: не нравится
        Мир порочен, в жизни все ради денег, в интернете ради рейтинга 
13 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

Замечательный контест!

Сродни тому, как выжить в незнакомой стране. Нужно быстро овладеть языком, чтобы тебя не съели :)

Так держать!

13 лет назад, # |
  Проголосовать: нравится +10 Проголосовать: не нравится
Согласен, Unknown-Lnaguage Contest должен быть рейтинговым. Люди, которые знают язык на момент начала соревнования (если такие вообще существуют), все равно составляют статистическую погрешность и на рейтинг влияют так же: в рамках погрешности. 
Если кто-то, наоборот, боится за свой рейтинг, сомневается в своих способностях к обучению и не хочет участвовать, то он может не участвовать =)
Практическая же польза огромная: язык программирования - всего лишь средство, инструмент, и настоящий программист (скажу громче, Инженер =) должен уметь быстро учиться пользоваться любым инструментом с прикладной целью, даже если раньше его никогда не "держал в руках".
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Хотел узнать - когда выбирается время проведение соревнования на другие олимпиады ориентируются, чтобы не перекрывались, а то вот? Очень хотелось поучаствовать, но...

P.S. Sorry that
is not in English
13 лет назад, # |
  Проголосовать: нравится +11 Проголосовать: не нравится
Прикольно. Этот контест понравился Павлу.
  • 13 лет назад, # ^ |
      Проголосовать: нравится -13 Проголосовать: не нравится
    Что бы это значило? Если что-то типа Hacker Cup, я не против:)
    • 13 лет назад, # ^ |
        Проголосовать: нравится +3 Проголосовать: не нравится
      Справа сверху был виджет Мне нравится <3, и вот этот контест понравился Павлу.
      • 13 лет назад, # ^ |
          Проголосовать: нравится +1 Проголосовать: не нравится
        Типа я понял. Я думаю просто, зачем Павел зашел на КФ и поставил "мне нравится"
        • 13 лет назад, # ^ |
            Проголосовать: нравится +2 Проголосовать: не нравится
          Ну блин, тогда не надо такие ответы давать, чтобы мне приходилось быть Капитаном)
13 лет назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится
А что лежит в архиве? что-то вроде компилятора / интерпретатора?
13 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
Тут люди иностранные реквестировали про русские традиции...
Так вот всё же спрошу) Будет ли 1го апреля контест в честь Дня дурака смеха?)
  • 13 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится
    1 апреля - день математика)))))
    • 13 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
      Да, вот теперь мне совсем смешно)))
      upd: и правда) ссылка
      • 13 лет назад, # ^ |
          Проголосовать: нравится -9 Проголосовать: не нравится
        Стыдно не знать:) Помнишь хоть когда день программиста и день информатика?
        • 13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Программиста помню, а информатики это который 4 декабря или который? >_>
          • 13 лет назад, # ^ |
              Проголосовать: нравится -9 Проголосовать: не нравится
            Верно:) В мою днюху:) А программиста в день святого валентина:) Мы в этот день слали валентинки с программками :)
            • 13 лет назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится
              Да, точно, недавно же был. А я спутал его с днём сисадмина) Хотя постой те же, у нас теперь официально день программиста в сентябре. :)
            • 13 лет назад, # ^ |
              Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится
              День программиста отмечается на 256 день года. 12 сентября в невисокосном и 13 - в високосном году.
              А 14 февраля неофициально отмечается День компьтерщика, потому что именно в этот день была запущена первая ЭВМ - ENIAC
              • 13 лет назад, # ^ |
                  Проголосовать: нравится -12 Проголосовать: не нравится
                Развелось блин профессиональных праздников ппц. Так и печень убить можно:)
                • 13 лет назад, # ^ |
                    Проголосовать: нравится +13 Проголосовать: не нравится
                  А можно и не пить =/
                  • 13 лет назад, # ^ |
                      Проголосовать: нравится -21 Проголосовать: не нравится
                    Объясни мне как русский человек русскому человеку. Как это-не пить?!?!:))
                    • 13 лет назад, # ^ |
                        Проголосовать: нравится +4 Проголосовать: не нравится
                      Объясни мне как умный человек умному. Зачем пить?
                      • 13 лет назад, # ^ |
                          Проголосовать: нравится -19 Проголосовать: не нравится
                        Слушай_ты_меня_нервируешь_своей_серьезностью.
                        Это во-первых. А во-вторых, с чего ты взял что я умный?:)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Вообще вроде не везде это так). но у нас и Новосиба так. мы в этот день день студентов в математики принимаем)))
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
A .7z? Really?
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Не компилится это чудо из архива... :(
...
[ 88%] Building C object addons/Socket/CMakeFiles/IoSocket.dir/source/IoEvOutRequest.c.o
/tmp/other/stevedekorte-io-4907d9d/addons/Socket/source/IoEvOutRequest.c: In function ‘IoEvOutRequest_RequestDoneCallback’:
/tmp/other/stevedekorte-io-4907d9d/addons/Socket/source/IoEvOutRequest.c:110:48: error: dereferencing pointer to incomplete type
/tmp/other/stevedekorte-io-4907d9d/addons/Socket/source/IoEvOutRequest.c:110:48: error: dereferencing pointer to incomplete type
make[2]: *** [addons/Socket/CMakeFiles/IoSocket.dir/source/IoEvOutRequest.c.o] Error 1
make[1]: *** [addons/Socket/CMakeFiles/IoSocket.dir/all] Error 2
make: *** [all] Error 2

P.S. GCC 4.5.2
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
В задаче H на входные данные "-0" надо выводить "0" или "-0"?  Это не очевидно из условия.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Как на мове Іо будет целый тип данных, например int64?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Наверно, как ни странно "Number", и ей пофигу насколько он целый :)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      тип Number это не целый тип, а мне надо целый.
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Я ж сказал - ей пофигу насколько он целый. Любое число, даже целое - это Number.
        • 13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Интересный язык, только целых чисел не хватает.
          Пришлось вот так округлять вниз, чтобы отбросить дробную часть:
          x = x - x % 1
13 лет назад, # |
Rev. 2   Проголосовать: нравится -6 Проголосовать: не нравится
Все, wrong можно поздравлять с победой
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    А не факт ещё... у него было много повторных посылок - за них штрафы идут ;)
    • 13 лет назад, # ^ |
        Проголосовать: нравится -9 Проголосовать: не нравится
      Спасибо, объяснил мне правила АСМ:) Посчитай время когда он сдавал. Любой из участников даже если он сейчас все сдаст с плюса в течении секунды, проиграет ему.
      По секрету скажу, что tomek гарантированно второй:)
13 лет назад, # |
Rev. 3   Проголосовать: нравится +3 Проголосовать: не нравится
Версия компилятора из архива, собранная под линукс, ругается на функцию slice и не работает с ней, зато работает с exSlice. Версия на сервере не работает с exSlice, зато работает со slice. Обидно, кучу времени убил на это. Причем все это время выдавало wa. Было бы хорошо видеть там рантайм или вообще вывод чекера (допустим, только для тестов из условия, если они не проходят).
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    Версия под Линух вообще не собирается последним GCC.

    И вообще кстати странно, что exSlice не работает на сервере - такое впечатление, что у них там не такая версия, исходники которой в архиве, а более старая. Я смог собрать только версию из Генту более двухлетней давности - там exSlice уже было, мало того на использование slice ругалось "Warning in Command Line: 'slice' is deprecated. Use 'exSlice' instead.", но работало.

13 лет назад, # |
  Проголосовать: нравится +11 Проголосовать: не нравится
We can congratulate the participants wrong with a victory and tomek with a second place ahead of time
13 лет назад, # |
  Проголосовать: нравится +10 Проголосовать: не нравится
Спасибо за контест, было интересно.
13 лет назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится
Really nice round!

But wasnt 00000 a litte too evil test case on H :)
13 лет назад, # |
Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится
Nice round!
Unfortunately, i was late by 40 minutes.

Everyone, you must see my solution for D :)

http://www.iolanguage.com/paste/p/40c888e58.html
13 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
What is the way to convert a number to integer number?
 n = n / 10---> here n comes to be decimal and i want it to be integer....
13 лет назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится
Some functions suck as slice, exSlice seem to have different behavior between my laptop and the judge. I got some WA at sample due to this difference.
I built the Io interpreter from the given archiver (on ubuntu 10.04).
Anyway, this is an extremely funny contest. Thanks to the authors.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
How to read two numbers in one line?
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
по больше таких контестов :)
13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
А я один писал в F поиск в ширину для подсчета компонент связности?
Раунд хороший получился, я первый, у кого 6 задач. Седьмую не сдал, т.к. писал фигню (см. выше)
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    В глубину не проходило из-за маленького размера стека :)
    • 13 лет назад, # ^ |
        Проголосовать: нравится +1 Проголосовать: не нравится
      Посчитали количество блоков по одной координате, по другой, перемножили. И никаких поисков.
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Ага, я это понял на последней минуте контеста.
        А поиск TLE 32 у меня получил на дорешивании
13 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
python + lisp = io
13 лет назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится

as an author,i really wondered when i saw ivan.poplyshev's solution for problem D!

nice work man!

13 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
like the event...It is really fun to code in other language and got to know about Io...
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Похоже я один нашел способ заставить язык самому разобрать строку в D. Хотя видимо написать разбор было быстрее.
13 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
Nice contest, thanks.
I think these unknown languages can be added to the list of usual languages on usual rounds.
13 лет назад, # |
Rev. 2   Проголосовать: нравится +13 Проголосовать: не нравится
Today is one of the authors birthday!

Happy Birthday Amir ! :D
13 лет назад, # |
  Проголосовать: нравится +11 Проголосовать: не нравится
Congratulation!!  wrong 2 won straight victories on Unknown Language Round!!
13 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
Nice problems and nice language, it was very fun (:
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А решения других участников будут доступны? Интересно же, как остальные писали.
  • 13 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится
    А они и так доступны)
    ctrl+левый клик по посылке -- появится окно истории посылок, нажимаешь на id посылки -- видишь код.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Спасибо. Не догадался. Привык, что код сразу отображается.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Вопрос к администрации:  можно ли немного уменьшить время между посылками в меню "запуск"? Просто очень много времени теряется во время отладки после первого запуска (пока все экзепшены соберешь) и во время запуска претестов. По второму пункту можно сделать кнопку вроде "запуск претестов".
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Могу помочь с установкой дистрибутива языка, сам отлаживал у себя на компе.
13 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
Теперь каждый, кто решил хотя бы две задачи может в резюме писать, что умеет программировать на Io. А ещё можно в резюме на вакансию, где требуется знание Io, давать ссылочку на таблицу результатов. :-D

А если серьёзно, то желательно, чтобы предлагался какой-то пусть и мало кому знакомый, но более востребованный язык, например, Shell, Perl, Lisp, Smalltalk, Objective C. Tcl из первого раунда - хороший пример. В противном случае получается, что интересно, но слишком безполезно. ИМХО
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +12 Проголосовать: не нравится
    Ага, чтобы те, кто уже много на нем программируют сразу вперед выходили. Это же не бесплатные курсы по изучению языка а fun-соревнование.
13 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
Вообще надо отметить что классная идея все же-проводить такие вот раунды. Совершенно согласен с высказывавшимся неоднократно мнением что надо делать отдельный зачет по unknown language rounds, вроде marathon matches на топкодере
13 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
Отличный контест получился. Только я так и не осилила установить Io локально, пришлось на сайте тестировать. Зато не было расхождений локальной версии с официальным тестером.