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


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 (222)

  1. правильный ответ) says:

    самый популярный символ у них пробел

  2. Alexandr Zhuravlev says:

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

    55544974227544680400566293998224786716096656454846355728026828800000000000000000

    00000000. Для вычисления написана програмка – github.com/…/CodeStars01. Но вот почему то проверяльщик ответ не считает верным. Это у меня косяк или в консерватории?

  3. @Alexandr Zhuravlev: 60 – это секунды в минуты.

  4. Alexandr Zhuravlev says:

    @Dmitry Soshnikov Ступил да. Только деление 360 вместо 6 тоже не прокатывает. Вот число

    30038798840008080569558369605564712492240169660413960531782684349256292553052920

    92574957045907800667610489997041311193494427424743926213378048000000000000000000

    000000

  5. Alexandr Zhuravlev says:

    Все понял. В задании 105 на 104 поменяли. Число другое.

  6. Alexandr Zhuravlev says:

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

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

  8. Ihor says:

    емм.. а как вообще с такими большими числами работать? что ето за тип?

  9. @Ihor – посмотрите выше в исходниках у @AleZhu, как используется BigInteger

  10. ArtHell says:

    Про фанаток. Их 104. Мой ответ: 28608379847626743399579399624347345230704923486108533839793032713577421479098019

    92928530519912191112009990473372677327137549928327548774645760000000000000000000

    0000

    Что не так?

  11. @ArtHell: вроде бы всё правильно. Правда, число нулей не считал…

  12. Интересно, кто-нибудь пробовал решать эту задачу методом перебора?

  13. Dmitry says:

    @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

  14. Alex says:

    Пожалуйста помогите со  второй задачей???

  15. dubtar says:

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

  16. SomeName says:

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

  17. gvahramyan says:

    @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

  18. @gvahramyan – тот текст, что вы тут написали – не правильный. @Dmitry – аккуратнее, там есть хитрые пробелы местами… Прислушайтесь к совету @dubtar – кстати, за совет большое спасибо!

  19. SomeName says:

    @Dmitry

    Даже если вручную выставлять все пробелы, не принимает текст песни Aerosmith.

    И если там не должно быть по несколько пробелов м/у словами, то проблема в задании.

  20. Basterrior says:

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

  21. winchester says:

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

  22. gvahramyan says:

    @winchester

    1.нажать на файл правой кнопкой мыши

    2.открыть с помощью(Open With)

    3.и выберите любой текстовой редактор,который установлен на вашем компьютере(Word,Wordpad,теьт доцумент, и.т.д)

  23. misterpekert says:

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

  24. TarasovSA says:

    Текст песни у меня вышел такой:

    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

  25. misterpeker says:

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

  26. Дмитрий says:

    @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

  27. Дмитрий says:

    На 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 ''

  28. Александр says:

    :-(.

    Никак не могу решить 14 задачу.

    Река задана отрезком.

    Никто не знает как решается? Мой ответ не принимает 🙁

  29. darkmaster says:

    Со второй задачей действительно что-то странное…

    Я написал несколько приложений и всё равно, даже с выводом в файл не засчитываеся. Пробовал с знаками препинания и без, всё равно…

  30. Игог says:

    Не принимает первый ответ. Вот для 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();

           }

       }

    где я ошибся?

  31. Александр says:

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

    попробуйте просто число:

    28608379847626743399579399624347345230704923486108533839793032713577421479098019929285305199121911120099904733726773271375499283275487746457600000000000000000000000

  32. Александр says:

    А кто-то дошел до 14 задачи про реку?

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

    Интересно, а можно куда-то написать (типа ТП)?

  33. Данил says:

    а во втором в ответе должны быть знаки пунктуации?

  34. Александр says:

    Данил, у меня их нет. только текст.

  35. @Dmitry says:

    По второй задаче, скорее всего это касается только тех  у кого песня аэросмит.

    Там в одном месте встречается 3 раза подряд 'Nice'. Соответственно в результате ожидается 2 пробела.

  36. vanka says:

    В 20 задаче перебрал уже все, ничего не подходит.

    Я совершенно не могу понять условий:

    минимальное количество часов 23; Инженер № 1 назначается на блок №2 работает 13 часов; Инженер № 2 назначается на блок №5 работает 8 часов; Инженер № 3 назначается на блок №6 работает 2 часов; Инженер № 4 назначается на блок №7 работает 2 часов

    Как вообще в этом примере может получиться 23 ??!! и где все остальные инженеры и блоки?!

    Время нужно складывать или они работают параллельно? Может ли инженер делать блоков?

    Пришу привести пример правильного вывода на реальных данных.

    Общий комментарий: отличная задумка, побольше бы таких, но вот условия задач просто ужасают, 99,99% времени я потратил на угадывание выходного формата и пребор всех возможных вариантов трактовок условий. Как минимум нужно приводить в каждой задаче работающий пример входных -> выходных данных.

  37. Max says:

    не могу понять смысла второй задачи,…  куда подставлять готовые слова, вместо всех yo??

  38. Max says:

    Вот текст

    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

    Куда мне его подставлять или же все слова здесь игнорировать а писать только то что получилось????

  39. Yurii says:

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

  40. Александр says:

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

  41. Yurii says:

    Напомню о чем там речь.

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

    Узнай, сколько всего языков существует у муз.

  42. Александр says:

    Третья задача. Нужно узнать сколько всего языков.

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

  43. gvahramyan says:

    @Александр

    Ты какой ответ получил??

  44. @Александр says:

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

  45. Александр says:

    У меня получилось всего 12 (количество языков).

  46. gvahramyan says:

    А у меня 12

  47. gvahramyan says:

    А у меня 13!

  48. Александр says:

    Видимо задания разные. Я в третьем стиле

  49. gvahramyan says:

    а я на первом ☻задание те же, просто они немного меняют содержание

  50. Yurii says:

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

  51. Olya says:

    А кто поможет мне??

    Чтобы твой трек попал в ротацию на online радио для айтишников, реши следующую задачу:

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

  52. Александр says:

    Yurii,

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

  53. Данил says:

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

  54. Данил says:

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

  55. Olya says:

    @Данил

    как ты рассчитал и что получил??

  56. Кокшаров Иван says:

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

  57. странно says:

    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, а он все равно пишит неправильно

  58. Кокшаров Иван says:

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

  59. Yurii says:

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

  60. Dmitry says:

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

  61. Dmitry says:

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

  62. hamper says:

    Решали задачу 17? Кто нибудь может сформулировать по-человечески в чём состоит задание?

    Чтобы жюри международного конкурса исполнителей «Еврослух» больше не обвиняли в необъективном судействе, организаторы конкурса решили внедрить им в помощь автоматическую систему оценки хореографии исполнителей.

    Эта система автоматически фиксирует правильность исполнения танца по координатам исходя из попадания в свет софита в форме треугольника. При этом если участник конкурса попадает на границу освещения, то система не фиксирует ошибку.

    На вход система получает файл, где сначала в строчках находятся координаты вершин треугольника софита, а в последней строчке — координаты участника конкурса на сцене. Программа должна определить, сделал ли ошибку музыкант при попадании в треугольный свет софита.

    Необходимо вывести 0, если ошибки не было. Если ошибка была — необходимо вывести номера строк (номера начинаются с 1), соответствующей песни.

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

  63. Данил says:

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

  64. Валера says:

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

  65. Olga says:

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

  66. ValeryKonst says:

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

  67. Dmitry says:

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

  68. Александр says:

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

  69. Yurii says:

    Привет, кодеры. Помогите с 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). Подозреваю что с меткой что-то не то делаю. Позкажите как правильно использовать метку, куда именно возвращаться?

  70. hamper says:

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

    P.S. Помогите с 17-м вопросом!

  71. hamper says:

    @Yurii, насколько я помню, в задании 12 было сказано, что команда "<" извлекает из стека число, если оно !=0, на самом деле число извлекается из стека в любом случае.

    @Александр, спасибо за 17!

  72. @hamper says:

    Спасибо. А то условие так сформулировано что извлекать не нужно во втором случае

  73. egor says:

    В задаче про круглые софиты:

    Для расчётов считать размер штрафа за попадание в свет софита с ошибкой — 499 баллов

    Что с 499 делать?

  74. Yurii says:

    В 14-том задании даны координаты

    8298 1892 6763 7933

    595 7670

    2124 6914

    1382 6940 и т.д.

    первая строка это типа координаты реки? И как их делить?

  75. coder says:

    Что за хрень с инженерами?

    Уверен, что правильно назначение найдено

    А вот  их сраный формат вывода… Спрашивается нахрена

    Че-т наворотили они там, не заходит ни в какую

    Че делать?

  76. Александр says:

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

  77. Александр says:

    Кто-нибудь подскажет как именно нужно отвечать в 19-м?

    Типа так:

    Бажен,Бажена,Безсон,Белослав…

    или ещё и пробел?

    У меня у одного все кто в файле более раза встречаются кроме одного?

  78. Yurii says:

    Кто-то может растолковать что в 14 том делать, как их сортировать?

    Напомню о чем (На входе программы определение речки, которая задана координатами своего начала и конца, а также набор координат точек, для которых надо определить, к территории панка или к зоне инди-рока они принадлежат. Ответ выдать в виде строчки вида ИПИПИИИП…, где последовательность соответствует порядку точек в исходном файле.)

    Спасибо заранее.

  79. Александр says:

    К 19-му вопрос снят.

    Считал всех кто встречался несколько раз, а не тех кто больше всех.

  80. Nekrolm says:

    Кто-нибудь может объяснить условие девятой задачи?

    (На реалити-шоу для музыкальных исполнителей 2 судьи оценивают ежедневно работу и выступления каждого участника, при этом они фиксируют свои оценки в специальный блокнот вручную…)

    Как понять, когда была допущена ошибка, в каком формате нужен ответ?

  81. Александр says:

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

  82. Yurii says:

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

  83. Nekrolm says:

    @Yurii,

    [сумма первого столбца]/[кол-во строк] [cумма второго] pluto  – дает неверный ответ.

    Как вот с этим быть?

    "Проблема в том, что в записях, несмотря на тщательность заполнения, имеются ошибки: значения штрафных баллов за ошибки и общая оценка перепутаны местами. Это необходимо учитывать в логике программы."

  84. Yurii says:

    @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");

  85. Nekrolm says:

    Все, нашел, что не так:

    округление должно было быть вверх.

    _______________________________

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

  86. Александр says:

    Кто решил 20-ю? Подскажите, какой формат ответа? Тот что предложен не принимает 🙁

  87. Stanislav says:

    Да, в 20-ой совсем непонятно. У кого-нибудь прошло?

    Пример ответа странный, там не все инженеры, и минимальное количество часов неправильное, меньше суммы.

  88. Александр says:

    Задача 20. Думаю пример ответа просто не полный. Судя по постановке задачи нужно использовать каждого звуко-инженера.

    Так кто-нибудь решил?

    Может кто-то знает как связаться с теми кто устроил всё это?

    Там явно есть ошибка, хотелось бы, чтобы проверили и заверили что всё нормально.

  89. Vitaliy says:

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

  90. Vitaliy says:

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

  91. Alex says:

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

  92. Korhog says:

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

  93. Alex says:

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

  94. Korhog says:

    Alex, а что значит к правильному виду? У меня в каждой строке сперва отрицательное потом положительное число и логин.

    Я сперва подумал, что не может быть количество вычитаемых баллов быть больше чем количество баллов всего. Но… Не знаю. Уф.. Это задание похоже на задание среднестатистического заказчика.

  95. Alex says:

    Korhog, по условию они могут быть перепутаны местами, поэтому среднее нужно искать только среди отрицательных, а сумму – положительных.

  96. Korhog says:

    Alex, ну вот у меня ничего не перепутано. Все строго, слева отрицательные, справа положительные и логин. Только один.

    хохмы ради проверил результат в Excel. то же самое.

  97. Alex says:

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

  98. Korhog says:

    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);

  99. Korhog says:

    Ой лоооол… Надо Truncate а не Round делать. Пойду напьюсь от своей тупости

  100. TRMT says:

    Я с музами никак не прохожу дальше. У меня получаются результаты:

    4.data – 100,

    16.data – 161,

    17.data – 168,

    19.data – 168

    Но они почему-то не подходят…

  101. Олег says:

    Что надо в 13й задаче про лестницу сделать?

  102. OZone- says:

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

  103. Yurii says:

    Ребят, кто помнит какой результат в 17-м задании. У меня получилось 4 числа, и не подходят.

    Много их должно быть, кто помнит?

  104. hamper says:

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

  105. Александр says:

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

  106. Александр says:

    Уважаемые организаторы, откликнитесь, пожалуйста!

    В 20-й задаче  или ошибка у Вас или у нас. Если на Вашей стороне все ОК, то большая просьба скорректировать условия задачи. Ну, уже очень получается не однозначная формулировка.

    Вроде бы элементарная задача. Ответ найден, но возможно из-за формата ответа он не принимается.

  107. Yurii says:

    @Александр

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

  108. Александр says:

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

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

  110. Алексадр says:

    @Dmitry Soshnikov, спасибо большое. Ждем изменений 🙂

  111. Максим says:

    Кто-нибудь объясните подробней условие 7-й задачи, пожалуйста!

    Как я понял нужно найти длину максимальной последовательности для меня и для звезды. И в процентах найти сколько моя длина составляет от суммы этих длин Проверил на своём, простом примере, всё работает. Но ответ не принимается, видимо я не понял условия.

  112. Oleg says:

    ребят пожалуйста помогите,никак не могу решить,какой ответ вы получили!!!!!!!!!!!!

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

  113. Artem says:

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

  114. Korhog says:

    Artem, все буквы маленькие?

  115. ReSY says:

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

  116. Nekrolm says:

    Мда, 20-я задача все хорошеет…

    Адекватно поставленную задачу с неадекватным форматом заменили на неадекватно поставленную с неадекватным форматом – явное улучшение!

  117. Александр says:

    @Nekrolm, не соглашусь. Да, есть спорные вопросы по тому, что написать в ответе.

    Но там всё просто.

    1. Получаешь самые часто встречающиеся слова.

    2. Их разбиваешь на две группы – первые и вторые слова.

    3. Первые сортируешь в порядке уменьшения частоты (если одинаковые, то первая идет та, что встретилась раньше по тексту)

    4. Для каждого первого слова составляешь свой частотный словарь по паре 1 + 2. Та пара, что встречается чаще остальных и идет в результирующий ответ.

    5. В ответе может получится так, что второе слово встретится несколько раз.

  118. Илья says:

    Какой должен быть формат ответа в 9 задаче? "-92 516807 pluto" не подходит.

    Там нужно посчитать среднее, сумму для каждого из судей или по всем судьям вместе?

  119. ya says:

    2. Их разбиваешь на две группы – первые и вторые слова.

    ???

    А как понять какие слова первые, а какие вторые?

  120. dr.psych says:

    @ya, в примере же говорится: находим например " ok google", ok это первое слово, а google второе

  121. KudasovD says:

    Тоже повис на 20-й задаче(

    Можно подробнее? Нахожу слова: например "ani" "google" "bing" "bro" и т.д.

    Я так понял, что нужно найти все пары в которых встречаются эти слова либо первыми либо вторыми, например: "bing contana" или "contana bing" и из всего месива этих пар выбрать те, которые встречаются чаще всех!

    Если все правильно, то что значит чаще всех? Есть диапазоны пар примерно (2-3) (30-70) и (200-и выше). Отбирать только те, что выше 200? или 30-40 – это уже очень часто?

    Ну а дальше суть очевидна и на первый взгляд не представляет сложностей.

  122. ya says:

    @dr.psych, ну хорошо, "например, «hey сortana» или “ok google” – будем называть их значимыми парами"

    И что, всего 2 первых слова и 2 вторых?

    В общем как отличить значимое слово от незначимого?

  123. Тугрик says:

    Всем привет, подскажите по 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);

    что в этих условиях не правильно?

  124. Максим says:

    Помогите с 7-й задачей! что именно там нужно найти?

  125. KudasovD says:

    @Максим

    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();

    А вообще условие присылай. Давно это было)

  126. KudasovD says:

    @Максим

    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();

    А вообще условие дублируйте пжалста. А то как-то уже не помнится

  127. Korhog says:

    По 20-й задачи, нужно проводить статистический анализ. Главное что 2 это точно не ОЧЕНЬ часто.

    Нужна переменная означающая порог ВАЖНОСТИ.

    KudasovD, ты находишь не слова, а все последовательные пары слов, [0;1][1;2][2;3] и т. д.

    из них берешь только важные. и понеслась

  128. Максим says:

    @KudasovD

    Выводимый ответ не принимается на сайте(

    Условие:

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

    Давай узнаем, чье же имя окажется первым — определи на сколько процентов песня твоя.

    файл:

    11.data

    Но спасибо за наводку) я немного не так делал) буду думать в этом направлении)

  129. Максим says:

    @KudasovD

    Всё, разобрался) спасибо)

  130. KudasovD says:

    @Максим Обращайся если что

  131. Антон says:

    6-я задача. Билет на твой первый концерт в Лужниках содержит 6 цифр от 0 до 6. Сколько среди всех билетов «счастливых», т.е. таких, для которых сумма первых 3 цифр равна сумме последних 3 цифр?

    Если я правильно понимаю, то номер первого билета 000001, а номер последнего 666666.

    Исходя из этого ответ 37926, однако не подходит.

    Где я не прав?

  132. Антон says:

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

  133. Антон says:

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

  134. KudasovD says:

    @Антон Помню я тоже на этом попался)

  135. Olga says:

    @Антон помоги пожайлуста,у меня тоже проблемы с етой задачей???????

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

  136. KudasovD says:

    @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();

  137. KudasovD says:

    Всем спасибо за содействие! Я стал могучим титаном панк-кода. Если нужна будет помощь пишите. Буду помогать по мере возможностей!

  138. KudasovD says:

    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 Этот код отрабатывает быстрее, но при таких объемах итераций это не существенно. Хотя на следующем задании про билеты, дай бог памяти, через одно, этот способ более удобный (исключительно на мой взгляд). Это тебе к размышлению)

    Удачи

  139. AOg says:

    третья задача про муз :

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

    Узнай, сколько всего языков существует у муз.

    Ход решения : Для каждой пары чисел проверяю их вхождения в динамически расширяемый список языков и муз, говорящих на нем, если нет, добавляю новый язык в список и пару муз, которые на нем говорят…

    Для 16.data ответ получился 161. Я что-то делаю неправильно или задачу не понял???

  140. KudasovD says:

    @AOg Вся загвоздка в том, что при нахождении пары нужно обнулять итератор. Могут быть ситуации (и они обязательно встречаются) типа такой:

    проверяя, к примеру, 548 пару ты засек, что первая муза говорит на втором языке, дальше все сделано правильно, т.е. ты добавляешь пару в список муз говорящих на втором языке, НО теперь нужно обнулить итератор цикла обхода, т.к. вторая муза встретилась первый раз, о по ней уже могли быть совпадения ранее. Если в цифрах:

    100 105

    110 120

    105 110

    120 130

    У тебя скорее всего считает 1 и 3 пары за один язык, а 2 и 4 за второй, а если сбросить итератор (на данном примере просто включить мозги))), то выходит, что все они говорят на одном языке.

    Вот как-то так. Если учтешь этот момент, то все будет збс.

    P.S. Я бы еще посоветовал добавлять не пару а только ту музу, которая не встречалась ранее, т.о. спасешься от адского дубляжа муз и будет немного проще отлавливать ошибки визуально.

    Дерзай!

  141. KudasovD says:

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

  142. Антон says:

    То была 5-я задача, а теперь точно 6-я – про обобщенно-счастливые билеты.

    Номер билета из 8 знаков от 0 до 6.

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

    Насколько я понимаю, номера билетов можно разбить так:

    0 0000000

    00 000000

    000 00000

    0000 0000

    00000 000

    000000 00

    0000000 0

    если "счастливый" номер выпадает в первой категории, то я его не учитываю во всех остальных.

    если считать каждую категорию по отдельности, то получится количество "счастливых" комбинаций, а  не билетов. Т.е. билет № 10000001 является  "счастливым" при всех способах разбиения,

    Так или иначе у меня получается число 244279, но оно неверно.

  143. Антон says:

    Вот только написал, тут же нашел ошибку… 823543, однако

  144. KrH.EF says:

    Помогите с 9 задачей, я что-то не понимаю.

    Для тех у кого файл для решения называется 47.txt

    Условие такое:

    На реалити-шоу для музыкальных исполнителей 2 судьи оценивают ежедневно работу и выступления каждого участника, при этом они фиксируют свои оценки в специальный блокнот вручную. Они заносят три значения: количество баллов, которое необходимо снять с участника за ошибки, общую оценку работы за день и свой логин. Чтобы подвести итоги очередного этапа конкурса, судьи сводят все свои наблюдения в один отчет, но в их блокнотах очень много записей, поэтому они хотели бы иметь приложение, которое будет автоматически записывать результаты.

    Проблема в том, что в записях, несмотря на тщательность заполнения, имеются ошибки: значения штрафных баллов за ошибки и общая оценка перепутаны местами. Это необходимо учитывать в логике программы.

    На входе программы текстовый файл с тремя столбиками, значение количества штрафных баллов всегда отрицательное (не 0). Результат работы – целое среднее значение штрафных баллов, сумма оценок и логин допустившего наибольшее количество ошибок судьи

    При это неясно:

    1. Результат через пробел или с новой строки писать, (я и так и так пробовал.)

    2. Целое среднее значение штрафных баллов, сумма оценок – это судьи который допустил больше всех ошибок или всех?

    3. Ошибкой считается, где модуль значение в первом столбце больше чем во втором? (Я их переставляю, присваиваю знаки и записываю, что это ошибка.)

    4. По поводу ошибок есть риторический вопрос, как считать кто допустил больше ошибок, там 2 судьи, но второй встречается всего 1 раз и совершает ошибку, так кто совершил больше ошибок? 🙂 Арифметически один, а в процентном соотношении второй 100% ошибок совершил.

    короче, по мне это полная хрень, а не задача. Но может быть я такой неправильный.

  145. KrH.EF says:

    Сам отвечу:

    В общем НЕ надо ничего исправлять, нужно записать через пробел среднее по 1-ой колонке, сумму по 2 колонке и имя судьи, допустившего большее количество ошибок. Ответ писать не буду 🙂

    Спасибо за помощь Игорю Фролову!

  146. FeaN0r says:

    Никак не могу понять, что именно нужно найти в 7 задании.

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

    Давай узнаем, чье же имя окажется первым — определи на сколько процентов песня твоя.

    Нужно сравнить максимальное количество элементов в  подпоследовательности? Или найти соотношение количества подпоследовательностей? Или просто найти сумму элементов?

  147. Антон says:

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

    Своя последовательность прерывается только последовательностью звезды и наоборот.

    Ну а далее myPer / ((myPer + hisPer) * 100)

  148. Korhog says:

    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;

    }

    для партий приглашенной звезды то де самое, только символы в выражениях другие

  149. alex_makhnov says:

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

    1. Как определить "значимые пары"? Это любые пары, которые встречаются более одного раза?

    например в тексте "aaa bbb aaa bbb aaa bbb ccc" значимые пары будут "aaa bbb" и "bbb aaa" или есть еще какие нюансы?

    2. Дальше работаем только со значимыми парами (для определение частот и т.д.)?

    Первые слова упорядочиваем по частоте. При равной частоте первым берем то, которое первым встречается?

    3. Для каждого первого слова находим все вторые и упорядочиваем по частоте по тому же принципу?

    Если у вторых одинаковая частота что делать? Брать первое встречающиеся?

    4. В каком формате нужен ответ?

    первое+второе слова без пробелов и т.д.?

    т.е. в ответе должна быть строка без пробелов? или разделять?

  150. Korhog says:

    alex_makhnov,

    1) нет, два раза это не ОЧЕНЬ часто))

    2) Да, Да

    3) Да, Да

    4) В том же что и на входе пары через пробел, слова пары тоже через пробел

  151. mkryuk says:

    По поводу 20го задания, если два раза не ОЧЕНЬ часто, то сколько это ОЧЕНЬ часто?

  152. Korhog says:

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

  153. alex_makhnov says:

    Korhog Еще уточню про значимые пары.

    Пусть будет текст "aaa bbb aaa bbb aaa bbb ccc"  самая встречающаяся здесь пара "aaa bbb", вторая "bbb aaa", но если из текста выбросить все первые пары, то вторых не получится.

    Либо можно просто считать сначала 1+2 слово, потом 2+3 и т.д…

    Какой подход был у авторов задания?

  154. Korhog says:

    alex_makhnov, вначале ты получаешь все значимые пары, например списком.

    потом для этого списка составляешь список левых слов, по убыванию частоты появления (в списке) ,

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

    таким образом ты получаешь новые пары.

  155. Korhog says:

    Вообще очень советую для решения 20-ой задачи использовать

    List<T> и Linq

  156. Korhog says:

    ну это конечно для C#

  157. mkryuk says:

    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

    Какой из ответов верный?

  158. alex_makhnov says:

    Korhog, слушай может эксперимент проведем?

    Ты выложишь свои исходные данные, я прогоню их через свою программу и пришлю ответ.

    А ты скажешь что не так.

  159. RedGremlin says:

    Для 105-ти фанаток ))

    3003879884000808056955836960556471249224016966041396053178268434925629255305292092574957045907800667610489997041311193494427424743926213378048000000000000000000000000

  160. Korhog says:

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

  161. sasha says:

    Ребята, помогите пожалуйста с 4ой задачей.

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

    Ни у кого не возникало проблем с кодировкой?

  162. Korhog says:

    sasha, если пишешь на шарпе, попробуй

    File.ReadAllLines(file, Encoding.Default);

  163. hamper says:

    sasha, можно открыть Блокнотом и сохранить в нужной кодировке 🙂

  164. Александр says:

    В 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. В ответе может получится так, что второе слово встретится несколько раз.

    }

  165. Alex says:

    Привет! помогите с задачей №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

    не принимает, в чем фишка?

  166. Илья says:

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

  167. Basterrior says:

    В 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);

  168. Антон says:

    Bardiamist, у меня сработало, когда я сделал так:

    вместо   return (((y – 4947) / 3676) + (343 / 4659)) * 4659

     return (((y – 4947) / 3676) + 0,0736209487014381) * 4659

  169. Bardiamist says:

    Антон, ага! Сделал вот так:

    return (((y – 4947) / 3676) + ((double)343 / 4659)) * 4659;

    Благодарю! 🙂

  170. Антон says:

    Задачу 15 решил в Excel )).

    Задача 16 – пока не понятно как такие задачи вообще решать…

    Может кто подскажет направление…

  171. Александр says:

    Помогите с решением задачи №2, или сбросьте пример кода, тк разобраться не могу

    адекватные текст получаю но не принимает ответ. Файл – 66-й

    буду благодарен

    пишите на – alexandr.cebotari@live.ru

  172. Антон says:

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

  173. Владимир says:

    Было бы хорошо организовать на сайте место, куда можно было бы выкладывать код с изящным решением. Я думаю многим захочется сравнить свой код с "ЭТАЛОНОМ".

    Задача 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();

           }

       }

    }

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

  175. Alex says:

    Антон, файл создается для результата. Ниже мой код

    Не знаю, что делать…

    Или же от браузера зависит

    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);

                       }

                   }

               }

    Буду благодарен если поможете.

  176. 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);

  177. Владимир says:

    Просьба поделиться кто как решил пятую (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;

           }

       }

    }

  178. Думаю самый компактный код такой:

               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();

  179. Аналогичный метод очень хорошо подходит и для решения задачи про обобщенно-счастливый билет.

    Разница только в том, что там необходимо больше циклов и проверок сумм левой и правой части.

  180. Claifer says:

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

  181. Claifer123 says:

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

  182. Claifer ошибки учтены? (значения в колонках могут быть перепутаны местами)

  183. Владимир says:

    Помогите, плз! Кто-нибудь знает почему так?

    Код:

    Console.WriteLine(200 / (200 + 50) * 100); // 0

    Console.WriteLine(200 * 100 / (200 + 50)); // 80

    Console.WriteLine(200 / ((200 + 50) / 100)); // 100

    Console.ReadLine();

  184. Claifer says:

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

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

  186. Владимир,

    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

  187. Владимир says:

    Антон, спасибо, что откликнулись. Но ни как не могу понять (точнее "принять"), что нельзя получить арифметически верное число (decimal) при расчете которого используются только целочисленные переменные (int).

    Код:

    int intNum = 1;

    decimal Number = 1 / (1 + intNum ) ;  // 0

    Неужели всегда необходимо использовать неявное приведение типов в формулах, где из целых я хочу получить вещественный результат (например процент)?

  188. Влад says:

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

  189. Влад- Упрощенно так:

    for (int i = 0; i <10; 1++

    {

        if (a == b) mark = i;

        if (d = e ) i = mark;

    }

  190. Влад says:

    Так вроде так и делаю, всё равное ничего не работает. Я недавно программирую, может где глупую ошибку допустил. Вот мой код для 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();

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

  192. еще было бы неплохо использовать конструкцию

    if ()

    else if ()

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

    Также можно

    switch ()

    case

  193. Влад says:

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

  194. Claifer says:

    Всё никак не могу решить 9 задачу, может кто прогнать эти данные в своём коде и отписать какой ответ выдаёт? У меня как ни старался -105(-104) 151008 pluto

    http://pastebin.com/Qnw5FqWZ

  195. mkryuk says:

    Claifer

    Правильный ответ: 104 151008 saturn

  196. Nublin says:

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

  197. 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;

           }

       }

    }

  198. jakkuz says:

    Есть тут кто-то, кто решил последнюю задачу про "послать ответ инопланетянам"?

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

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

  200. Виктор says:

    Задание 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(' ');

                   }

               }

  201. Владимир:

    Еще раз внимательно прочтите:

    • ! — вывести на печать букву, номер которой лежит на верхушке стека (a — 0, b — 1 и т.д.)

  202. Владимир, и еще неверно обрабатываются символы "*", "+", а также неверно понято условие про символ "#"

  203. Прошу прощения, предыдущие два обращения были к Виктору.

    Виктор, как дела с 11-й задачей?

  204. Алексей Перфильев says:

    В 11-ом задании

    • Z — положить ноль на верхушку стека

    • + – сложить два числа на верхушке стека

    • * – умножить два числа на верхушке стека

    • ! — вывести на печать букву, номер которой лежит на верхушке стека (a — 0, b — 1 и т.д.)

    • # – увеличить верхушку стека на 1

    • % — ничего не делать

    • ~ – напечатать пробел

    Если у меня в стеке лежит например 2 5, то после команды + стек выглядит 10 2 5, или 10 5. И если у меня на верхушке стека число больше 25 то какую букву печатать, если z это 25. Подскажите пожалуйста уже вроде все комбинации перепробывал.

  205. Алексей Перфильев says:

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

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

  207. Алексей Перфильев says:

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

  208. Алексей Перфильев says:

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

  209. Алексей Перфильев, все-таки через пробел… Нашел ошибку – в координаты точки записывал одно и тоже число…

  210. zadimka says:

    Здравствуйте. Подскажите пожалуйста с 14 задачей. Уже третий день бьюсь и не могу придумать формулу решения задачи. Напоминаю условие задачи:Разреши многолетний музыкальный спор!

    Кого больше на мировом музыкальном фестивале в Софтберри: поклонников инди-рока или панк-рока? Посчитать не просто, ведь гости мероприятия постоянно перемещаются от одной сцены к другой, и даже река, которая разделяет музыкальные зоны, не становится препятствием. Поток фанатов в оба направления по мосту через реку не прекращается ни на минуту.

    Чтобы решить многолетний спор, на 12 часов ночи, 1 июля, в главный день фестиваля, была сделана спутниковая фотография обеих концертных зон, и было решено всех, кто справа от реки отнести к поклонникам инди-рока, а слева — к фанам панка. Для проведения подсчётов наняли программиста.

    На входе программы определение речки, которая задана координатами своего начала и конца, а также набор координат точек, для которых надо определить, к территории панка или к зоне инди-рока они принадлежат. Ответ выдать в виде строчки вида ИПИПИИИП…, где последовательность соответствует порядку точек в исходном файле.

  211. zadimka, поищи уравнение прямой на плоскости.

  212. zadimka says:

    В математике разбираюсь не очень. Вы не могли бы показать на примере?

  213. Алексей Перфильев says:

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

  214. zadimka says:

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

  215. 20-я задача.

    Подскажите, что я делаю не так…

    1. собираю пары, затем считаю количество их повторов. таким образом у меня есть массив всех пар:

    pairs(LeftWord, RightWord, Count).

    2. Копирую пары и их частоты, для которых Count больше какого-либо значения (например 15) в другой массив значимых пар. В этом массиве таких пар 74.

    3. Беру левые части пар и суммирую для них значения частот пар, в которых они участвуют. Сортирую по убыванию. таких получилось 10, но два из них я удаляю, т.к. они повторяются меньше 20 раз, а остальные более 250.

    4. Для каждой левой части беру все правые части и считаю сумму частот значимых пар, в которых они участвуют. Для каждого левого получается от 1 до 9 правых, в основном с одинаковой частотой, поэтому беру первый из списка. Таким образом пара сформирована и я формирую результирующую строку.

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

    Результаты не приняты.

  216. Максим says:

    Задание №16

    Скоро воплотится в жизнь твоя мечта — ты станешь хэдлайнером музыкально фестиваля вселенского масштаба! И тебе необходимо просто фееричное появление! Только вот незадача: чтобы спланировать выступление тебе нужно знать, где организаторы разместят сцену.

    Уже сейчас мы знаем, что площадка музыкального фестиваля охватит территорию размером 100×100 км. Здесь построят несколько палаточных городков и парковок для гостей и участников фестиваля.

    Сейчас у тебя уже есть карта фестиваля — в текстовом файле, где 0 означает пустое место, 1 занятое. Нужно найти максимальную площадь, которую может занять прямоугольная сцена. Следует учитывать, что сцена не должна соприкасаться ни с какими другими постройками и парковками даже по диагонали.

    Помогите кто а то даже не знаю как к ней подступить!

  217. Tori says:

    github.com/…/CodeStars

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

  218. Stanislav Ushakov says:

    Добрый день. Не подскажите, а результаты конкурса огласят?

    events.techdays.ru/files.axd

  219. Василий никифоров says:

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

  220. Владимир says:

    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);

                   }

                }

               }

Skip to main content