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

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

Раунд окончен, разбор задач (если он вообще нужен :-)) здесь. Да, со сложностью задач я не угадала — но кто ж знал, какие люди подтянутся и порешают все за 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
  • Проголосовать: не нравится

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

cout 13

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

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

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

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

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

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

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

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

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

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

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

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

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

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +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?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +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

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

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

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +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" :)

  • »
    »
    14 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +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!

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

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

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +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

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +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

»
14 лет назад, скрыть # |
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

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

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

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

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

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

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

»
14 лет назад, скрыть # |
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