Язык этого раунда — 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 ранее.
Всем удачи! И с Днем Программиста!
Вот это сюрприз, давно уже не было, спасибо!
How about including this to your blog ? :)
Edit : so what's wrong?
What does it mean it is unrated?
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).
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!
We missed april fool contest... First i thought it'll be like that
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 ...
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 :)
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 ,
We see cobol in surprise language round #5, It's a programming language in BigFrame... The round looks interesting...
Thx for unusual event
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!
It's the (1<<8)th day of the year! Happy programmers Day to all.
(1<<8) ???
x<<y (Left bit shift in C++. In Pascal it will be x shl y) = x*pow(2,y) => 1<<x = pow(2,x) => 1<<8 = 256;
Today is thirteenth of September, it is the 256th day of the year (Programmers' Day). Didn't you know this?
Reference http://en.wikipedia.org/wiki/Programmers'_Day
Unknown Language? Sounds COOL!
How early will the language be announced?
Let's play guess which langue is gonna be.
My guess (although it's a weak one) : Brainf*ck
Maybe LOLCODE :)
I'm sure it will be one of those at Nickolas' website Progopedia. So let's choose one lng,learn it and know who was lucky. What do you think? :)
http://mirror.codeforces.com/blog/entry/7216?locale=en Problem C
Yes, I know :)
"We hope that the language we chose will be unknown to most of the competitors."
Doubt it's going to be Brainf**k :) Also, God forbids Malbolge from appearing, ever. My guess would be FRACTRAN.
I know, you're not the only one who can read, it's why i said it's a weak guess, god forbid you people not downvote someone's opinion which differs from yours.
Tip: I didn't downvote your comment.
Is there a compiler for Linux? Give instructions how to install it.
А почему регистрация закрывается за пять минут до начала? По правилам ACM ICPC же, обычно до конца раунда оставляли.
Действительно. Продлили.
В запуске будет доступен этот язык? Будут ли взломы?
Читайте внимательнее, в посте всё написано. Но специально для Вас: 1. Да. 2. Нет.
В ACM-style взломов не бывает.
when will the announce is attach?
When the language will be announced ???
Waiting... :(
"Please reread this post at the beginning of the contest"
Ололо я зеленый
It's Friday the 13th. What could possibly go wrong ... ;)
It's Friday the 13th. What could possibly go wrong? ... ;)
"The round has 6 problems"
I just knew that there are 6 elements in {A, B, C, D, E, F, G}.
I felt that announcing 6 problems and giving 7 feels like a nice surprise and much better than the other way around :-)
"...and links to useful manuals". Can't see them!!!
Контест из серии "не хотелось бы видеть такое в будущем".
Вы хотя бы пробовали скачать GNAT с официального сайта, когда это же самое пытаются сделать сотни других людей?
Ideone? Запуск?
Религиозная ненависть к написанию кода в чем-то подобном?
Желание использовать IDE с дебаггером или, на худой конец, тонко настроенный текстовый редактор?
и gnat устанавливается легко и быстро... и даже не из интернета, а из локального зеркала репозитория.
The language is so hard! Especially when you have not material!
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.
"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").
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!
I'm very impressed with your performance — and thank you for making each problem solveable during the contest :-)
Да вы издеваетесь. Хоть ада и не очень популярна, но о ней слышал, наверное, почти каждый из присутствующих.
Все слышали, а хоть кто-нибудь из участников был знаком с языком хотя бы на уровне написания программы "A+B"?
У меня есть книжка "программирование на языке Ада", та самая, с жаб. Все ленился прочитать.
Thank you for yet another wonderful surprise language contest!
Quite a fun round :-) Makes you appreciate the languages you actually work in :-) Please have another secret round match soon! :-)
Number of programming languages is limited, it's better not to conduct such competitions too often :)
Большое спасибо за контест! Лично мне понравилось. Немного печалило маленькое количество активных участников, из друзей только 1 писал, но это, очевидно, из-за его специфики.
P.S.: Совсем чуть-чуть времени не хватило для сдачи B :(
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 ...
Your code produces 0.23191 where the correct output is 0.23478. Change the line
to this:
and your code will be accepted.
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.
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 ;)
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 :-)
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
A bad language! :-&
Want more of this kind of contests!
Спасибо за контест, лично мне язык не понравился: слишком громоздкий синтаксис, неудобный ввод-вывод, странная работа со строками.
Но очень здорово, что я теперь про Ada знаю больше, чем раньше (никогда не писал, но что-то слышал), и теперь появился повод еще раз перечитать статью про Ada в википедии, с новым взглядом на этот язык.
Really enjoyed this round!! Thanks a lot!
BTW, if you also liked Ada, you can solve problems at SPOJ, which has Ada compiler. :)