Udostępnij za pośrednictwem


Разыскиваются звезды кода

640х255

На улице нарядили ёлки, и это значит, что очень скоро нас ждут новогодние праздники и немного свободного времени! Для активных молодых людей это значит, что можно вложить это время “в себя”, научиться чему-то новому, чтобы стать лучше, умнее и показать всему миру свою крутизну. Специально для вас мы приготовили проект CodeStars!

В этом проекте ты сможешь показать свои навыки, решив дюжину задачек по программированию. Заодно это хороший повод узнать что-то новое и чему-то научиться! Для решения задач мы рекомендуем использовать Visual Studio (доступную студентам по программе DreamSpark, либо бесплатную Community Edition) и язык C# – это позволяет решить все задачи достаточно просто.

Задачи расположены в порядке увеличения сложности, но решить первые – очень просто! Разберем решение простейшей задачи:

Музыкальная группа “Кнопкодавы” любит использовать в своих песнях много слов с буквами Z – настолько много, что в газетах написали, что это самая популярная буква в их песнях! Нам нужно проверить, действительно ли это так. Прилагаемый файл содержит тексты песен этой группы – нам необходимо вывести 5 самых популярных букв, используемых в песнях, в порядке убывания популярности.

Для решения этой задачи используем Visual Studio, в которой создадим консольное приложение на C#. Во всех задачах будет проще всего использовать именно консольные приложения.

image

В консольном приложении будет всего один главный файл проекта Program.cs, и в нем – одна главная выполняемая функция Main, внутрь которой нужно будет вписать решение:

image

Для начала считаем содержимое файла в одну строку. Здесь мы предполагаем, что составители задачи поступили гуманно и не дали нам слишком длинный файл, который не может поместиться в строку. Правильнее, конечно, было бы считывать файл посимвольно, но в данном случае мы слегка упрощаем:

 var file = File.OpenText(@"c:\temp\songz.txt");
 var input = file.ReadToEnd();

Далее, для подсчета частоты букв, будем использовать массив целых чисел из 26 элементов. Нулевой элемент будет соответствовать букве ‘a’. Для начала обнулим все элементы:

 var freq = new int[26];
 for (var i = 0; i < 26; i++) freq[i] = 0;

Посчитаем частоту вхождения английских букв в тект. При этом не забудем изначально преобразовать текст к нижнему регистру с помощью функции .ToLower(), а также будет считать только буквы, игнорируя все остальные символы. Обратите внимание, что номер символа x в массиве получается с помощью выражения (x-‘a’):

 foreach(var x in input.ToLower())
 {
    if (x >= 'a' && x <= 'z') freq[x - 'a']++;
 }

Наконец, выведем 5 самых частых букв в порядке уменьшения частоты. Для этого на каждом из шагов цикла от 1 до 5 будем искать букву с максимальной частотой, выводить её на экран, и потом обнулять соответствующую частоту:

 for (int k=0;k<5;k++)
 {
     int n = 0;
     for (int i=1;i<26;i++)
     {
         if (freq[i] > freq[n]) n = i;
     }
     Console.Write((char)('a' + n));
     freq[n] = 0;
 }

Наконец, не забудьте поставить последней строчкой программы Console.ReadKey(), чтобы экран с консолью не исчезал сразу после выполнения программы. Запускаем нашу программу и получаем ответ:

image

Получившийся ответ вводим на сайте CodeStars – в виде строчки, из строчных или прописных букв (система должна понимать несколько возможных вариантов правильного ответа).

Если вы захотите посмотреть полный исходный код решения – оно доступно на GitHub. Я буду очень рад, если кто-нибудь улучшит его – принимаются pull requests!

Задачки, приведенные на CodeStars, хорошо подходят для обучения основам алгоритмики. Если вы начинаете осваивать программирование "с нуля", то для ознакомления с языком C# рекомендую видеокурс "Увлекательное программирование на C#", а для более детального погружения в синтаксис - более подробный курс в виде текстового пособия. А дальше - включайте голову!

Удачной прокачки ваших программерских скиллов под Новый год!

songz.txt

Comments

  • Anonymous
    December 22, 2014
    самый популярный символ у них пробел

  • Anonymous
    January 18, 2015
    Первая задача. 105 героинь. Все перестановки, насколько я помню, да и гугл меня поддерживает - это факториал от числа. То есть 105! Далее умножить на 10 секунд (каждый просмотр) и поделить на 60 (секунды в часы). То есть можно сразу делить на 6. И будет это равно  18023279304004848341735021763338827495344101796248376319069610609553775531831752 55544974227544680400566293998224786716096656454846355728026828800000000000000000

  1. Для вычисления написана програмка - github.com/.../CodeStars01. Но вот почему то проверяльщик ответ не считает верным. Это у меня косяк или в консерватории?
  • Anonymous
    January 18, 2015
    @Alexandr Zhuravlev: 60 - это секунды в минуты.

  • Anonymous
    January 18, 2015
    @Dmitry Soshnikov Ступил да. Только деление 360 вместо 6 тоже не прокатывает. Вот число 30038798840008080569558369605564712492240169660413960531782684349256292553052920 92574957045907800667610489997041311193494427424743926213378048000000000000000000 000000

  • Anonymous
    January 18, 2015
    Все понял. В задании 105 на 104 поменяли. Число другое.

  • Anonymous
    January 18, 2015
    Со второй задачей снова тупик. Где нужно расшифровать песню по Yo и  Nice. Осмысленный текст я получил - это слова из песни Aerosmith - I miss you, Baby. Вот только не принимает проверяльщик ответ снова. github.com/.../CodeStars02

  • Anonymous
    January 19, 2015
    @AleZhu: пока повременю разбираться, вдруг ошибка такая же простая, как в первом случае... У нас много ребят проходят эти задачи, так что глобальные проблемы маловероятны...

  • Anonymous
    January 21, 2015
    емм.. а как вообще с такими большими числами работать? что ето за тип?

  • Anonymous
    January 21, 2015
    @Ihor - посмотрите выше в исходниках у @AleZhu, как используется BigInteger

  • Anonymous
    January 28, 2015
    Про фанаток. Их 104. Мой ответ: 28608379847626743399579399624347345230704923486108533839793032713577421479098019 92928530519912191112009990473372677327137549928327548774645760000000000000000000 0000 Что не так?

  • Anonymous
    January 28, 2015
    @ArtHell: вроде бы всё правильно. Правда, число нулей не считал...

  • Anonymous
    January 28, 2015
    Интересно, кто-нибудь пробовал решать эту задачу методом перебора?

  • Anonymous
    January 28, 2015
    @Dmitry Soshnikov та же проблема, что и у AleZhu. Не принимается текст песни: do not want to close my eyes i do not want to fall asleep cause i would miss you baby and i do not want to miss a thing

  • Anonymous
    January 29, 2015
    Пожалуйста помогите со  второй задачей???

  • Anonymous
    January 29, 2015
    Аккуратнее при копировании результата из консольного окна. Оно же по умолчанию 80 символов шириной, поэтому когда результат длинный на несколько строк  - при выделении и копировании из консольного окна в результат добавляются символы переноса строки. Надёжнее результат писать в текстовый файл, его открывать в текстовом редакторе и из него копировать в ответ.

  • Anonymous
    January 30, 2015
    Серьезно. У друга такая же история с песней Aerosmith. Не принимает ни в какую.

  • Anonymous
    January 30, 2015
    @Dmitry  Не принимается текст песни: we are the world  we are the children we are the ones who make a brighter day so lets start giving theres a choice were making

  • Anonymous
    January 30, 2015
    @gvahramyan - тот текст, что вы тут написали - не правильный. @Dmitry - аккуратнее, там есть хитрые пробелы местами... Прислушайтесь к совету @dubtar - кстати, за совет большое спасибо!

  • Anonymous
    January 30, 2015
    @Dmitry Даже если вручную выставлять все пробелы, не принимает текст песни Aerosmith. И если там не должно быть по несколько пробелов м/у словами, то проблема в задании.

  • Anonymous
    January 31, 2015
    С музами вообще косяки. Всё чётко разложил муз по массивам. Даже в сумме их чётко косарь, но ответы правильные не принимет. Проверьте там для 43.data

  • Anonymous
    January 31, 2015
    А где взять исходный текст для второго задания? Тот, что на сайте "Скачай файл для решения задачи", вообще наз. 67.result. Спасибо всем, кто поможет)

  • Anonymous
    January 31, 2015
    @winchester 1.нажать на файл правой кнопкой мыши 2.открыть с помощью(Open With) 3.и выберите любой текстовой редактор,который установлен на вашем компьютере(Word,Wordpad,теьт доцумент, и.т.д)

  • Anonymous
    January 31, 2015
    Ребята, а может кто-нибудь пояснить смысл второй задачи? Как я понял, количество слов между Yo и Nice - это порядковый номер буквы. Тогда вопрос вот в таком тексте  "Yo sister Yo the superstar! Yo wow dancer Nice"  какая буква?

  • Anonymous
    January 31, 2015
    Текст песни у меня вышел такой: welcome to the hotel california such a lovely place such a lovely face plenty of the room at the hotel california any time of year you can find it hear

  • Anonymous
    January 31, 2015
    @TarasovSA а можете рассказать, по какой логике Вы составляли слова? Пытаюсь в ручную перебрать хотя бы первые 3 буквы, но никак не могу понять откуда берутся 'w' 'e' & 'l'.

  • Anonymous
    January 31, 2015
    @misterpeker нет, количество Yo - номер буквы, всё остальное игнорируем, строка "Yo Yo floor? Yo floor Yo kaput Bro Yo the superstar Yo; Yo Yo Yo music Yo superstar truly Yo hilarious! interesting Yo Yo ding Yo- muzak Yo the beautiful Yo Yo Yo? sister Yo wow wow, Yo on Yo sister Yo the superstar! Yo wow dancer Nice" - буква w

  • Anonymous
    January 31, 2015
    На 2 задание получился примерно такой код - fs = require 'fs' arr = (fs.readFileSync './in.txt').toString().split(' ').filter (sym) -> /yo|nice/i.test sym text = [] letter = 0 for sym in arr  if /yo/i.test sym    letter++  else    if letter is 0      text.push ' '    else      text.push String.fromCharCode letter - 1 + 'a'.charCodeAt 0    letter = 0 console.log text.join ''

  • Anonymous
    January 31, 2015
    :-(. Никак не могу решить 14 задачу. Река задана отрезком. Никто не знает как решается? Мой ответ не принимает :-(

  • Anonymous
    February 01, 2015
    Со второй задачей действительно что-то странное... Я написал несколько приложений и всё равно, даже с выводом в файл не засчитываеся. Пробовал с знаками препинания и без, всё равно...

  • Anonymous
    February 01, 2015
    Не принимает первый ответ. Вот для 104ех - 28608379847626743399579399624347345230704923486108533839793032713577421479098019 92928530519912191112009990473372677327137549928327548774645760000000000000000000 0000 Код: class Program    {        static BigInteger factorial(int n)        {            if (n == 0)            {                return 1;            }            else                return n * factorial(n - 1);        }        static void Main(string[] args)        {            BigInteger a = factorial(Convert.ToInt32(Console.ReadLine()));            a/=360;            Console.WriteLine(a.ToString());            Console.ReadLine();        }    } где я ошибся?

  • Anonymous
    February 01, 2015
    Игорь, Вы нигде не ошиблись. Ответ для 104 правильный. Возможно Вы копируете сразу из командной строки и там есть переносы. попробуйте просто число: 28608379847626743399579399624347345230704923486108533839793032713577421479098019929285305199121911120099904733726773271375499283275487746457600000000000000000000000

  • Anonymous
    February 01, 2015
    А кто-то дошел до 14 задачи про реку? Уже перепробовал разные варианты расчетов. Не совсем понятно как определять принадлежность к И или П. Смотрел и в створе реки, и всю заданную площадь и только в рамках прямоугольника реки. Интересно, а можно куда-то написать (типа ТП)?

  • Anonymous
    February 01, 2015
    а во втором в ответе должны быть знаки пунктуации?

  • Anonymous
    February 01, 2015
    Данил, у меня их нет. только текст.

  • Anonymous
    February 01, 2015
    По второй задаче, скорее всего это касается только тех  у кого песня аэросмит. Там в одном месте встречается 3 раза подряд 'Nice'. Соответственно в результате ожидается 2 пробела.

  • Anonymous
    February 01, 2015
    В 20 задаче перебрал уже все, ничего не подходит. Я совершенно не могу понять условий: минимальное количество часов 23; Инженер № 1 назначается на блок №2 работает 13 часов; Инженер № 2 назначается на блок №5 работает 8 часов; Инженер № 3 назначается на блок №6 работает 2 часов; Инженер № 4 назначается на блок №7 работает 2 часов Как вообще в этом примере может получиться 23 ??!! и где все остальные инженеры и блоки?! Время нужно складывать или они работают параллельно? Может ли инженер делать блоков? Пришу привести пример правильного вывода на реальных данных. Общий комментарий: отличная задумка, побольше бы таких, но вот условия задач просто ужасают, 99,99% времени я потратил на угадывание выходного формата и пребор всех возможных вариантов трактовок условий. Как минимум нужно приводить в каждой задаче работающий пример входных -> выходных данных.

  • Anonymous
    February 01, 2015
    не могу понять смысла второй задачи,...  куда подставлять готовые слова, вместо всех yo??

  • Anonymous
    February 01, 2015
    Вот текст Yo Yo feature wow; Yo Yo floor muzak Yo cool: Yo, Yo truly, Yo, beautiful Yo: shhhh Nice, Yo; Yo; klik Yo Yo: dj Bro Yo: Yo muzak wonderfully, Yo kaput ding klik Yo, Yo Yo: feature interestingly Yo comeon floor Yo floor Yo Nice Yo lalala Nice Yo comeon Yo Yo music; music Yo; truly Yo dj Yo kaput beautiful, Yo the Nice Yo on shhhh Yo Bro Yo lalala Yo hilarious the the- Yo Bro hilarious Yo music singer, Yo Yo- dancer Yo wow interestingly Nice: Yo shhhh Yo comeon shhhh Yo, comeon! lalala Yo- klik klik Yo: cool on Yo singer Yo Yo klik hilarious interesting Yo interesting Bro Yo, lalala! cool Yo comeon, feature Yo sister feature Yo Bro; cool? interesting: Yo Nice? Yo comeon music Yo Yo Yo Yo truly Вышло слово Imagine Куда мне его подставлять или же все слова здесь игнорировать а писать только то что получилось????

  • Anonymous
    February 02, 2015
    Добрый день. Помогите растолковать что нужно сделать в третей задаче. Не могу понять логику задания. Если кто может поделиться готовыми наработками, буду весьма благодарен.

  • Anonymous
    February 02, 2015
    Max, слова нужно игнорировать. количество Yo это номер буквы в латинском алфавите. Слово вышло правильное.

  • Anonymous
    February 02, 2015
    Напомню о чем там речь. Немногие знают, что музы существуют на самом деле. Физики-музыковеды выяснили, что музы, как и люди, говорят на разных языках, но это не мешает им общаться. Так, в Секретном институте прикладного музыковедения ученые в ходе наблюдений получили текстовый файл, который в каждой строчке содержит два номера муз (разделенных пробелом), которые общаются друг с другом. Предполагается, что общаются друг с другом только те музы, которые говорят на одном языке, и что для каждой музы в файле есть запись (т.е. муз, которые ни с кем не общаются, не существует). Узнай, сколько всего языков существует у муз.

  • Anonymous
    February 02, 2015
    Третья задача. Нужно узнать сколько всего языков. Решается примерно так. Берем первую строчку, первое число. Заполнили его и его пару. Эти номера относим к одному языку. Далее ищем строчку в которой есть первое число. Нашли. добавили к языку ещё одно число (пару от второго первого). И так далее. Затем берем в этом языке второе число и ищем его в общем списке. Нашли, добавили к языку его соответствие и так все пока не закончим. Затем берем   новую строчку с ещё не включенным в первый язык номером. И повторяем поиск. В результате все числа будут сгруппированы в несколько групп (языков).

  • Anonymous
    February 02, 2015
    @Александр Ты какой ответ получил??

  • Anonymous
    February 02, 2015
    Я примерно так и делаю только методом удаления найденного. у меня получилось 138. Оно хоть в раёне этого должно быть или я ошибаюсь?

  • Anonymous
    February 02, 2015
    У меня получилось всего 12 (количество языков).

  • Anonymous
    February 02, 2015
    А у меня 12

  • Anonymous
    February 02, 2015
    А у меня 13!

  • Anonymous
    February 02, 2015
    Видимо задания разные. Я в третьем стиле

  • Anonymous
    February 02, 2015
    а я на первом ☻задание те же, просто они немного меняют содержание

  • Anonymous
    February 02, 2015
    Какая точность процентов у задании 7. У меня вышло 66,360856269113149847094801223242 и так далее.

  • Anonymous
    February 02, 2015
    А кто поможет мне?? Чтобы твой трек попал в ротацию на online радио для айтишников, реши следующую задачу: Билет на твой первый концерт в Лужниках содержит 6 цифр от 0 до 8. Сколько среди всех билетов «счастливых», т.е. таких, для которых сумма первых 3 цифр равна сумме последних 3 цифр?

  • Anonymous
    February 02, 2015
    Yurii, Если помять не изменяет, то я ввел просто целое число. Правда для моих данных процент был меньше ))

  • Anonymous
    February 02, 2015
    в 6 задаче для 8 цифр от 0 до 5, вроде сделал все правильно, но ответ не засчитывает. кто знает, хотя бы в районе 335922 ?

  • Anonymous
    February 02, 2015
    Все, понял, просто два раза одно и тоже число в разных комбинаций засчитывал.

  • Anonymous
    February 02, 2015
    @Данил как ты рассчитал и что получил??

  • Anonymous
    February 02, 2015
    Olya В цикле сделай счетчик из 6 переменных начиная с последней. При достижении переменной числа 8, сбрасываем её в ноль, а идущую перед ней инкрементируем и так до 888888. При этом каждый цикл проверяем условием не подходит ли полученное число как счастливое.

  • Anonymous
    February 02, 2015
    do not want to close my eyes i do not want to fail asleepdo not want to close my eyes i do not want to fall asleep cause i would miss you baby and i do not want to miss a thing, а он все равно пишит неправильно

  • Anonymous
    February 02, 2015
    Странно Скачай файл задания ещё раз, он мог изменится.

  • Anonymous
    February 02, 2015
    Не могу понять как применить частотный словарь в 10 задании. Ктот поможет?

  • Anonymous
    February 02, 2015
    @Yurii сначала нужно собрать частотнось символов в тексте, затем отсортировать по частотности и воспользоваться словарь для замены. Самый упоминаемый символ заменять на первый из словаря и т.д.

  • Anonymous
    February 02, 2015
    @странно там в одном месте 2 пробела подряд должно быть, я писал уже выше о этом задании

  • Anonymous
    February 03, 2015
    Решали задачу 17? Кто нибудь может сформулировать по-человечески в чём состоит задание? Чтобы жюри международного конкурса исполнителей «Еврослух» больше не обвиняли в необъективном судействе, организаторы конкурса решили внедрить им в помощь автоматическую систему оценки хореографии исполнителей. Эта система автоматически фиксирует правильность исполнения танца по координатам исходя из попадания в свет софита в форме треугольника. При этом если участник конкурса попадает на границу освещения, то система не фиксирует ошибку. На вход система получает файл, где сначала в строчках находятся координаты вершин треугольника софита, а в последней строчке — координаты участника конкурса на сцене. Программа должна определить, сделал ли ошибку музыкант при попадании в треугольный свет софита. Необходимо вывести 0, если ошибки не было. Если ошибка была — необходимо вывести номера строк (номера начинаются с 1), соответствующей песни. И прилагается файл, в котором задана куча треугольников и последняя строчка - координаты точки.

  • Anonymous
    February 03, 2015
    @Dmitry Что делать если частоты у некоторых букв повторяются? У меня все время эти буквы путаются.

  • Anonymous
    February 03, 2015
    Кто с 20-й разобрался? Какой там нормальный формат вывода? Их как то отсортировать что бы принимало? Все инженеры должны быть задействованы?

  • Anonymous
    February 03, 2015
    В первой задаче - почему секунды делят на 360, а не на 3600 ?? и ответ считается верным, если делить на 360. 1 час - 3600 секунд.

  • Anonymous
    February 03, 2015
    Ольга, потому что просмотр занимает 10 секунд, а не 1

  • Anonymous
    February 03, 2015
    @Данил, у меня то же самое было, я переставил некоторые (3-4) буквы в частотном словаре.

  • Anonymous
    February 04, 2015
    В задаче номер 17 требуется обработать массив координат вершин треугольника. И определить находится ли точка (последняя строка) в этом треугольнике. Если да, то это ошибка и нужно вывести номер строки (с 1).

  • Anonymous
    February 04, 2015
    Привет, кодеры. Помогите с 12 заданием (В новой версии Монструс Креативус 3500 для написания музыкальных шедевров использует более продвинутый язык программирования !++...) . Делаю все верно как по логике, но получается вот такой текст (it is iy dabe ib ia bow of hever i aijt gknna liva booeveb i aust ganna live whale a am alive at is mg life). Подозреваю что с меткой что-то не то делаю. Позкажите как правильно использовать метку, куда именно возвращаться?

  • Anonymous
    February 04, 2015
    @Данил, буквы с одинаковой частотой расположены в порядке первого использования в тексте (у меня было так). P.S. Помогите с 17-м вопросом!

  • Anonymous
    February 04, 2015
    @Yurii, насколько я помню, в задании 12 было сказано, что команда "<" извлекает из стека число, если оно !=0, на самом деле число извлекается из стека в любом случае. @Александр, спасибо за 17!

  • Anonymous
    February 04, 2015
    Спасибо. А то условие так сформулировано что извлекать не нужно во втором случае

  • Anonymous
    February 04, 2015
    В задаче про круглые софиты: Для расчётов считать размер штрафа за попадание в свет софита с ошибкой — 499 баллов Что с 499 делать?

  • Anonymous
    February 04, 2015
    В 14-том задании даны координаты 8298 1892 6763 7933 595 7670 2124 6914 1382 6940 и т.д. первая строка это типа координаты реки? И как их делить?

  • Anonymous
    February 04, 2015
    The comment has been removed

  • Anonymous
    February 04, 2015
    Да, условие в 12-м задании не совсем точно сформулировано. Извлекать приходится в любом случае. После этого текст становится нормальным

  • Anonymous
    February 04, 2015
    Кто-нибудь подскажет как именно нужно отвечать в 19-м? Типа так: Бажен,Бажена,Безсон,Белослав... или ещё и пробел? У меня у одного все кто в файле более раза встречаются кроме одного?

  • Anonymous
    February 04, 2015
    Кто-то может растолковать что в 14 том делать, как их сортировать? Напомню о чем (На входе программы определение речки, которая задана координатами своего начала и конца, а также набор координат точек, для которых надо определить, к территории панка или к зоне инди-рока они принадлежат. Ответ выдать в виде строчки вида ИПИПИИИП..., где последовательность соответствует порядку точек в исходном файле.) Спасибо заранее.

  • Anonymous
    February 04, 2015
    К 19-му вопрос снят. Считал всех кто встречался несколько раз, а не тех кто больше всех.

  • Anonymous
    February 04, 2015
    Кто-нибудь может объяснить условие девятой задачи? (На реалити-шоу для музыкальных исполнителей 2 судьи оценивают ежедневно работу и выступления каждого участника, при этом они фиксируют свои оценки в специальный блокнот вручную...) Как понять, когда была допущена ошибка, в каком формате нужен ответ?

  • Anonymous
    February 04, 2015
    Кто-то сделал 20-у? Ответ точно известен, но под их формат ничего не получается вписать.

  • Anonymous
    February 04, 2015
    @Nekrolm. Тебе нужно найди среднее между всеми ошибками (сумма/кол.), сумму всех оценок и имя то что там написано. Результат будет пример: -100 50100 pluto

  • Anonymous
    February 04, 2015
    @Yurii, [сумма первого столбца]/[кол-во строк] [cумма второго] pluto  - дает неверный ответ. Как вот с этим быть? "Проблема в том, что в записях, несмотря на тщательность заполнения, имеются ошибки: значения штрафных баллов за ошибки и общая оценка перепутаны местами. Это необходимо учитывать в логике программы."

  • Anonymous
    February 04, 2015
    @Nekrolm Сомневаюсь что у нас задание разное, просто числа разные. У меня все так получилось, а то что написано учитывать не учитывать, то написано не для нас а для программы которая выдала файл, который ты скачиваешь себе. Вот моя прога и все с первого раза приняло for (int i = 0; i < 100; i++ )            {                fail += mas1[i, 0];                mark += mas1[i, 1];            }            Console.WriteLine(fail / 100 + " fail");            Console.WriteLine(mark + " mark");

  • Anonymous
    February 04, 2015
    Все, нашел, что не так: округление должно было быть вверх.


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

  • Anonymous
    February 04, 2015
    Кто решил 20-ю? Подскажите, какой формат ответа? Тот что предложен не принимает :-(

  • Anonymous
    February 04, 2015
    Да, в 20-ой совсем непонятно. У кого-нибудь прошло? Пример ответа странный, там не все инженеры, и минимальное количество часов неправильное, меньше суммы.

  • Anonymous
    February 04, 2015
    Задача 20. Думаю пример ответа просто не полный. Судя по постановке задачи нужно использовать каждого звуко-инженера. Так кто-нибудь решил? Может кто-то знает как связаться с теми кто устроил всё это? Там явно есть ошибка, хотелось бы, чтобы проверили и заверили что всё нормально.

  • Anonymous
    February 04, 2015
    6 задача. Обобщенно-счастливым называется билет, номер которого можно разбить на две части таким образом, чтобы сумма цифр обеих частей совпадала.... Что имеется в виду???   сумма первых двоих должна совпадать с суммой 6 остальных цифр в билете.......и.т.д?....так пробовал... не подходит мой ответ ....   кто подскажет

  • Anonymous
    February 04, 2015
    Вопрос снят.. Я правильно думал, просто не всё проверял до конца))

  • Anonymous
    February 05, 2015
    Тоже застрял на 20. Будут ли подсказки по поводу формата?

  • Anonymous
    February 05, 2015
    пролетел 8 задач, и уперся в 9-ую. Получаю результат -100 49464 pluto но неверно и все тут.

  • Anonymous
    February 05, 2015
    Korhog, до того как среднее и сумму считаете, приводите к правильному виду?

  • Anonymous
    February 05, 2015
    Alex, а что значит к правильному виду? У меня в каждой строке сперва отрицательное потом положительное число и логин. Я сперва подумал, что не может быть количество вычитаемых баллов быть больше чем количество баллов всего. Но... Не знаю. Уф.. Это задание похоже на задание среднестатистического заказчика.

  • Anonymous
    February 05, 2015
    Korhog, по условию они могут быть перепутаны местами, поэтому среднее нужно искать только среди отрицательных, а сумму - положительных.

  • Anonymous
    February 05, 2015
    Alex, ну вот у меня ничего не перепутано. Все строго, слева отрицательные, справа положительные и логин. Только один. хохмы ради проверил результат в Excel. то же самое.

  • Anonymous
    February 05, 2015
    Korhog, возможно вы вычитаете отрицательные значения из общей суммы. Этого не нужно делать!

  • Anonymous
    February 05, 2015
    float error = 0; int point = 0; for(int i = 0; i < m_records.Count; i++) {      error += m_records[i].Error;      point += m_records[i].Point;     } error /= m_records.Count; Console.WriteLine(String.Format("{0} {1} pluto", Math.Round(error), point);

  • Anonymous
    February 05, 2015
    Ой лоооол... Надо Truncate а не Round делать. Пойду напьюсь от своей тупости

  • Anonymous
    February 05, 2015
    Я с музами никак не прохожу дальше. У меня получаются результаты: 4.data - 100, 16.data - 161, 17.data - 168, 19.data - 168 Но они почему-то не подходят...

  • Anonymous
    February 05, 2015
    Что надо в 13й задаче про лестницу сделать?

  • Anonymous
    February 05, 2015
    Оказывается, в 13 задаче надо написать количество кирпичей. Из условия это не понятно. Сначала саму лестницу туда вписывал.

  • Anonymous
    February 06, 2015
    Ребят, кто помнит какой результат в 17-м задании. У меня получилось 4 числа, и не подходят. Много их должно быть, кто помнит?

  • Anonymous
    February 06, 2015
    @Yurii, в 17-м у меня 7 чисел было.

  • Anonymous
    February 06, 2015
    @Yurii, в 17-м у меня тоже было 7 чисел

  • Anonymous
    February 06, 2015
    Уважаемые организаторы, откликнитесь, пожалуйста! В 20-й задаче  или ошибка у Вас или у нас. Если на Вашей стороне все ОК, то большая просьба скорректировать условия задачи. Ну, уже очень получается не однозначная формулировка. Вроде бы элементарная задача. Ответ найден, но возможно из-за формата ответа он не принимается.

  • Anonymous
    February 06, 2015
    @Александр Делаю все как нужно и токо 4 находит. Может я не ту формулу применяю. (bx - ax) * (py - ay) - (by - ay) * (px - ax)  и если > 0  все три стороны то попадает в треугольник. Так ведь?

  • Anonymous
    February 06, 2015
    @Yurii, не совсем так. Нужно проверять одновременно и на >0 и на <0, т.е. смысл в том, чтобы знак был одинаковым для всех 3 сторон.

  • Anonymous
    February 06, 2015
    @Александр, с 20-ой задачей разберемся ближе к понедельнику. Спасибо за указание, и правда условие не очень.

  • Anonymous
    February 06, 2015
    @Dmitry Soshnikov, спасибо большое. Ждем изменений :-)

  • Anonymous
    February 07, 2015
    Кто-нибудь объясните подробней условие 7-й задачи, пожалуйста! Как я понял нужно найти длину максимальной последовательности для меня и для звезды. И в процентах найти сколько моя длина составляет от суммы этих длин Проверил на своём, простом примере, всё работает. Но ответ не принимается, видимо я не понял условия.

  • Anonymous
    February 07, 2015
    ребят пожалуйста помогите,никак не могу решить,какой ответ вы получили!!!!!!!!!!!! Билет на твой первый концерт в Лужниках содержит 6 цифр от 0 до 8. Сколько среди всех билетов «счастливых», т.е. таких, для которых сумма первых 3 цифр равна сумме последних 3 цифр?

  • Anonymous
    February 07, 2015
    Что не так делаю во 2-м? получился текст из Eagles - Hotel California, ввожу текст/название песни -- ответ не верный. Что не так?

  • Anonymous
    February 08, 2015
    Artem, все буквы маленькие?

  • Anonymous
    February 08, 2015
    Подскажите пожалуйста с 20-й задачей? По условию задачи инженеры не должны повторяться, каждый назначается только один раз? Каким должен быть формат ответа? Ответ система не принимает.

  • Anonymous
    February 09, 2015
    Мда, 20-я задача все хорошеет... Адекватно поставленную задачу с неадекватным форматом заменили на неадекватно поставленную с неадекватным форматом - явное улучшение!

  • Anonymous
    February 09, 2015
    @Nekrolm, не соглашусь. Да, есть спорные вопросы по тому, что написать в ответе. Но там всё просто.

  1. Получаешь самые часто встречающиеся слова.
  2. Их разбиваешь на две группы - первые и вторые слова.
  3. Первые сортируешь в порядке уменьшения частоты (если одинаковые, то первая идет та, что встретилась раньше по тексту)
  4. Для каждого первого слова составляешь свой частотный словарь по паре 1 + 2. Та пара, что встречается чаще остальных и идет в результирующий ответ.
  5. В ответе может получится так, что второе слово встретится несколько раз.
  • Anonymous
    February 10, 2015
    Какой должен быть формат ответа в 9 задаче? "-92 516807 pluto" не подходит. Там нужно посчитать среднее, сумму для каждого из судей или по всем судьям вместе?

  • Anonymous
    February 11, 2015

  1. Их разбиваешь на две группы - первые и вторые слова. ??? А как понять какие слова первые, а какие вторые?
  • Anonymous
    February 11, 2015
    @ya, в примере же говорится: находим например " ok google", ok это первое слово, а google второе

  • Anonymous
    February 11, 2015
    Тоже повис на 20-й задаче( Можно подробнее? Нахожу слова: например "ani" "google" "bing" "bro" и т.д. Я так понял, что нужно найти все пары в которых встречаются эти слова либо первыми либо вторыми, например: "bing contana" или "contana bing" и из всего месива этих пар выбрать те, которые встречаются чаще всех! Если все правильно, то что значит чаще всех? Есть диапазоны пар примерно (2-3) (30-70) и (200-и выше). Отбирать только те, что выше 200? или 30-40 - это уже очень часто? Ну а дальше суть очевидна и на первый взгляд не представляет сложностей.

  • Anonymous
    February 12, 2015
    @dr.psych, ну хорошо, "например, «hey сortana» или “ok google” – будем называть их значимыми парами" И что, всего 2 первых слова и 2 вторых? В общем как отличить значимое слово от незначимого?

  • Anonymous
    February 12, 2015
    Всем привет, подскажите по 17-ой            bool b1 = (P.X - A.X) * (A.Y - B.Y) - (P.Y - A.Y) * (A.X - B.X) > 0;            bool b2 = (P.X - B.X) * (B.Y - C.Y) - (P.Y - B.Y) * (B.X - C.X) > 0;            bool b3 = (P.X - C.X) * (C.Y - A.Y) - (P.Y - C.Y) * (C.X - A.X) > 0;            bool b4 = (P.X - A.X) * (A.Y - B.Y) - (P.Y - A.Y) * (A.X - B.X) < 0;            bool b5 = (P.X - B.X) * (B.Y - C.Y) - (P.Y - B.Y) * (B.X - C.X) < 0;            bool b6 = (P.X - C.X) * (C.Y - A.Y) - (P.Y - C.Y) * (C.X - A.X) < 0;            return (b1 && b2 && b2) || (b4 && b5 && b6); что в этих условиях не правильно?

  • Anonymous
    February 12, 2015
    Помогите с 7-й задачей! что именно там нужно найти?

  • Anonymous
    February 12, 2015
    @Максим StreamReader song = new StreamReader(@"Твой файл");            String line = song.ReadLine();            Int32 myPer = 0, hisPer = 0;            for (Int32 i = 0; i < line.Length; i++) {                if (line[i] == 'w' || line[i] == 'x' || line[i] == 'y' || line[i] == 'z') {                    myPer++;                }                if (line[i] == 'a' || line[i] == 'b' || line[i] == 'c' || line[i] == 'd') {                    hisPer++;                }            }            Console.WriteLine(myPer / ((myPer + hisPer) / 100));            Console.ReadLine(); А вообще условие присылай. Давно это было)

  • Anonymous
    February 12, 2015
    @Максим StreamReader song = new StreamReader(@"C:UsersDmitriyGoogle ДискCodeStarsPractice7108.data");            String line = song.ReadLine();            Int32 myPer = 0, hisPer = 0;            for (Int32 i = 0; i < line.Length; i++) {                if (line[i] == 'w' || line[i] == 'x' || line[i] == 'y' || line[i] == 'z') {                    myPer++;                }                if (line[i] == 'a' || line[i] == 'b' || line[i] == 'c' || line[i] == 'd') {                    hisPer++;                }            }            Console.WriteLine(myPer / ((myPer + hisPer) / 100));            Console.ReadLine(); А вообще условие дублируйте пжалста. А то как-то уже не помнится

  • Anonymous
    February 13, 2015
    По 20-й задачи, нужно проводить статистический анализ. Главное что 2 это точно не ОЧЕНЬ часто. Нужна переменная означающая порог ВАЖНОСТИ. KudasovD, ты находишь не слова, а все последовательные пары слов, [0;1][1;2][2;3] и т. д. из них берешь только важные. и понеслась

  • Anonymous
    February 13, 2015
    @KudasovD Выводимый ответ не принимается на сайте( Условие: Спеть со звездой — настоящая удача для начинающего исполнителя! Но неужели твое имя будет стоять вторым на диске, плакатах... Твое честолюбие не позволит этому случиться, ведь ты уже в шаге от статуса суперзвезды! Кажется, конфликт неизбежен. Чтобы споры за первенство не поставили крест на совместной работе, звукоинженер предложил определить, сколько работы вложил каждый из исполнителей в песню. Твои партии в записи он пометил буквами x,y,z,w, а партии приглашенной звезды — a,b,c,d. Также в расшифровке записи присутствуют другие случайные символы, обозначающие партии бэк-вокала, которые можно игнорировать. Принадлежность к конкретному исполнителю тем сильнее, чем длиннее максимальная подпоследовательность партии этого исполнителя. Давай узнаем, чье же имя окажется первым — определи на сколько процентов песня твоя. файл: 11.data Но спасибо за наводку) я немного не так делал) буду думать в этом направлении)

  • Anonymous
    February 13, 2015
    @KudasovD Всё, разобрался) спасибо)

  • Anonymous
    February 14, 2015
    @Максим Обращайся если что

  • Anonymous
    February 14, 2015
    6-я задача. Билет на твой первый концерт в Лужниках содержит 6 цифр от 0 до 6. Сколько среди всех билетов «счастливых», т.е. таких, для которых сумма первых 3 цифр равна сумме последних 3 цифр? Если я правильно понимаю, то номер первого билета 000001, а номер последнего 666666. Исходя из этого ответ 37926, однако не подходит. Где я не прав?

  • Anonymous
    February 14, 2015
    Нашел ошибку. В моих рассуждениях не учтено то, что в последовательности от 1 до 666666 встречаются и цифры > 6.

  • Anonymous
    February 14, 2015
    Подсказка: оказывается билет с номером 000000 в задаче тоже учитывается.

  • Anonymous
    February 14, 2015
    @Антон Помню я тоже на этом попался)

  • Anonymous
    February 15, 2015
    @Антон помоги пожайлуста,у меня тоже проблемы с етой задачей??????? Билет на твой первый концерт в Лужниках содержит 6 цифр от 0 до 8. Сколько среди всех билетов «счастливых», т.е. таких, для которых сумма первых 3 цифр равна сумме последних 3 цифр?

  • Anonymous
    February 15, 2015
    @Olga У тебя самый простой вариант. Самый быстрый код это вложенный цикл. Int32 s = 0, a = 0, b = 0;            for (Int32 i = 0; i < 889; i++) {                if (i % 10 == 9 || (i / 10) % 10 == 9) {                    continue;                }                a = (i % 10) + ((i / 10) % 10) + (i / 100);                for (Int32 j = 0; j < 778; j++) {                    if (j % 10 == 9 || (j / 10) % 10 == 9) {                        continue;                    }                    b = (j % 10) + ((j / 10) % 10) + (j / 100);                    if (a == b) {                        s++;                    }                }            }            Console.WriteLine(s);            Console.ReadLine();

  • Anonymous
    February 15, 2015
    The comment has been removed

  • Anonymous
    February 15, 2015
    Int32 s = 0, a = 0, b = 0;           for (Int32 i = 0; i < 9; i++) {             for (Int32 j = 0; j < 9; j++) {               for (Int32 k = 0; k < 9; k++) {                 a = i + j + k;                 for (Int32 q = 0; q < 778; q++) {                   for (Int32 w = 0; w < 778; w++) {                     for (Int32 e = 0; e < 778; e++) {                       b = q + w + e;                       if (a == b) {                         s++;                       }                     }                   }                 }               }             }           }           Console.WriteLine(s);           Console.ReadLine(); @Olga Этот код отрабатывает быстрее, но при таких объемах итераций это не существенно. Хотя на следующем задании про билеты, дай бог памяти, через одно, этот способ более удобный (исключительно на мой взгляд). Это тебе к размышлению) Удачи

  • Anonymous
    February 15, 2015
    третья задача про муз : Немногие знают, что музы существуют на самом деле. Физики-музыковеды выяснили, что музы, как и люди, говорят на разных языках, но это не мешает им общаться. Так, в Секретном институте прикладного музыковедения ученые в ходе наблюдений получили текстовый файл, который в каждой строчке содержит два номера муз (разделенных пробелом), которые общаются друг с другом. Предполагается, что общаются друг с другом только те музы, которые говорят на одном языке, и что для каждой музы в файле есть запись (т.е. муз, которые ни с кем не общаются, не существует). Узнай, сколько всего языков существует у муз. Ход решения : Для каждой пары чисел проверяю их вхождения в динамически расширяемый список языков и муз, говорящих на нем, если нет, добавляю новый язык в список и пару муз, которые на нем говорят... Для 16.data ответ получился 161. Я что-то делаю неправильно или задачу не понял???

  • Anonymous
    February 15, 2015
    @AOg Вся загвоздка в том, что при нахождении пары нужно обнулять итератор. Могут быть ситуации (и они обязательно встречаются) типа такой: проверяя, к примеру, 548 пару ты засек, что первая муза говорит на втором языке, дальше все сделано правильно, т.е. ты добавляешь пару в список муз говорящих на втором языке, НО теперь нужно обнулить итератор цикла обхода, т.к. вторая муза встретилась первый раз, о по ней уже могли быть совпадения ранее. Если в цифрах: 100 105 110 120 105 110 120 130 У тебя скорее всего считает 1 и 3 пары за один язык, а 2 и 4 за второй, а если сбросить итератор (на данном примере просто включить мозги))), то выходит, что все они говорят на одном языке. Вот как-то так. Если учтешь этот момент, то все будет збс. P.S. Я бы еще посоветовал добавлять не пару а только ту музу, которая не встречалась ранее, т.о. спасешься от адского дубляжа муз и будет немного проще отлавливать ошибки визуально. Дерзай!

  • Anonymous
    February 15, 2015
    P.S.S. Совсем забыл сказать, что ответ там где в районе от 10 до 30 примерно. По крайней мере у меня было или 16, или 19.

  • Anonymous
    February 16, 2015
    То была 5-я задача, а теперь точно 6-я - про обобщенно-счастливые билеты. Номер билета из 8 знаков от 0 до 6. Счастливым считается билет? номер которого можно разбить на две части таким образом, чтобы сумма цифр обеих частей совпадала. Сколько всего таких билетов? Насколько я понимаю, номера билетов можно разбить так: 0 0000000 00 000000 000 00000 0000 0000 00000 000 000000 00 0000000 0 если "счастливый" номер выпадает в первой категории, то я его не учитываю во всех остальных. если считать каждую категорию по отдельности, то получится количество "счастливых" комбинаций, а  не билетов. Т.е. билет № 10000001 является  "счастливым" при всех способах разбиения, Так или иначе у меня получается число 244279, но оно неверно.

  • Anonymous
    February 16, 2015
    Вот только написал, тут же нашел ошибку... 823543, однако

  • Anonymous
    February 16, 2015
    The comment has been removed

  • Anonymous
    February 16, 2015
    Сам отвечу: В общем НЕ надо ничего исправлять, нужно записать через пробел среднее по 1-ой колонке, сумму по 2 колонке и имя судьи, допустившего большее количество ошибок. Ответ писать не буду :) Спасибо за помощь Игорю Фролову!

  • Anonymous
    February 16, 2015
    Никак не могу понять, что именно нужно найти в 7 задании. Спеть со звездой — настоящая удача для начинающего исполнителя! Но неужели твое имя будет стоять вторым на диске, плакатах... Твое честолюбие не позволит этому случиться, ведь ты уже в шаге от статуса суперзвезды! Кажется, конфликт неизбежен. Чтобы споры за первенство не поставили крест на совместной работе, звукоинженер предложил определить, сколько работы вложил каждый из исполнителей в песню. Твои партии в записи он пометил буквами x,y,z,w, а партии приглашенной звезды — a,b,c,d. Также в расшифровке записи присутствуют другие случайные символы, обозначающие партии бэк-вокала, которые можно игнорировать. Принадлежность к конкретному исполнителю тем сильнее, чем длиннее максимальная подпоследовательность партии этого исполнителя. Давай узнаем, чье же имя окажется первым — определи на сколько процентов песня твоя. Нужно сравнить максимальное количество элементов в  подпоследовательности? Или найти соотношение количества подпоследовательностей? Или просто найти сумму элементов?

  • Anonymous
    February 17, 2015
    Нужно посчитать максимальную непрерывную последовательность своей партии и партии звезды. Своя последовательность прерывается только последовательностью звезды и наоборот. Ну а далее myPer / ((myPer + hisPer) * 100)

  • Anonymous
    February 17, 2015
    FeaN0r, не самое красивое решение выглядит примерно так для своих партий int maxMy = 0; Regex rgx = new Regex(@"[^abcd]+]"); foreach(Match match in rgx.Matches(text)) {   string s = Regex.Replace(tatch.Value, @"[^xyzw]", "");   if(s.Length > maxMy)       maxMy = s.Length; } для партий приглашенной звезды то де самое, только символы в выражениях другие

  • Anonymous
    February 17, 2015
    Кто решил 20-е задание помогите разобраться что требуется, и правильно ли я понимаю задание.

  1. Как определить "значимые пары"? Это любые пары, которые встречаются более одного раза? например в тексте "aaa bbb aaa bbb aaa bbb ccc" значимые пары будут "aaa bbb" и "bbb aaa" или есть еще какие нюансы?
  2. Дальше работаем только со значимыми парами (для определение частот и т.д.)? Первые слова упорядочиваем по частоте. При равной частоте первым берем то, которое первым встречается?
  3. Для каждого первого слова находим все вторые и упорядочиваем по частоте по тому же принципу? Если у вторых одинаковая частота что делать? Брать первое встречающиеся?
  4. В каком формате нужен ответ? первое+второе слова без пробелов и т.д.? т.е. в ответе должна быть строка без пробелов? или разделять?
  • Anonymous
    February 17, 2015
    alex_makhnov,
  1. нет, два раза это не ОЧЕНЬ часто))
  2. Да, Да
  3. Да, Да
  4. В том же что и на входе пары через пробел, слова пары тоже через пробел
  • Anonymous
    February 17, 2015
    По поводу 20го задания, если два раза не ОЧЕНЬ часто, то сколько это ОЧЕНЬ часто?

  • Anonymous
    February 17, 2015
    mkryuk я выставлял порог 15, тоесть все что чаще 15-ти важно. На 10-ти у меня не подходило.

  • Anonymous
    February 17, 2015
    Korhog Еще уточню про значимые пары. Пусть будет текст "aaa bbb aaa bbb aaa bbb ccc"  самая встречающаяся здесь пара "aaa bbb", вторая "bbb aaa", но если из текста выбросить все первые пары, то вторых не получится. Либо можно просто считать сначала 1+2 слово, потом 2+3 и т.д... Какой подход был у авторов задания?

  • Anonymous
    February 17, 2015
    alex_makhnov, вначале ты получаешь все значимые пары, например списком. потом для этого списка составляешь список левых слов, по убыванию частоты появления (в списке) , далее для каждого значения получаешь все правые, и получаешь самое часто встречающееся из них. таким образом ты получаешь новые пары.

  • Anonymous
    February 17, 2015
    Вообще очень советую для решения 20-ой задачи использовать List<T> и Linq

  • Anonymous
    February 17, 2015
    ну это конечно для C#

  • Anonymous
    February 17, 2015
    Korhog То биш задача была решена методом научного тыка? 10 еще не важно, 15 уже важно, а 14 почему не важно? Исходные данные могут отличаться, следовательно каждый должен перебрать свой порог ОЧЕНЬ часто? Предположим входящие данные следующие: "aaa bbb aaa bbb aaa bbb ccc ddd ccc eee" Из задания следует: "берем в порядке убывания частоты все первые слова пар" а) Находим все пары: 1 aaa bbb 2 bbb aaa 3 aaa bbb 4 bbb aaa 5 aaa bbb 6 bbb ccc 7 ccc ddd 8 ddd ccc 9 ccc eee b) Упорядочиваем по убыванию частоты первых слов 1 aaa bbb 2 aaa bbb 3 aaa bbb 4 bbb aaa 5 bbb aaa 6 bbb ccc 7 ccc ddd 8 ccc eee 9 ddd ccc Далее в задании сказано: "и для каждого такого слова в качестве второго берем самое часто встречающееся из вторых слов для данного первого слова" для aaa (ключ встречается 3 раза) это будет aaa bbb (3 штуки) для bbb (ключ встречается 3 раза) -> bbb aaa (2 штуки) для ccc (ключ встречается 2 раза) -> ccc ddd (1 штука) для ddd (ключ встречается 1 раз) -> ddd ccc (1 штука) Далее в задании: "Полученные слова надо записать подряд в виде единого текста для передачи на радиотелескоп." Опустим, что здесь ничего не сказано о пробелах, допустим - они нужны. Результат с порогом часто > 0: aaa bbb bbb aaa ccc ddd ddd ccc Результат с порогом часто > 1: aaa bbb bbb aaa Результат с порогом часто > 2: aaa bbb Какой из ответов верный?

  • Anonymous
    February 17, 2015
    Korhog, слушай может эксперимент проведем? Ты выложишь свои исходные данные, я прогоню их через свою программу и пришлю ответ. А ты скажешь что не так.

  • Anonymous
    February 18, 2015
    Для 105-ти фанаток )) 3003879884000808056955836960556471249224016966041396053178268434925629255305292092574957045907800667610489997041311193494427424743926213378048000000000000000000000000

  • Anonymous
    February 18, 2015
    alex_makhnov, напиши мыло, куда скинуть, а то многабукаф

  • Anonymous
    February 18, 2015
    Korhog, alex_makhnov@mail.ru

  • Anonymous
    February 19, 2015
    Ребята, помогите пожалуйста с 4ой задачей. "На международном музыкальном фестивале участники говорят на множестве разных языков. Чтобы все могли понимать друг друга, организаторы предложили использовать автоматические переводчики, но переводчики есть не для всех пар языков. В текстовом файле в каждой строке содержится (через пробел) имя переводчика, с какого языка и на какой он может переводить. Какое минимальное количество переводчиков необходимо, чтобы переводить с Исландского на Албанский?" Ни у кого не возникало проблем с кодировкой?

  • Anonymous
    February 19, 2015
    sasha, если пишешь на шарпе, попробуй File.ReadAllLines(file, Encoding.Default);

  • Anonymous
    February 20, 2015
    sasha, можно открыть Блокнотом и сохранить в нужной кодировке :)

  • Anonymous
    February 20, 2015
    В 20 задаче какой принцип? Нам надо искать часто встречающиеся слова сразу же? а потом разбивать на два списка (четное - левое, нечетное - правое) Или сначала бить на список пар [0, 1] [1, 2] [2, 3] и т.д. и в списке часто встречающихся бить на два списка левых и правых? Во втором варианте получил что все левые слова встречаются по 9 раз а правые по 8, что-то не то( посмотрел комментарий Александра, 4 пункт не понял например, список левых hi piy список правых cortana fish cortana т.е. делать новый список на каждое левое слово? hi cortana hi fish hi cortana и пара hi cortana попадает в ответ? а по комментарию Александра: если мы сделали список встречающихся правых слов, например (google, sea), в нем не может ведь быть повторных слов, тогда суть 4 пункта опять не понимаю( { Но там всё просто.

  1. Получаешь самые часто встречающиеся слова.
  2. Их разбиваешь на две группы - первые и вторые слова.
  3. Первые сортируешь в порядке уменьшения частоты (если одинаковые, то первая идет та, что встретилась раньше по тексту)
  4. Для каждого первого слова составляешь свой частотный словарь по паре 1 + 2. Та пара, что встречается чаще остальных и идет в результирующий ответ.
  5. В ответе может получится так, что второе слово встретится несколько раз. }
  • Anonymous
    February 21, 2015
    Привет! помогите с задачей №2 на файл - 66.result получил следущее: do not want to close my eyes i do not want to fall asleep cause i would miss you baby and i do not want to miss a thing не принимает, в чем фишка?

  • Anonymous
    February 21, 2015
    Друзья, не могу понять в переменную какого типа надо сохранять значение 106! ?потому как мой ответ на 105! и на 104! совпадает с приведенными выше, но какая-то часть числа заполняется нулями. никак не могу получить число с большим количеством ненулевых знаков до запятой, которое, очевидно, и ждет проверяльщик. (я даже не говорю про деление на 360 и т.д.)

  • Anonymous
    February 21, 2015
    В 14 задаче в первой строке координаты соответствуют x1, y1, x2, y2? Вроде всё чётко, вроде кучу нюансов перебрал, но не подходит ответ. С условием точно всё верно? Что не так?            static double GetX(double y)            {                return (((y - 4947) / 3676) + (343 / 4659)) * 4659;            }            // (x - 343) / 4659 = (y - 4947) / 3676            // x = (((y - 4947) / 3676) + (343 / 4659)) * 4659            var reader = new StreamReader("80.txt", System.Text.Encoding.Default);            reader.ReadLine();            var result = string.Empty;            while (reader.EndOfStream != true)            {                var coords = reader.ReadLine().Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries);                if (coords.Count() == 2)                {                    var x = double.Parse(coords[0]);                    var y = double.Parse(coords[1]);                    result += x > GetX(y) ? "И" : "П";                }            }            reader.Close();            Debug.Print(result);

  • Anonymous
    February 22, 2015
    Bardiamist, у меня сработало, когда я сделал так: вместо   return (((y - 4947) / 3676) + (343 / 4659)) * 4659  return (((y - 4947) / 3676) + 0,0736209487014381) * 4659

  • Anonymous
    February 22, 2015
    Антон, ага! Сделал вот так: return (((y - 4947) / 3676) + ((double)343 / 4659)) * 4659; Благодарю! :)

  • Anonymous
    February 22, 2015
    Задачу 15 решил в Excel )). Задача 16 - пока не понятно как такие задачи вообще решать... Может кто подскажет направление...

  • Anonymous
    February 22, 2015
    Помогите с решением задачи №2, или сбросьте пример кода, тк разобраться не могу адекватные текст получаю но не принимает ответ. Файл - 66-й буду благодарен пишите на - alexandr.cebotari@live.ru

  • Anonymous
    February 22, 2015
    Александр, скорее всего вы копируете текст из консоли, но в ней есть символы перевода каретки.

  • Anonymous
    February 23, 2015
    Было бы хорошо организовать на сайте место, куда можно было бы выкладывать код с изящным решением. Я думаю многим захочется сравнить свой код с "ЭТАЛОНОМ". Задача 1: using System.Numerics; // Добавляем... namespace CodeStars01 {    class Program    {        static void Main(string[] args)        {            BigInteger bresult = 1;            for (int i = 1; i <= 106; i++)            {                bresult *= i;            }            bresult /= 360;            Console.WriteLine(bresult.ToString());            Console.ReadKey();        }    } } Задача 2: using System.IO; // Добавляем.. namespace Lesson2 {    class Program    {        static void Main(string[] args)        {            int Letter = 0;            string Song = null;            char[] charsToTrim = { '.', ',', '!', '?', ':', ';', '-' };            // Считываем текст песни из файла            string SourseText = File.ReadAllText(@"68.result");            // Формируем массив, разделяя весь текст зашифрованной песни по словам            string[] Words = SourseText.Split();            for (int i=0; i<Words.Length; i++)            {                // Убираем вначале и в конце каждого слова ненужные знаки препинания                Words[i] = Words[i].Trim(charsToTrim);                switch (Words[i])                {                    case "Yo":                        Letter++;                        break;                    case "Nice":                        // Если Nice повторяется 2 раза то это разделение слов                        if (Words[i-1] == "Nice")                        {                            Song += " "; // Поэтому вставляем пробел                            continue;                        }                        // Добавляем подсчитанную букву в итоговую строку                        Song += (char)(Letter + Convert.ToInt16('a')-1);                        Letter = 0;                        break;                    default:                        break;                }            }            Console.WriteLine(Song);            Console.ReadKey();        }    } }

  • Anonymous
    February 23, 2015
    Да, идея интересная, но я бы предложил открывать доступ к примеру решения каждой задачи после того, как собственное решение будет принято проверяльщиком.

  • Anonymous
    February 23, 2015
    Антон, файл создается для результата. Ниже мой код Не знаю, что делать... Или же от браузера зависит char[] exept = { ',', ':', ';', '!', '?', ' ', '-', '.' };            string final = "";            int counter = 0;            const string ALPHABET = "abcdefghijklmnopqrstuvwxyz";            using (StreamReader reader = new StreamReader("e:\66.result.txt"))            {                string[] temp = reader.ReadLine().Split(exept);                temp = temp.Where(x => !string.IsNullOrEmpty(x)).ToArray();                for (int i = 0; i < temp.Length; i++)                {                    if (temp[i] == "Yo")                    {                        counter++;                    }                    try                    {                        //Need to solve the issue about such line of elements in array for ex:                        //"nice", "", "nice" <- doesnt append " " in this case                        if (temp[i] == "Nice" && counter != 0)                        {                            final += ALPHABET[counter - 1];                            counter = 0;                            if (temp[i + 1] == "Nice")                            {                                final += " ";                            }                        }                    }                    catch (IndexOutOfRangeException e)                    {                        Console.WriteLine(i);                    }                }            } Буду благодарен если поможете.

  • Anonymous
    February 24, 2015
    Alex, мой код такой: string alphabet = "abcdefghijklmnopqrstuvwxyz";            string encrypted_song = System.IO.File.ReadAllText(@"c:temp65.txt");            string[] encrypted_words = encrypted_song.Split();            int alpha = 0;            int wordcounter = 0;            string decoded = "";            foreach (string word in encrypted_words)            {                if (word.Contains("Yo"))                {                    wordcounter = 0;                    alpha++;                }                else if (word.Contains("Nice"))                {                    wordcounter++;                    switch (wordcounter)                    {                        case 1:                            decoded += alphabet[--alpha];                            alpha = 0;                            break;                        case 2:                            decoded += " ";                            wordcounter = 0;                            break;                    }                }            }            Console.WriteLine(decoded);

  • Anonymous
    February 25, 2015
    Просьба поделиться кто как решил пятую (5) задачу про билеты в Лужники КОМПАКТНО! Мой код: namespace Lesson5 {    class Program    {        static void Main(string[] args)        {            int UpNumber = 5; // Максимальная цифра билета            int Count = 6; // Количество цифр в билете (Нужно добавить проверку на чётность)            int[] Ticket = new int[Count];            int Lucky = 0; // Количество счастливых билетов            for (int i=1; i<Math.Pow(UpNumber+1, Count); i++) // Math.Pow(UpNumber+1, Count) - это формула количества комбинаций билетов            {                Ticket[Count - 1] += 1; // Увеличиваем номер                if (i % (UpNumber+1) == 0)                {                    IsOk(Ticket, Count, UpNumber); // Проверка номера на соответствие заданию                }                Lucky += IsLucky(Ticket, Count); // Определяем счастливый ли билет. Если счастливый, то учитываем счетчик счастливых билетов            }            Console.WriteLine(Lucky+1); // Нашел подсказку, что номер 000-000 тоже учитывается            Console.ReadLine();        }        internal static void IsOk (int[] Ticket, int Count, int UpNumber)        {            for (int i = Count-1; i > 0; i--)            {                if (Ticket[i]== UpNumber + 1)                {                    Ticket[i] = 0;                    Ticket[i - 1] += 1;                }            }        }        internal static int IsLucky (int[] Ticket, int Count)        {            int Left = 0;            int Right = 0;            for (int i=0;i<Count/2;i++)            {                Left += Ticket[i];                Right += Ticket[Count - i - 1];            }            return Left == Right?  1: 0;        }    } }

  • Anonymous
    February 25, 2015
    Думаю самый компактный код такой:            int s = 0;            for (int a = 0; a < 7; a++)            {                for (int b = 0; b < 7; b++)                {                    for (int c = 0; c < 7; c++)                    {                        for (int d = 0; d < 7; d++)                        {                            for (int e = 0; e < 7; e++)                            {                                for (int f = 0; f < 7; f++)                                {                                    if (a + b + c == d + e + f) s++;                                }                            }                        }                    }                }            }            Console.WriteLine(s);            Console.ReadLine();

  • Anonymous
    February 25, 2015
    Аналогичный метод очень хорошо подходит и для решения задачи про обобщенно-счастливый билет. Разница только в том, что там необходимо больше циклов и проверок сумм левой и правой части.

  • Anonymous
    February 25, 2015
    Не хочет принимать ответ вида "-105 151008 pluto" в 9 задаче PunkCode'a, скажите, что я делаю не так? Алгоритм вроде правильно делаю, в Excel'е проверил, но всё равно не хочет принимать(

  • Anonymous
    February 25, 2015
    Не хочет принимать ответ типа "-105 151008 pluto" в 9 задаче PunkCode, что я делаю не так?

  • Anonymous
    February 25, 2015
    Claifer ошибки учтены? (значения в колонках могут быть перепутаны местами)

  • Anonymous
    February 25, 2015
    Помогите, плз! Кто-нибудь знает почему так? Код: Console.WriteLine(200 / (200 + 50) * 100); // 0 Console.WriteLine(200 * 100 / (200 + 50)); // 80 Console.WriteLine(200 / ((200 + 50) / 100)); // 100 Console.ReadLine();

  • Anonymous
    February 25, 2015
    Да, всё учтено, сначала переношу все отрицательные элементы в левую колонку, неотрицательные в правую, суммирую левую, делю на количество строк, округляю вверх, суммирую правую строку, получаю ответ. Но ответ не принимает.

  • Anonymous
    February 26, 2015
    Claifer, попробуйте не округляя, просто целую часть взять.

  • Anonymous
    February 26, 2015
    Владимир,

  1. Console.WriteLine(200 / (200 + 50) * 100) - получается 0, потому что компилятор в этом случае работает с типом int32, целое от деления 200/250 = 0, вот и результат. Если же немного переписать - Console.WriteLine(200.0 / (200 + 50) * 100), то результат равен 80.
  2. Console.WriteLine(200 * 100 / (200 + 50)) - тут все понятно и правильно
  3. Console.WriteLine(200 / ((200 + 50) / 100)) здесь та же проблема - результат деления 250 на 100 = 2, а не 2.5, как вы ожидаете, т.к. компилятор работает с целыми числами, тут  можно поступить так: Console.WriteLine(200 / ((decimal)(200 + 50) / 100)) - результат 80
  • Anonymous
    February 26, 2015
    Антон, спасибо, что откликнулись. Но ни как не могу понять (точнее "принять"), что нельзя получить арифметически верное число (decimal) при расчете которого используются только целочисленные переменные (int). Код: int intNum = 1; decimal Number = 1 / (1 + intNum ) ;  // 0 Неужели всегда необходимо использовать неявное приведение типов в формулах, где из целых я хочу получить вещественный результат (например процент)?

  • Anonymous
    February 26, 2015
    Кто-нибудь может помочь с 12 задачей? Никак не могу понять как реализовать метку и возвращение к ней.

  • Anonymous
    February 26, 2015
    Влад- Упрощенно так: for (int i = 0; i <10; 1++ {     if (a == b) mark = i;     if (d = e ) i = mark; }

  • Anonymous
    February 27, 2015
    Так вроде так и делаю, всё равное ничего не работает. Я недавно программирую, может где глупую ошибку допустил. Вот мой код для 12 задания: string text = System.IO.File.ReadAllText(@"C:52.data");            int k = 0;            int z = 0;            int i = 0;            int mark = 0;            var MyStack = new Stack<int>();            for (i = 0; i < text.Length; i++)            {                if (text[i] == 'Z') MyStack.Push(0);                if (text[i] == '+') MyStack.Push(MyStack.Pop() + MyStack.Pop());                if (text[i] == '*') MyStack.Push(MyStack.Pop() * MyStack.Pop());                if (text[i] == '#') MyStack.Push(MyStack.Pop() + 1);                if (text[i] == '~') Console.Write(" ");                if (text[i] == '!') Console.Write((char)('a' + MyStack.Peek()));                if (text[i] == '$') k = MyStack.Pop(); z = MyStack.Pop(); MyStack.Push(k); MyStack.Push(z);                if (text[i] == '@') MyStack.Push(MyStack.Peek());                if (text[i] == '`') MyStack.Pop();                if (text[i] == '-') MyStack.Push(MyStack.Pop() - 1);                if (text[i] == '[') mark = i;                if (text[i] == '<')                {                    if (MyStack.Pop() != 0)                    {                        i = mark;                    }                    else continue;                }            }            Console.ReadKey();

  • Anonymous
    February 28, 2015
    как минимум ошибка здесь:  if (text[i] == '$') k = MyStack.Pop(); z = MyStack.Pop(); MyStack.Push(k); MyStack.Push(z);

  • Anonymous
    February 28, 2015
    еще было бы неплохо использовать конструкцию if () else if () в этом случае каждый символ будет проверяться один раз, а сейчас символ проверяется по 12 раз. Также можно switch () case

  • Anonymous
    February 28, 2015
    Да, сегодня меня осенило, что ошибся в синтаксисе. Испытал радость и разочарование одновременно. Спасибо за содействие, буду продолжать, ещё 8 заданий впереди.

  • Anonymous
    March 02, 2015
    Всё никак не могу решить 9 задачу, может кто прогнать эти данные в своём коде и отписать какой ответ выдаёт? У меня как ни старался -105(-104) 151008 pluto http://pastebin.com/Qnw5FqWZ

  • Anonymous
    March 03, 2015
    Claifer Правильный ответ: 104 151008 saturn

  • Anonymous
    March 03, 2015
    да, только -104

  • Anonymous
    March 03, 2015
    Прошу, покажите пример задачи №3, та которая с музами. Я вообще что-то не понимаю как её решать

  • Anonymous
    March 04, 2015
    Nublin, вот мой вариант решения 3-й задачи: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MusesApp {    public class Muses    {        int museOne;        int museTwo;        public int MuseOne        {            get { return museOne; }            set { museOne = value; }        }        public int MuseTwo        {            get { return museTwo; }            set { museTwo = value; }        }    }    public class MusesLanguages    {        public List<int> Muses;        public MusesLanguages()        {            Muses =  new List<int>();        }    }    class Program    {        static void Main(string[] args)        {            var file = new System.IO.StreamReader(@"C:temp20.data");            string line;            var musesPairs = new List<Muses>();            Muses musesPair;            while ((line = file.ReadLine()) != null)            {                musesPair = new Muses();                musesPair.MuseOne = int.Parse(line.Split()[0]);                musesPair.MuseTwo = int.Parse(line.Split()[1]);                musesPairs.Add(musesPair);            }            var languages = new List<MusesLanguages>();            AddNewLanguage(ref musesPairs, ref languages);            int langID = 0;            while (musesPairs.Count > 0)            {                if( SearchMuses(ref musesPairs, ref languages, langID))                {                    continue;                }                langID++;                AddNewLanguage(ref musesPairs, ref languages);            }            Console.WriteLine(languages.Count.ToString());            Console.ReadKey();        }        private static void AddNewLanguage(ref List<Muses> musesPairs, ref List<MusesLanguages> languages)        {            var language = new MusesLanguages();            language.Muses.Add(musesPairs[0].MuseOne);            language.Muses.Add(musesPairs[0].MuseTwo);            languages.Add(language);            musesPairs.Remove(musesPairs[0]);        }        static bool  SearchMuses(ref List<Muses> musesPairs, ref List<MusesLanguages> languages, int langID)        {            foreach (Muses muse in musesPairs)            {                if (languages[langID].Muses.Exists(lang => lang == muse.MuseOne))                {                    languages[langID].Muses.Add(muse.MuseTwo);                    musesPairs.Remove(muse);                    return true;                }                else if (languages[langID].Muses.Exists(lang => lang == muse.MuseTwo))                {                    languages[langID].Muses.Add(muse.MuseOne);                    musesPairs.Remove(muse);                    return true;                }            }            return false;        }    } }

  • Anonymous
    March 05, 2015
    The comment has been removed

  • Anonymous
    March 05, 2015
    А про 16-ю задачу кто-нить может подсказать (Нужно найти максимальную площадь, которую может занять прямоугольная сцена)?

  • Anonymous
    March 07, 2015
    Задание 11 Посмотрите, пожалуйста, верно ли я понял условия? Уже и на c# и в экселе делал, не принимает ответ.

"Может ли музыкальный шедевр написать робот? Гениальный Доктор Композитус утверждает, что его робот Монструс Креативус 2000 сделает это в два счета! Тебе предстоит проверить его работу, ведь, возможно, старик Композитус уже просто сошел с ума. Для написания шедевра робот использует язык !#. Каждая команда языка — один символ, доступные команды: • Z — положить ноль на верхушку стека • + - сложить два числа на верхушке стека • * - умножить два числа на верхушке стека • ! — вывести на печать букву, номер которой лежит на верхушке стека (a — 0, b — 1 и т.д.) • # - увеличить верхушку стека на 1 • % — ничего не делать • ~ - напечатать пробел Во входном файле содержится программа на языке !#. Определи, что напечатает эта программа."

           for (Int32 i = 0; i <= line.Length; i++)            {                if (line[i] == 'Z')                {                    MyStack.Push(0);                }                if (line[i] == '+')                {                int j = (int)MyStack.Pop();                int k = (int)MyStack.Peek();                MyStack.Push(j);                MyStack.Push(j + k);                }                if (line[i] == '*')                {                    int j = (int)MyStack.Pop();                    int k = (int)MyStack.Peek();                    MyStack.Push(j);                    MyStack.Push(j * k);                }                if (line[i] == '!')                {                    if ((int)MyStack.Peek() == 0)                        Console.Write('a');                    else                    Console.Write('b');                }                if (line[i] == '#')                {                    MyStack.Push(1);                }                if (line[i] == '%')                {                }                if (line[i] == '~')                {                    Console.Write(' ');                }            }

  • Anonymous
    March 08, 2015
    Владимир: Еще раз внимательно прочтите: • ! — вывести на печать букву, номер которой лежит на верхушке стека (a — 0, b — 1 и т.д.)

  • Anonymous
    March 08, 2015
    Владимир, и еще неверно обрабатываются символы "*", "+", а также неверно понято условие про символ "#"

  • Anonymous
    March 09, 2015
    Прошу прощения, предыдущие два обращения были к Виктору. Виктор, как дела с 11-й задачей?

  • Anonymous
    March 22, 2015
    В 11-ом задании • Z — положить ноль на верхушку стека • + - сложить два числа на верхушке стека • * - умножить два числа на верхушке стека • ! — вывести на печать букву, номер которой лежит на верхушке стека (a — 0, b — 1 и т.д.) • # - увеличить верхушку стека на 1 • % — ничего не делать • ~ - напечатать пробел Если у меня в стеке лежит например 2 5, то после команды + стек выглядит 10 2 5, или 10 5. И если у меня на верхушке стека число больше 25 то какую букву печатать, если z это 25. Подскажите пожалуйста уже вроде все комбинации перепробывал.

  • Anonymous
    March 22, 2015
    Все разобрался. Если был стек 2 5 7, то после операции * стек станет 10 7

  • Anonymous
    March 24, 2015
    Таки кто решил 18ю задачу (про круглые софиты) ? Что в ней не так? Для решения применяю уравнение x-x0)^2+(y-y0)^2<R^2, где x0, y0 - координаты центра окружности, x,y координаты точки (певца). Полученные номера строк ввожу через пробел, сумму ошибок считаю, умножая 499 на количество ошибок ввожу в поле для ответа через пробел после номеров строк. Ответ не верный. Какое условие задачи прочтено и понято мною неверно?

  • Anonymous
    March 24, 2015
    jakkuz Вы решили задачу номер 20, с инопланетянами? Подскажите ход решения

  • Anonymous
    March 24, 2015
    Антон Петров ответ помойму записывется так 1,2,14,15,1996 или так 1,2,14,15 1996

  • Anonymous
    March 25, 2015
    Алексей Перфильев, все-таки через пробел... Нашел ошибку - в координаты точки записывал одно и тоже число...

  • Anonymous
    March 26, 2015
    The comment has been removed

  • Anonymous
    March 26, 2015
    zadimka, поищи уравнение прямой на плоскости.

  • Anonymous
    March 26, 2015
    В математике разбираюсь не очень. Вы не могли бы показать на примере?

  • Anonymous
    March 26, 2015
    zadimka уравнение прямой y = k * x + b. Следовательно имеем две точки x1,y1 и x2,y2. Подставляем решаем систему, находим k и b. Далее зная k и b выражаем x через y. Подставляем Y точки с координатами фанатов, получаем X если полученное Х в ходе решения < X точки фаната то точка лежит левее прямой если > Х то правее. Ну или наоборот не помню точно

  • Anonymous
    March 27, 2015
    Спасибо большое! Думал никто не ответит из-за моей наглости) Просто в школе мы еще этого не проходили))))

  • Anonymous
    March 27, 2015
    20-я задача. Подскажите, что я делаю не так...

  1. собираю пары, затем считаю количество их повторов. таким образом у меня есть массив всех пар: pairs(LeftWord, RightWord, Count).
  2. Копирую пары и их частоты, для которых Count больше какого-либо значения (например 15) в другой массив значимых пар. В этом массиве таких пар 74.
  3. Беру левые части пар и суммирую для них значения частот пар, в которых они участвуют. Сортирую по убыванию. таких получилось 10, но два из них я удаляю, т.к. они повторяются меньше 20 раз, а остальные более 250.
  4. Для каждой левой части беру все правые части и считаю сумму частот значимых пар, в которых они участвуют. Для каждого левого получается от 1 до 9 правых, в основном с одинаковой частотой, поэтому беру первый из списка. Таким образом пара сформирована и я формирую результирующую строку. Пробовал вариант частоту левых и правых считать по повторам их в исходном тексте, суммировал для них частоты из массива всех пар. Результаты не приняты.
  • Anonymous
    March 30, 2015
    Задание №16 Скоро воплотится в жизнь твоя мечта — ты станешь хэдлайнером музыкально фестиваля вселенского масштаба! И тебе необходимо просто фееричное появление! Только вот незадача: чтобы спланировать выступление тебе нужно знать, где организаторы разместят сцену. Уже сейчас мы знаем, что площадка музыкального фестиваля охватит территорию размером 100×100 км. Здесь построят несколько палаточных городков и парковок для гостей и участников фестиваля. Сейчас у тебя уже есть карта фестиваля — в текстовом файле, где 0 означает пустое место, 1 занятое. Нужно найти максимальную площадь, которую может занять прямоугольная сцена. Следует учитывать, что сцена не должна соприкасаться ни с какими другими постройками и парковками даже по диагонали. Помогите кто а то даже не знаю как к ней подступить!

  • Anonymous
    March 31, 2015
    github.com/.../CodeStars На случай, если кому-нибудь нужно/интересно, здесь находятся условия всех двадцати задач и мои решения к ним. Если будут вопросы - обращайтесь. Комментарии, предложения, исправления приветствуются. =)

  • Anonymous
    April 19, 2015
    Добрый день. Не подскажите, а результаты конкурса огласят? events.techdays.ru/files.axd

  • Anonymous
    June 06, 2015
    Не могу разобраться с 3 задачей реализовал графы и пускал по ним DFS получилось 27 но ответ не приняли. Начал искать число полных графов оказалось что их там и нету. Графы реализовал через списки. Может я не до конца понимаю условие задачи? Если 1 муза общается с 2 и 3 а 2 общается только с 4 то музы 1 2 3 и 4 общаются на одном языке?

  • Anonymous
    July 23, 2015
    2Василий, Ответ на Ваш вопрос - ДА. Я делал через массивы и рекурсию. Мой код: int MaxFei = 1001; // Количество фей +1 (думал потом сделать автоопределение, но руки не дошли)            int Language = 0; //Порядковый номер языка на котором говорит фея            string[] SourseText = File.ReadAllLines(FileAddress.Text);            int[,] Talks = new int[2 * SourseText.Length, 3]; //Создаем массив из разговоров фей            for (int i = 0; i < SourseText.Length; i++)            {                string[] Feya = SourseText[i].Split();                Talks[i, 1] = Convert.ToInt32(Feya[0]);                Talks[i, 2] = Convert.ToInt32(Feya[1]);                Talks[i + SourseText.Length, 1] = Convert.ToInt32(Feya[1]); //Согласен, костыль, но лень оптимиз.                Talks[i + SourseText.Length, 2] = Convert.ToInt32(Feya[0]);            }            int[,] AllFei = new int[MaxFei, 2];            for (int i = 0; i < MaxFei; i++)            {                AllFei[i, 0] = i;// Массив всех фей            }            for (int i = 0; i < AllFei.GetLength(0); i++)            {                if (AllFei[i, 1] > 0) continue;                AllFei[i, 1] = Language;                Trace(ref AllFei, ref Talks, AllFei[i, 0], ref Language);                Language++;            }            OutData.Text = (Language-1).ToString();        }        public static void Trace(ref int[,] AllFei, ref int[,] Talks, int Fei, ref int Language)            {            for (int i = 0; i < Talks.GetLength(0); i++)            {                if (Talks[i, 0] == 1) continue;                if (Talks[i, 1] == Fei)                {                    AllFei[Talks[i, 2], 1] = Language;                    Talks[i, 0] = 1;                    Trace(ref AllFei, ref Talks, Talks[i, 2], ref Language);                }             }            }