Блог пользователя Nickolas

Автор Nickolas, 13 лет назад, По-русски

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


Язык сегодняшнего раунда — Roco, малоизвестный эзотерический язык с особым подходом к циклам и подпрограммам. Программы на нем выглядят несколько громоздко, особенно по сравнению с Befunge, но это компенсируется их сравнительной простой и понятностью. Вот пример программы, вычисляющей сумму двух заданных чисел:

iin [0]
iin [1]
add [2] [1] [0]
iout [2]
ac

Информации об этом языке в интернетах очень мало: мне известны только авторский сайт языка и статья в Прогопедии с прокомментированными примерами программ.

Интерпретатор у языка тоже ровно один, авторский. Для запуска интерпретатора необходимо иметь установленный C++ (и автор, и мы используем g++), скомпилировать код интерпретатора в исполняемый файл и запускать программы командой "roco program.roco". Скачать интерпретатор (исходник и скомпилированные файлы) можно здесь.


25 мая вас ждет Surprise Language Round #6. Этот раунд посвящен важному для меня событию — неделю назад исполнилось ровно пять лет проекту Progopedia (и два с половиной года с тех пор, как к проекту присоединилась я). Чтобы отпраздновать эту приятно округлую дату, мы сделали раунд призовым: участники, занявшие первые 5 мест, получат футболки (да не простые Codeforces-футболки, а специальные SLR-футболки). Кстати, их дизайн еще не утвержден, можно предлагать что-нибудь эдакое, идейное или забавное, а лучше и то и то сразу.

Правила проведения раунда:

  • Соревнование будет нерейтинговым для всех участников.
  • Индивидуальное соревнование по правилам ACM ICPC: положение в результатах определяется количеством решенных задач, при равном количестве — набранным штрафным временем. Изначально штрафное время участника равно 0, при каждой сданной задаче оно увеличивается на время, прошедшее с начала контеста, + 20 минут за каждую неудачную посылку до отправки правильного решения. Решение считается правильным, если оно прошло все тесты из предопределенного набора; правильно ли посланное решение, становится известно сразу. Взломов чужих решений нет.
  • В раунде будет 8 задач, примерно отсортированных по сложности, и 2 часа на их решение.
  • Решения задач принимаются только на одном языке, который будет объявлен в начале контеста. Язык существует давно, а не придуман нами специально для раунда.
  • Пожалуйста, в начале контеста перечитайте этот пост целиком: в нем появится объявление языка, рекомендации по установке компилятора (также в интерфейсе контеста будет доступен запуск программы онлайн) и полезные ссылки на документацию. В остальном изучение языка — дело рук самого участника. Для решения задач вы можете использовать любые ресурсы (но не коллективное участие); ограничиваться документацией, приведенной в посте, не обязательно.

Мы надеемся, что выбранный нами язык будет незнаком большинству участников раунда. Для справки приведу список раундов такого типа, которые проводились на Codeforces ранее.

Раунд Язык
VK Cup 2012 Уайлд-кард раунд 1 Factor
Surprise Language Round #5 COBOL
Unknown Language Round #4 Befunge
Unknown Language Round #3 Pike
Unknown Language Round #2 Io
Unknown Language Round #1 Tcl

Всем удачи!

  • Проголосовать: нравится
  • +79
  • Проголосовать: не нравится

»
13 лет назад, # |
  Проголосовать: нравится +12 Проголосовать: не нравится

А не выложить ли ссылку на общедоступный источник?
http://progopedia.ru/users/Nickolas/

Nimrod выглядит классно. Если это будет APL — я пропускаю раунд. Надеюсь, что на самом деле будет ни то, ни другое, и что это будет больше похоже на первое.

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +27 Проголосовать: не нравится

    После прошлого раунда было бы несколько наивно надеяться, что язык со страницы моих свежих правок станет сюрпризом для сообщества, не правда ли? Так что я думаю, что все не так тривиально :-)

    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится +18 Проголосовать: не нравится

      Жаль, что на прошлом раунде это было гораздо важнее...

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится

    А на Malbolge — по-круче писать будет чем на APL.

»
13 лет назад, # |
  Проголосовать: нравится +2 Проголосовать: не нравится

Вопрос: компилятор под Linux есть у этого языка?

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +12 Проголосовать: не нравится

    Обязательно. У меня у самой Kubuntu, и с языками "только под Windows" я не очень дружу.

    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится +1 Проголосовать: не нравится

      Отлично! Благодарю за хорошую новость!

»
13 лет назад, # |
  Проголосовать: нравится -95 Проголосовать: не нравится

^ Линуксоиды детектед!

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится -18 Проголосовать: не нравится

    Хоть я сам сижу на Windows, но что плохого в том, что человек пользуется Linux'ом?

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится -28 Проголосовать: не нравится

    Господа минусующие, вы все линуксоиды? о.О

    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится +7 Проголосовать: не нравится

      Нет. Просто твои комментарии не несут в себе смысловой нагрузки. А это считается глупым флудом.

      • »
        »
        »
        »
        13 лет назад, # ^ |
          Проголосовать: нравится -17 Проголосовать: не нравится

        А Surprise Language Round не влияет на рейтинг. Считать ли его глупым способом убить время?

        • »
          »
          »
          »
          »
          13 лет назад, # ^ |
            Проголосовать: нравится +7 Проголосовать: не нравится

          SLR влияет на мозг. А вообще, считайте его чем хотите, лично я не против.

          • »
            »
            »
            »
            »
            »
            13 лет назад, # ^ |
            Rev. 4   Проголосовать: нравится +3 Проголосовать: не нравится

            Хорошо или плохо влияет? :-)

            Edit. Хотя обычный раунд на рейтинг тоже неоднозначно влияет.

            • »
              »
              »
              »
              »
              »
              »
              13 лет назад, # ^ |
                Проголосовать: нравится +24 Проголосовать: не нравится

              Ну... Это как обливаться холодной водой. Можно заболеть, а вообще закалка)

    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится +13 Проголосовать: не нравится

      А Вы кто?

      • »
        »
        »
        »
        13 лет назад, # ^ |
        Rev. 3   Проголосовать: нравится -18 Проголосовать: не нравится

        Яблочник. И горжусь этим!

        • »
          »
          »
          »
          »
          13 лет назад, # ^ |
            Проголосовать: нравится +23 Проголосовать: не нравится

          Ну на этой платформе языков не много.

          Так проверьте себя. Вам дадут ссылки на описание языка, компиляторы. Язык будет более чем не стандартный.

          Надо будет за 2 часа всё освоить и решить несколько задач.

          Все просто :)

          Дакажите, что Вы не "яблочник", а Программист.

»
13 лет назад, # |
Rev. 9   Проголосовать: нравится +8 Проголосовать: не нравится

А чего alexey.shchepin помечен, как вне конкурса?

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +6 Проголосовать: не нравится

    В некотором смысле он помог с организацией раунда. За что ему спасибо :)

»
13 лет назад, # |
  Проголосовать: нравится +39 Проголосовать: не нравится

I think you should parody those Code Jam "What language do you speak?" shirts with whacky languages :D

»
13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

А интерпретатор? UPD. Я слепой.

»
13 лет назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

вопрос, а как перейти на новую строку? так неработает

cout 13

UPD. нашел, нужно было писать так

cout 10
»
13 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

Спасибо за контест, было весело =) .

А вот задач оказалось маловато.

  • »
    »
    13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    Всегда пожалуйста :-)

    Та да, в этот раз я как-то недооценила участников. Видимо, надо взять на вооружение практику контестов типа Ch24, где в середине контеста можно добавить еще задачу, чтобы лидеры не скучали. Или сразу готовить с запасом.

    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится +1 Проголосовать: не нравится

      Да, только тогда нужно, чтобы возможность этого была в правилах заранее (и, конечно, поддерживалась системой Codeforces).

      • »
        »
        »
        »
        13 лет назад, # ^ |
          Проголосовать: нравится +6 Проголосовать: не нравится

        Конечно — давать задачу на втором часу без предупреждения было бы просто неспортивно по одношению к тем, кто порешал все за 40 минут и удалился вкушать заслуженный отдых :-)

»
13 лет назад, # |
  Проголосовать: нравится +20 Проголосовать: не нравится

Сколько там говорите футболок? :(

»
13 лет назад, # |
  Проголосовать: нравится +46 Проголосовать: не нравится

Say good-bey to T-shirt... T_T Congratulate to the top-5 who made it. Will there be any T-shirts in future Unknown/Surprise Language Round?

»
13 лет назад, # |
  Проголосовать: нравится +14 Проголосовать: не нравится

Вообще очень весёлые раунды, спасибо автору за приятно проведённое время)

»
13 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

Поучаствовал впервые, весело, понравилось.

Единственное, что не понравилось, что мозг включать практически не пришлось:( Мне кажется 1-2 задачки посложнее должно быть всё-таки.

Ну и по-моему странно все же, когда из раунда в раунд одна и та же задача, хотя и понятно, что умение решать ее на одном языке никак не помогает решать на другом.

Ну и поздравляю победителей!

»
13 лет назад, # |
  Проголосовать: нравится +21 Проголосовать: не нравится

I find it funny how all of my solutions ended with "AC" :)

»
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Благодаря этому контесту будем знать как сортировать массив без массива. Большое спасибо)

»
13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Ненавижу кнопку "Запуск".

Дебажил правильную программу 15 минут из-за того, что перевод строки не поставил в окошке инпута. Получался стек оверфлоу. А прерывать чтение кроме как по переводу строки вроде бы и нельзя.

FEATURE REQUEST: Сделайте автодобавление символа конца строки, если его нет. При взломах и в окошке инпута в запуске. Тем более что так уже сделано на полигоне.

А язык классный, жалко опоздал на полчаса

»
13 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

Решил 6 => тупняк "а почему оно не работает" => RTFM => оказывается там корутины и они состояние помнят => еще 2. В целом понравилось, но хоть пару задач бы посложнее

»
13 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

Спасибо за контест. Довольно забавный язык, сложно работать без имен переменных.

»
13 лет назад, # |
Rev. 6   Проголосовать: нравится 0 Проголосовать: не нравится

Как понять iin 0? UPD: Я по идее написал так

  • »
    »
    13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    Это указатель. Т.е. ввести значение в переменную с индексом, номер которого хранится в переменной [0]. Если в [0] хранится 9, то значение будет положено в [9].

»
13 лет назад, # |
  Проголосовать: нравится +22 Проголосовать: не нравится

I somehow managed this without understanding the semantics of the coroutines... I just treated "ac" as "return" and then got really lost when my programs would continue past the return line. Now that I've taken the time to read more about the language, everything makes sooooo much more sense.

Thanks for another awesome SLR :D :D :D

»
13 лет назад, # |
  Проголосовать: нравится +15 Проголосовать: не нравится

Включите дорешивание, плз

»
13 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

Nice contest! However, I think the contest would be more interesting if there were more difficult "algorithmic" problems, so we can have more interesting scoreboard. The current problems are like "implement standard problems using a new language" :)

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +5 Проголосовать: не нравится

    I think the scoreboard is interesting enough. I see 17 red people there, with 14 of them in top 30, even though the problems are like "implement standard problems using a new language.”

    Thank you for another nice contest!

»
13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

In Roco, what's the relation of [0] and [[0]]?

»
13 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

For the sorting problem I have used Counting Sort algortihm...But there's something wrong in my code that I cannot figure out..I testes my code with 2 2 1 and the out put is 1 2 3 3 3 3 3 3 3.......3

Can Someone tell me where I am going wrong.. Code

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +19 Проголосовать: не нравится

    Have you noticed that "When a coroutine is called, its execution starts not from the start, but from the last position of its instruction pointer"?

    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится +5 Проголосовать: не нравится

      Thanks .. I over looked it... Here's the accepted version->Code

    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится +6 Проголосовать: не нравится

      I did all the problems in 5-8 minutes each except for this one which took me like... 23 because of exactly the same problem XD

      Apparently it pays to actually read the documentation.

      • »
        »
        »
        »
        13 лет назад, # ^ |
          Проголосовать: нравится +1 Проголосовать: не нравится

        Nice to know I wasn't the only one who suffered through that... Can you see any application in which this behavior actually makes sense?

        • »
          »
          »
          »
          »
          13 лет назад, # ^ |
            Проголосовать: нравится +6 Проголосовать: не нравится

          This is an esoteric language; they are not meant to make any sense :-)

»
13 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

Nice language! I've just learnt another interesting language. Let's see if someone (especially participants of this contest) will use it for Google Code Jam Round 2 tomorrow :D

»
13 лет назад, # |
Rev. 4   Проголосовать: нравится 0 Проголосовать: не нравится

Any idea why the following is an infinite loop? Seems it has the potential to become a candidate problem:)

co infinite_loop

{

eq [[0]] [0] 0 // isn't [[0]] == [0] == 1 after executing this sentence,

if [[0]] ac // then exit the coroutine?

}

set [0] 0

ca infinite_loop

ac

»
13 лет назад, # |
  Проголосовать: нравится +19 Проголосовать: не нравится

Забавно, что последней строчкой в программе должно быть ac

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится -6 Проголосовать: не нравится

    Можно сделать yi ololo, где ololo — подпрограмма, которая сама сделает ac

»
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Интересные задачи, интересный язык, но жаль, чтоб не судьба решить больше одной задачи.

»
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Интереснее языка я еще не встречал. Пичалька, что не смог принять участие:(

»
12 лет назад, # |
Rev. 2   Проголосовать: нравится -23 Проголосовать: не нравится

If any of you are interested in participating in an external surprise language contest, there is a contest starting tomorrow(3rd march) at 12:30 Gmt.

Contest Link: http://chaos.techkriti.org