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

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

Контест окончен, надеюсь, вам понравилось. Здесь выложен разбор задач.


Язык этого раунда — Befunge, очаровательный двухмерный эзотерический язык программирования. Как для эзотерического, он достаточно лаконичен и удобен в использовании. Так, например, задача "A+B" (числа A и B заданы в отдельных строках) решается вот так:

&&+.@

Для знакомства с языком можно почитать авторскую документацию (в некоторых браузерах отображается с ошибкой) и примеры программ на Rosetta Code. На русском есть статья в Википедии и статья в Прогопедии с разобранными примерами программ.

Система тестирования использует интерпретатор befungee, реализующий диалект Befunge-93. Для запуска интерпретатора необходимо иметь установленный Python (версии 2.6 или около того — в версиях 3.* интерпретатор работать не будет). Следует скачать файлы befungee.py, boards.py и funge.py, сохранить их в той же директории, что и исходные коды ваших программ, и запускать программы командой python befungee.py <имя программы на Befunge>. Обратите внимание на встроенный дебаггер (опция запуска --debug --delay=100), позволяющий отслеживать перемещения указателя инструкций в ходе выполнения программы.

В качестве локальной альтернативы можно использовать интерпретатор WASABI, требующий для запуска Java. Скачайте архив с интерпретатором, распакуйте его и запускайте среду разработки командой java -jar "Wasabi v1_4.jar" <имя программы на Befunge>.

Во всех входных данных конец строки обозначается символом #10 (это понадобится для задач, в которых нужно читать данные до конца строки). Значения, возвращаемые вашей программой, проверяются с точностью до пробелов и переводов строк: можно не заканчивать выведенные строки переводами строк, а в задачах, требующих вывести несколько чисел, их можно разделять произвольным количеством пробелов. Кроме того, в конце строки тоже могут быть лишние пробелы.


20 ноября вас ждет очередной, четвертый по счету Unknown Language Round. Правила раунда:

  1. Индивидуальное нерейтинговое соревнование по правилам ACM ICPC.
  2. В раунде будет 10 задач, отсортированных по сложности.
  3. Решения задач принимаются только на одном языке, который будет объявлен в начале контеста.

Это была официальная часть анонса, а теперь - немного лирики.

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

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

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

12 лет назад, # |
  Проголосовать: нравится -56 Проголосовать: не нравится
С днем рожденья!
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Занятно... Прочтя пост решил что в этом-то раунде надо обязательно поучаствовать (хочется экзотики, действительно!) - и тут с сожалением понял что время приходится как раз на запланированное семейное празднование моего собственного 30-летия, имевшего место несколькими днями ранее... Всегда недолюбливал собственные ДРы... Оказалось, не зря... %)

Впрочем клятвенно обязуюсь пройти потом испытание в рамках "виртуального контеста". Надеюсь язык будет действительно достаточно марсианским... И также надеюсь что автор в каком-нибудь светлом будущем порадует нас ещё одним подобным контестом! Заранее спасибо! ;-)
12 лет назад, # |
  Проголосовать: нравится -15 Проголосовать: не нравится
Happy birthday!
12 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится
У меня тоже 20-го день рожденья, и, несмотря на суеверия, начну справлять уже завтра. Надеюсь, я буду в состоянии написать этот контест :)
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Надеюсь, это будет язык, который нельзя называть :)
  • 12 лет назад, # ^ |
      Проголосовать: нравится -13 Проголосовать: не нравится
    В смысле такой язык, назвав который человек умирает - чтобы все могли коммитить на произвольном языке и по ошибкам компиляции пытаться угадать, какой же он на самом деле? ;-)

    (кроме шуток, думаю, все любители подобных мероприятий имеют целый перечень экзотичных языков на которых им бы хотелось поколбаситься)
    • 12 лет назад, # ^ |
        Проголосовать: нравится +6 Проголосовать: не нравится
      Те, кто решал последний всесиб, знают, о чем я
12 лет назад, # |
  Проголосовать: нравится +13 Проголосовать: не нравится
Есть двухчасовое пересечение с November Cook-Off если я не ошибаюсь((((
12 лет назад, # |
Rev. 2   Проголосовать: нравится +19 Проголосовать: не нравится

А еще раунд пересекается с закрытием ВКОШПа.

  • 12 лет назад, # ^ |
      Проголосовать: нравится +11 Проголосовать: не нравится
    А вот это совсем печально :(
    Но там совсем чуть-чуть. Так что можно написать полностью, но в ИТМО :)
    • 12 лет назад, # ^ |
        Проголосовать: нравится +16 Проголосовать: не нравится
      Ты же знаешь все эти закрытия. Я уверен, что час - очень оптимистичная оценка.
12 лет назад, # |
  Проголосовать: нравится +16 Проголосовать: не нравится
Вот теперь с Днём Рожденья! =)
12 лет назад, # |
  Проголосовать: нравится +13 Проголосовать: не нравится
С днём рождения!
С нетерпением жду этого раунда и глубоко в душе надеюсь, что языком-таки будет что-нибудь вроде J или один из диалектов Л-спа :)
12 лет назад, # |
  Проголосовать: нравится -14 Проголосовать: не нравится
Is a rated contest ?
12 лет назад, # |
  Проголосовать: нравится +7 Проголосовать: не нравится
С днем рождения. Пожелание придумаешь!
12 лет назад, # |
  Проголосовать: нравится -12 Проголосовать: не нравится
This contest is clashing with codechef Nov cook-off, whose problems this time are set by none other than tourist.Should have fixed a different date as the participation is going to go down drastically:(
12 лет назад, # |
  Проголосовать: нравится +21 Проголосовать: не нравится
Happy birthday Nickolas!
12 лет назад, # |
  Проголосовать: нравится +17 Проголосовать: не нравится
Happy birthday~~
12 лет назад, # |
  Проголосовать: нравится +17 Проголосовать: не нравится
 Happy birthday Nickolas, wish you all the best. :)
12 лет назад, # |
  Проголосовать: нравится +12 Проголосовать: не нравится
12 лет назад, # |
  Проголосовать: нравится +12 Проголосовать: не нравится
Happy birthday and I agree with by the way
Oh!!!,it rhymes
12 лет назад, # |
  Проголосовать: нравится +2 Проголосовать: не нравится
Happy Birthday! :)
November 20th is also Vietnam Teacher's Day :)
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Вот теперь точно С Днём Рождения!!!!!!!!)))))


12 лет назад, # |
  Проголосовать: нравится +28 Проголосовать: не нравится
ЗА ШТО???
12 лет назад, # |
  Проголосовать: нравится -42 Проголосовать: не нравится
Один я передумал писать контест, как только увидел язык? =)
  • 12 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +38 Проголосовать: не нравится

    ога)

    в смысле один ты)

    • 12 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Просто сразу вспомнился Brainfuck, на котором мне на спор как-то пришлось писать в районе 20 Кб кода, и мне стало плохо)
      • 12 лет назад, # ^ |
          Проголосовать: нравится +1 Проголосовать: не нравится
        Вручную, что ли? Разве не верно, что самый простой способ написать программу на эзотерическом языке - это написать программу-кодогенератор на привычном тебе языке?
12 лет назад, # |
Rev. 2   Проголосовать: нравится -51 Проголосовать: не нравится

Very awful language.Can't get a bit of it:(

12 лет назад, # |
  Проголосовать: нравится +27 Проголосовать: не нравится
Огромное спасибо за раунд! Язык просто шикарен ^^
Ждем еще ULR =)
12 лет назад, # |
  Проголосовать: нравится +27 Проголосовать: не нравится
Ух! Первый раз участвую =) Язык - прелесть) Жаль, что больше 2х программ не осилила, но все равно лучший вечер за последний месяц)
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Дорешивание намечается, а то не успел сабмитнуть сорт?
12 лет назад, # |
  Проголосовать: нравится +30 Проголосовать: не нравится
Спасибо за контест!
Мой быдлокод ещё никогда не выглядел так красиво ^_@
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Жаль, что я не перечитал это сообщение во время начала контеста :) ссылки хоть полезные были, а то пока нашел неглючный интерпретатор..

Большой спасибо за контест, он был прекрасен! :)
12 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
The language selected was interesting and challenging.
I had lots of fun in this contest. When is Unknown Language Round #5?
12 лет назад, # |
  Проголосовать: нравится +9 Проголосовать: не нравится
The judge really didn't like me.
My submission (882258) received:
 wrong answer 1st words differ - expected: 'codeforces', found: 'codeforces'
  • 12 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +5 Проголосовать: не нравится

    You might be printing some zeroes somewhere. You can check if this is the case by printing decimals instead of ascii codes.

  • 12 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
    Comment edited after reading tgoulart's comment
  • 12 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    1. Read http://codeforces.com/blog/entry/2682 how to insert submission link properly;
    2. It means your solution prints extra non-printable character(s). Try to run your solution localy. You may see that it prints extra-character with code 0 after "codeforces".
  • 12 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    You are outputting a newline character before the actual answer. So, your output is in the second line. Maybe you are reversing the newline character too.

12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Подскажите, почему вылетает это решение задачи Н?
12 лет назад, # |
  Проголосовать: нравится +24 Проголосовать: не нравится
Отличный контест. Спасибо!
И — с днём рождения!
12 лет назад, # |
  Проголосовать: нравится -21 Проголосовать: не нравится
Мое мнение, наверное, отличается от мнения тех, кто читает комменты, к этому посту, но все же.

Мне кажется, гораздо интересней написать CodeChef с задачами от touristа, чем решать легкие задачи на извратском экзотическом языке.
  • 12 лет назад, # ^ |
      Проголосовать: нравится +26 Проголосовать: не нравится
    Мне кажется, вся прелесть соревнований по программированию состоит в их сугубой необязательности. Кто-то любит классику, кто-то - извраты эзотерику.
  • 12 лет назад, # ^ |
      Проголосовать: нравится +6 Проголосовать: не нравится
    Хм. Но ведь в практике частенько случается что для решения задачи удобнее написать свой мета-язык (на любимом C или Java, скажем) и уже на нём потом задачу решать.

    С этой точки зрения практиковаться в познании "нереальных" языков довольно полезно. Типа, расширяет художественную впечатлительность. ;-)
12 лет назад, # |
Rev. 4   Проголосовать: нравится +5 Проголосовать: не нравится

А в задачах типа C длинка не нужна, получается? Эта штука не однобайтовыми числами оперирует?

UPD. Не нужна, конечно, иначе как я сдал А? Тогда у меня претензии к jar-нику, который тут выложили - как минимум он: 1) при дебаге делает числа от -128 до 127 и 2) дает не такой ответ, как сервер CF, на моей посылке задачи E.

По первому пункту понял: не надо сохранять значения в ячейки, тогда они действительно по модулю берутся.

  • 12 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится
    Эта штука интерпретируется питоном, так что длинка там есть. Но т.к. в С ответ по модулю надо выдавать, то длинка там и не нужна вовсе. Можно было просто пихать a, b, c и текущий ответ в разные ячейки таблицы (операции p и g) и считать его так же, как и в обычных ЯП. Ну почти так же =)
12 лет назад, # |
  Проголосовать: нравится +18 Проголосовать: не нравится
Thank you for holding this amazing contest.
It is funny that what seemed to be pure weirdness three hours ago, seems familiar now...
12 лет назад, # |
  Проголосовать: нравится +20 Проголосовать: не нравится
Thank you for an amazing contest! Very good choice of language, and nice problems. I was a bit sceptical about unknown language rounds, but after such a round I'm not :)
12 лет назад, # |
  Проголосовать: нравится +12 Проголосовать: не нравится
Happy birthday
The contest and it's language was very interesting :)
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Блин, самое страшное-то забыл: в блоге автора на хабре была новость про первую тысячу языков на прогопедии, а на самой прогопедии слева в списке виднеется на почётном месте её ник: Nicolas.
Так вот, если посмотреть последние изменения на этой страничке, то язык контеста становился очевиден.
Эти три часа стрессовой нагрузки на обленившийся мозг стоили того, чтобы держать себя целый день в руках.
Ещё раз огромное спасибо за контест и больше так не палитесь :)
  • 12 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Это было пасхальное яйцо для людей, которые заинтересуются моей (не)скромной особой достаточно, чтобы отправиться бродить по моим блогам. Кто-то нашел мои сказки, кто-то угадал язык контеста. Но да, хоть контест и нерейтинговый, в следующий раз это надо будет замаскировать :-)
12 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Спасибо огромное за контест! давно не получал такого удовольствия от разгадывания пазлов=)
Очень нравятся решения knightL (например по F или D) ровные столбики сильно выделяются среди обычной мешанины символов, а управление в D идет какой-то совершенно неведомой змейкой)

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

    Очень-очень классный контест. Спасибо!

    upd Немного не туда комментарий, ну да ладно.

12 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
Впервые участвовал в таком контесте - очень эмоционально и позитивно. Особенно, когда преодолеваешь этот получасовой (как у кого) барьер, когда все кажется бредом и начинаешь писать.
Спасибо!
Еще очень помог онлайн-интерпретатор, не пришлось ничего ставить.
12 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
Кто-нибудь может подсказать как Befunge правильно произносится? Бефанг, или как-то по другому?
12 лет назад, # |
  Проголосовать: нравится +11 Проголосовать: не нравится
awesome , Like a game not a programming language  :)
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Thanks for the contest, I had a lot of fun solving the problems!

I had a little problem though... This submission is acting strange, it says the program is answering one thing but when i execute it at this site it gives the correct answer. What am I doing wrong?
  • 12 лет назад, # ^ |
      Проголосовать: нравится +12 Проголосовать: не нравится
    The official interpreter ran locally outputs "5 7", so it must be some problem in your code. Esoteric languages are not standardized, so various implementations can behave very differently.