May 31st, 2008

smoke

Очень простая программистская задачка

Дан массив (коллекция) a, содержащий результаты игр команды в кубковом турнире, проводимом не по пирамидальной, а по "полной" двоичной схеме - проигравшие команды также играют между собой до полного распределения мест, число команд - степень 2. Элемент массива равен 1 в случае победы, 0 в случае поражения.
Первый элемент массива - результат первой игры, последний - последней.

Написать выражение, печатающее место команды в итоговой таблице. Язык на усмотрение, но это должно быть именно однострочное выражение (в предположении, что переменная a инициализирована). Чем короче выражение, тем лучше. У меня это получается в 4038 символов.

                            12345678901234567890123456789012345678901234567890
Python/_guard_              print 1+reduce(lambda s,x:2*s+1-x,a,0)
Perl/kalyanski              print 1+oct join'',"0b",map{1-$_}@a