среда, 11 февраля 2015 г.

CodeStars. Track 01



Задача. 
Твой первый клип не попадет в ротацию MTV, если ты не решишь эту задачу.

На съемках твоего первого клипа не обойтись без массовки — 106 симпатичных девушек разного роста, одетых в разноцветные костюмы. Но как их лучше разместить в кадре? Чтобы найти удачный ракурс, тебе придется попробовать все возможные расстановки для героинь твоего видео. Сколько часов потребуется на просмотр всех расстановок, если на просмотр одной расстановки требуется 10 секунд?

Предисловие.
Нам нужно количество перестановок в кадре различных девиц - значит, факториал. И умножить это значение на 10 - чтобы узнать общее время.
Поскольку 106! - это очень и очень много, надо сразу учесть, что в int и даже в longint это богатство не влезет. Поэтому нам нужно использовать длинную арифметику.

Ларчик открывался, на самом деле, невероятно просто. Примерно за 30 минут. Без извращений и попыток убить себя об стену.

Но я старый (как оказалось - ужасно) кодер и не знаю слов использования (using), поэтому вместо того, чтобы использовать гугл, я попробовала реализовать класс LongLongInt с нуля. Велосипед получился несовершенный, но ездил вполне исправно.

Однако, желание оттестировать его и сделать аккуратным и законченным привели меня к такой горе работы, что я испугалась... и... и правильно, стерла все нафиг. И пошла интересоваться у поисковиков как подобные, вполне типичные же, задачи, решали люди до меня.

Решение.
Если опустить мои четырехдневные мытарства с написанием собственного класса, то задача в рамках C# решается при помощи 10 строк с использованием пространства имен System.Numerics и  его типов BigInteger и Complex. Даже только при помощи первого.

Но чтобы за потраченное время было не так обидно, я расскажу про кнопочку.  Раз уж я теперь звезда электрокода, то надо раскрасить свой проект, так что пусть будет WPF: с кислотно-розовой рамочкой и с большой желтой кнопкой.

Для создания шаблона большой желтой кнопки были совмещены вот эти два источника:


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


Ну и еще, раз уж такая тема, пусть здесь будет музычка, под которую все началось.

Комментариев нет:

Отправить комментарий