Контест окончен. 13 человек решили все задачи — это потрясающе!
Разбор задач будет доступен здесь.
Язык сегодняшнего раунда — FALSE, стековый эзотерический язык программирования, придуманный больше 20 лет назад.
Традиционная программа A+B (числа A и B разделены пробелом) выглядит вот так.
Для тестирования своих программ можно:
- скачать исходный код на C авторского интерпретатора здесь. Проверяющая система использует именно этот интерпретатор с опцией -q.
- использовать вкладку "Запуск".
- использовать онлайн-интерпретаторы (отличаются от эталонного интерпретатора, но сильно упрощают отладку): 1, 2.
Полезные ссылки:
- описание языка от автора, Wouter van Oortmerssen
- статья в Прогопедии
- сборник программ в Rosetta Code
Замечания:
- В описании языка фигурируют команды ø и ß. Авторский интерпретатор обозначает их символами O и B (оба онлайн-интерпретатора поддерживают их неизменными).
- Конец файла кодируется как #-1, перевод строки — как #13#10.
- При завершении работы программы стек должен быть пустым, иначе интерпретатор выведет ошибку в стандартный вывод, и это будет считаться неверным ответом.
13 сентября вас ждет Surprise Language Round #7, посвященный Дню программиста.
Правила проведения раунда:
- Соревнование будет нерейтинговым для всех участников.
- Индивидуальное соревнование по правилам ACM ICPC: положение в результатах определяется количеством решенных задач, при равном количестве — набранным штрафным временем. Изначально штрафное время участника равно 0, при каждой сданной задаче оно увеличивается на время, прошедшее с начала контеста, + 20 минут за каждую неудачную посылку до отправки правильного решения. Решение считается правильным, если оно прошло все тесты из предопределенного набора; правильно ли посланное решение, становится известно сразу. Взломов чужих решений нет.
- В раунде будет 8 задач, примерно отсортированных по сложности, и 2 часа на их решение.
- Решения задач принимаются только на одном языке, который будет объявлен в начале контеста. Язык существует давно, а не придуман нами специально для раунда.
- Пожалуйста, в начале контеста перечитайте этот пост целиком: в нем появится объявление языка, рекомендации по установке компилятора (в интерфейсе контеста будет доступен запуск программы онлайн) и полезные ссылки на документацию. В остальном изучение языка — дело рук самого участника. Для решения задач вы можете использовать любые ресурсы (но не совместное участие); ограничиваться документацией, приведенной в посте, не обязательно.
Я надеюсь, что выбранный мной язык будет незнаком большинству участников раунда. Для справки — список прошлых раундов такого типа.
Всем удачи! И с Днем программиста!
Is the language and instructions provided at the very start of the round or a little before? (like 5 or 10 min?)
This sounds fun :)
A couple of minutes before the start. People need time to overcome the surprise :-)
Waiting until the last second to release the language?
You might want to add the time of the contest (usual time, 15.30 UTC, according to the Contests page). Unless you want to make this Surprise Round to have a Surprise Start Time too.
I dont think they want to test whether you log in frequently or not! This will needlessly reduce participation.
Yes, the second sentence was a joke.
can install compiler in both linux and windows? or just one of them?
Should be both, we're checking this now. You'll also be able to run your code online ("Custom Invocation" tab of the contest interface).
but it's not User friendly (for me) !
We are fully aware of people who refuse to use online compilers (although their reasons are a mystery to me). We do our best to make sure that compiler for the chosen language is available on all platforms. However, we cannot give a 100% guarantee of this, so we also provide alternative methods of running your code. Using "Custom Invocation" has an added benefit of running your code in the same conditions as your submission runs, which might be good for figuring out why your submission works locally but gets WA at the server.
P.S. If you have a look at the languages used in previous rounds, you might notice that "user-friendly" is never part of the design :-)
So, where's the guy hoping for more maths ? :D
Hope for the language to be TI Basic.
Hope for the language to be C++.
Well, that would be too surprising! :D
The blog writer said this:
I hope that the language I chose will be unknown to most of the competitors.
So I don't think he will be choosing C++! :)
:(
AkshajK reports to duty .. hope for math..ematica!
Last contest, the surprise language is ADA, then I spent 2 hour in reading the introduction and the grammar of this language.... After I can write the "a+b" and "hello world!" in online compiler... the contest is over... A sad story...XD
I wish the language in this contest is whitespace...then we can see a lot of "empty" code...
:D
The language of the problem statements will be unknown as well?
Maybe you are thinking too deep.
They will be on Whitespace
How can we know the syntax rules of your language ? Will you explain ; or are the languages currently known worldwide ?
The language is "known" worldwide as in there should be a free documentation on the internet, which you can look up.
sounds like it could be Swift
Hope for C++
Kinda hope it'll be Assembly :D
Вангую BF
MikeMirzayanov has registered for this contest :) It's going to be an exciting contest.
Sorry, I've just tested the registration.
Nickolas Спасибо за контест) Караганда ждет начала, любопытство гложет))
FALSE((
As if ADA was not bad enough :(
I think FALSE is not a programming language at all!!
Not true. We have evidence of at least 80 contest participants now that it is possible to write a program in it :-)
What is this thing ... OMG !!!
I'm ready to work with Assembly instead of this FALSE programming language!
You know a programming language is bad when you can sort an array by hand faster than you can code it even for input size n = 105
Кажется, http://mirror.codeforces.com/contest/470/customtest в качестве перевода строки отправляет #10, а не #13#10
Вероятно, это так. Вероятно, это воспроизводится только для не-windows браузеров. Обратите внимание, что в тестах всюду 1310.
Это точно? У меня в Шахматной доске 13,10, не заходило, а 10, зашло.
В шахматной доске действительно проблема с тестами, перевод строки вида #13#10 не принимается
Да, Mac OS, Chromium.
P.S.: отправил в задачу B два раза один и тот же код -- один "time out", другой "ошибка компиляции" -- кажется, ваш интерпретатор отбросил ласты (
P.P.S.: отправил третий раз тоже самое, но с расчетом на #10 -- Accepted ..\
Input is underspecified; some problems end the input with a newline (and apparently #10 only, not #13#10), and others don't have a newline at the end of the input. This makes comparing whether we've found the EOF different (either 10 or -1).
Aha, there were endl instead of EOF!
Luckily the
while
condition is just slightly changed, you simply need to check for more than one symbol in it, and that's all. I didn't encounter any problems with the input ending with newline instead of EOF, I just started using this "improved" condition.Oh, right, I should have checked for characters less than 33 (EOF (-1), line feed (10), carriage return (13), space (32)) instead; I coded
[^$10=~]
as the condition and should have[^$32>~]
instead.Or even shorter,
[^$33<]
:)<
doesn’t exist.Yep, my bad. Double-checked my code, turns out I used
>~
too, and now I remember why :)Awwww, this explains my "Wrong answer on test 1" in C!
I haven't thought of that :(
Huge thank you for the contest, was fun as usual! Hopefully the next one will be sooner than a year from now.
Hopefully the next one will feature a language that is more comprehendable and easier to code in. This one was a FALSE language.
I think this language is fun to learn.
The challenge is to code in a language that is completely different from what you used to code in.
It was amazing! I'm very impressed. Thanks to Nickolas. Now we waiting for next Surprise Language Round.
Thanks a lot for the contest.
It was fun recollecting things about stack based programming. :-)
The language was actually fun once you get a hang of it. (Took me over 1 and a half hour)
Thanks for contest.
After being fun, I think trying to understand new library's and new languages in a short while is a good practice to face real ones.
PS: I wrote A & B directly and a c++ code generator for E CODE
Получается, хардкоднутый сорт 10 элементов Nickolas за решение не считает. :)
А почему тогда N до 10, а не до 30, скажем (насколько я понимаю, переменных может быть всего 26)? Не предвиделось такого варианта сдать задачу?
Почему же не считаю, считаю и восхищаюсь :-)
Изначально я собиралась делать как раз до 30-50. Но мое решение использовало другой принцип (я честно хранила элементы массива на стеке и каждый раз, когда мне надо было сделать swap для selection sort, копировала весь массив на верх стека), и где-то в районе 20 элементов наступало переполнение стека. Так что я решила перестраховаться и дать гораздо меньше элементов, чтобы любое решение проходило. Это все равно получилась не самая простая задача :-)
А почему тогда "8 человек решили все задачи", если их 13? Я как-то подумал что оттуда были исключены 5 человек хардкоднувшие сорт. :)
Тысяча извинений, страница статуса не обновилась автоматически :-( 13, конечно
Но там же простейшая сортировка подсчетом...
Вот получается что её как-то сложно было заметить. Другого засыла сортировки подсчётом я вроде не заметил.
Увы, читаемость кода не входит в число достоинств этого языка. Можешь объяснить, как сделать сортировку подсчетом?
for от 1 до 100 проходим массив и если встречаем текущее значение — выводим
Вот мне очень понравилось твоё решение! Сам я про сортировку подсчётом вспоминал (хотя не уверен, что это было во время контеста…), но не додумался, что можно наружный цикл делать по значению и внутренний по элементу массива, а не наоборот.
Both sample test outputs in problem H (array sorting) are wrong:
The first one should be: "1 2 3 3" (there are 2 instances of "3")
The second one should be: "2 2 3 5 7 12 44 60" (the "7" was accidentally omitted).
Please read problem statement.
The input consists of a single line of space-separated integers. The first number is n (1 ≤ n ≤ 10) — the size of the array. The following n numbers are the elements of the array (1 ≤ ai ≤ 100).
3 and 7 are array sizes, not array elements, and should not be sorted.
I think there is a mistake in the statement. End of file is encoded as #-1,which is correct,while end of line — not as #13#10 ,but just #10 (at least on Codeforces,tested in custom test). I write a program ^.^. and the input is a blank line(Just press enter in input box),and I get a output like 10-1 --there is no #13
The problem is, custom test differs from what testing system does — custom test uses end-of-line that matches OS under which browser runs, but the testing system always uses #13#10.
7786172
If so, it's so weired that my submission for Problem D,which thinks that end of line consists of only one character,passed the system test.
if a End-of-Line consists of 2 characters,after reading an integer, my code will get a #13 and thinks a integer end,and followed other chars,and the following loop will stop if the next char is not a letter,and the remaining #10 is not a letter,so my program will print nothing.
BTW,I'm a windows user.
msvcrt on Windows will do some automatically conversion between "\r\n" (Windows line ending) and "\n" (Unix line ending) when reading and writing. (If the stream is opened as text-mode, which is default)
That is to say, even if the input file is in Windows line ending (CRLF, or "\r\n"), the program which uses msvcrt's I/O functions could only see a single "\n".
Seems like the whole Codeforces judging system is based on Windows, and the interpreter is written in C, linked to msvcrt.
Thanks for the great contest! I always enjoy these and this one was no exception.
end-of-line issues were pretty frustrating to me; I think #10 ('\n') is a more standard end-of-line character than #13#10 (which is apparently "vertical tab" and then a "newline"??). Two characters at end of line is weird...
I guess this way was more convenient for Windows users?
I did not realize there were variables in the language until after I did A,B,D,E. Oops...
Я настолько неудачник, что до меня за два часа не дошло, что
ERROR: Stack is not empty at the end of program
пишется в выводе, а не в компиляторе...