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

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

Язык этого раунда — Ada, выбранный не за особую оригинальность (на мой вкус он слишком похож на Паскаль), а скорее за название. Язык, названный в честь Ады Лавлейс, как ничто другое подходит к профессиональному празднику программистов, а "язык Ада" — к контесту пятницы, 13-го, посвященному приметам и суевериям. Недостаточную экзотичность языка я постаралась компенсировать задачами, чуть более нетривиальными, чем обычно в SLR.

Традиционно, решение задачи "A+B" (числа могут быть заданы на одной строке):

with Ada.Integer_Text_IO;
use Ada.Integer_Text_IO;

procedure AplusB is
    A, B: Integer;

begin
    Get(Item => A);
    Get(Item => B);
    Put(Item => A + B, Width => 1);
end AplusB;

Система тестирования использует компилятор gnat версии 4.7.2. Для тестирования своих программ можно:

  • воспользоваться вкладкой “Запуск” в интерфейсе контеста.
  • воспользоваться ideone, язык Ada (gnat-4.6). Напоминаю, что по умолчанию анонимно присланные коды показываются в recent codes, для сохранения спортивного интереса рекомендую зарегистрироваться и использовать опцию приватности "private", или хотя бы использовать опцию “secret” (со времен прошлого раунда сайт претерпел радикальный редизайн, и названия опций изменились).
  • установить его локально.

В Linux эта версия есть в репозиториях (на моем Kubuntu получилась версия 4.4.3). После установки компилятора команда gnat make file.adb компилирует код и создает исполняемый файл. При установленном mingw можно устанавливать mingw-get install ada и запускать командой gnatmake file.adb.


13 сентября вас ждет Пятница, 13-ое, День Программиста, в этом году — не только профессиональный праздник, а еще и Surprise Language Round!

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

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

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

Раунд Язык
Surprise Language Round #6 Roco
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

Всем удачи! И с Днем Программиста!

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

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

Вот это сюрприз, давно уже не было, спасибо!

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

How about including this to your blog ? :)
Edit : so what's wrong?

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

What does it mean it is unrated?

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

    It means that your rating (a number resulting from your participations at different contests that you can see on your profile page and who determine the color of your handle) will not be affected by this contest. And if your true question was "why is it unrated?", I think it's just to not give advantage at the rare coders who are lucky and already know the language (Edit: and because it's a lot different from the others contests).

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

    Congratulation Alimzoo!! Your contribution is getting worse, as you want to! ;) Because of this comment, I guess mine is too, but it was worth to say!

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

We missed april fool contest... First i thought it'll be like that

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

hi , im happy for this event . but there's a question in my mind !!? how can we learn the surprise language ? because learning a new language will take time ...

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

    Of course you need time, that's why you're given 2 hours.

    The whole point of this type of contest is not just that you have to solve some (fairly simple) problems but that you have to learn as much of a new language as you can while doing this. How you do this is up to you :)

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

      Thanks for answering This contest is a really good idea Because all are the same at the beginning of the contest and that is very interesting . Thanks by ,

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

We see cobol in surprise language round #5, It's a programming language in BigFrame... The round looks interesting...

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

Thx for unusual event

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

Hi and thanks for the contest, Will it be a speed contest or the problems will have some academic loads? Most of the last unknown language contests were speed contest, many participants solved all the problems just in less than an hour! anyway, thanks to Nickolas for this unusual event!

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

It's the (1<<8)th day of the year! Happy programmers Day to all.

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

Unknown Language? Sounds COOL!

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

How early will the language be announced?

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

Let's play guess which langue is gonna be.

My guess (although it's a weak one) : Brainf*ck

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

Is there a compiler for Linux? Give instructions how to install it.

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

А почему регистрация закрывается за пять минут до начала? По правилам ACM ICPC же, обычно до конца раунда оставляли.

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

В запуске будет доступен этот язык? Будут ли взломы?

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

    Читайте внимательнее, в посте всё написано. Но специально для Вас: 1. Да. 2. Нет.

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

    В ACM-style взломов не бывает.

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

when will the announce is attach?

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

When the language will be announced ???

Waiting... :(

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

Ололо я зеленый

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

It's Friday the 13th. What could possibly go wrong ... ;)

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

It's Friday the 13th. What could possibly go wrong? ... ;)

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

"The round has 6 problems"

I just knew that there are 6 elements in {A, B, C, D, E, F, G}.

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

    I felt that announcing 6 problems and giving 7 feels like a nice surprise and much better than the other way around :-)

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

"...and links to useful manuals". Can't see them!!!

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

Контест из серии "не хотелось бы видеть такое в будущем".

Вы хотя бы пробовали скачать GNAT с официального сайта, когда это же самое пытаются сделать сотни других людей?

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

    Ideone? Запуск?

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

      Религиозная ненависть к написанию кода в чем-то подобном?

      Желание использовать IDE с дебаггером или, на худой конец, тонко настроенный текстовый редактор?

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится +5 Проголосовать: не нравится
    # apt-get install gcc4.7-gnat
    

    и gnat устанавливается легко и быстро... и даже не из интернета, а из локального зеркала репозитория.

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

The language is so hard! Especially when you have not material!

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

http://www.infres.enst.fr/~pautet/Ada95/a95list.htm

This is a much more interesting resource than wiki, wiki just assumes you already know how to put everything together to make some sense.

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

"I tried to balance the lack of language weirdness by problems somewhat less trivial than usual."

Probably it was necessary, but I wanted something simpler for problem A (like "given an integer n, output n*(n+1)/2").

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

Ada is a bit unusual, but too Pascal-like for ULR, as I think. Almost everything is supported (calendar, maps and sorting, dynamic arrays), no fastidious code is required for easy things (the only problem I had is with Get/Get_Line and newline characters). I liked COBOL more.

However, noone execept me got more than four problems :) and it looks like the round was very and very fun for the rest of community. I swear it was the first time I saw Ada.

Thank you, Nickolas!

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

    I'm very impressed with your performance — and thank you for making each problem solveable during the contest :-)

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

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

Да вы издеваетесь. Хоть ада и не очень популярна, но о ней слышал, наверное, почти каждый из присутствующих.

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

    Все слышали, а хоть кто-нибудь из участников был знаком с языком хотя бы на уровне написания программы "A+B"?

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

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

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

Thank you for yet another wonderful surprise language contest!

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

Quite a fun round :-) Makes you appreciate the languages you actually work in :-) Please have another secret round match soon! :-)

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

Большое спасибо за контест! Лично мне понравилось. Немного печалило маленькое количество активных участников, из друзей только 1 писал, но это, очевидно, из-за его специфики.

P.S.: Совсем чуть-чуть времени не хватило для сдачи B :(

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

Thank You For Your Wonderful Contest...

I think there is an error in judge system for me...

Link

When I use custom test in Test #5 i get output the 0.23478 and right answer ...

Please take a look at this ...

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

    Your code produces 0.23191 where the correct output is 0.23478. Change the line

    for I in Str'range loop
    

    to this:

    for I in Integer range 1 .. Last loop
    

    and your code will be accepted.

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

    I think in this case 'range will return 100 (allocated size) instead of the actual string length. So the rest of the string will be filled with garbage (no end-of-line in fixed-length strings), and the result of the prorgam depends on whether there will be 0, 1 or ? in this garbage. The output varies between runs depending on the contents of the memory — you just were unlucky to get the contents with one of these symbols.

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

      Thanks for reply Dear Nickolas.

      Yes it caused by me. I should find the string length or initialize first :) to avoid occurrence of this. My resubmission may cause another w/a somewhere else.

      But I believed ADA miracle today. Several outputs for single code and input ;)

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

        You don't even need to look for it too hard — Get_Line (Str, Last); puts line length in Last. But I'm pretty sure you can achieve the same result without using such exotic tools as Ada — for example, use char[100] in C++ without checking for end-of-string character :-)

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

It cost me too much time to learn basic syntax in wrong way (reading tutorials and documentations instead of cloning examples).

Also forcing myself to fight against notepad and Custom Test makes this round funnier :D

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

A bad language! :-&

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

Want more of this kind of contests!

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

Спасибо за контест, лично мне язык не понравился: слишком громоздкий синтаксис, неудобный ввод-вывод, странная работа со строками.

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

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

Really enjoyed this round!! Thanks a lot!

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

BTW, if you also liked Ada, you can solve problems at SPOJ, which has Ada compiler. :)