Разыскиваются звезды кода
На улице нарядили ёлки, и это значит, что очень скоро нас ждут новогодние праздники и немного свободного времени! Для активных молодых людей это значит, что можно вложить это время “в себя”, научиться чему-то новому, чтобы стать лучше, умнее и показать всему миру свою крутизну. Специально для вас мы приготовили проект CodeStars!
В этом проекте ты сможешь показать свои навыки, решив дюжину задачек по программированию. Заодно это хороший повод узнать что-то новое и чему-то научиться! Для решения задач мы рекомендуем использовать Visual Studio (доступную студентам по программе DreamSpark, либо бесплатную Community Edition) и язык C# – это позволяет решить все задачи достаточно просто.
Задачи расположены в порядке увеличения сложности, но решить первые – очень просто! Разберем решение простейшей задачи:
Музыкальная группа “Кнопкодавы” любит использовать в своих песнях много слов с буквами Z – настолько много, что в газетах написали, что это самая популярная буква в их песнях! Нам нужно проверить, действительно ли это так. Прилагаемый файл содержит тексты песен этой группы – нам необходимо вывести 5 самых популярных букв, используемых в песнях, в порядке убывания популярности.
Для решения этой задачи используем Visual Studio, в которой создадим консольное приложение на C#. Во всех задачах будет проще всего использовать именно консольные приложения.
В консольном приложении будет всего один главный файл проекта Program.cs, и в нем – одна главная выполняемая функция Main, внутрь которой нужно будет вписать решение:
Для начала считаем содержимое файла в одну строку. Здесь мы предполагаем, что составители задачи поступили гуманно и не дали нам слишком длинный файл, который не может поместиться в строку. Правильнее, конечно, было бы считывать файл посимвольно, но в данном случае мы слегка упрощаем:
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(), чтобы экран с консолью не исчезал сразу после выполнения программы. Запускаем нашу программу и получаем ответ:
Получившийся ответ вводим на сайте CodeStars – в виде строчки, из строчных или прописных букв (система должна понимать несколько возможных вариантов правильного ответа).
Если вы захотите посмотреть полный исходный код решения – оно доступно на GitHub. Я буду очень рад, если кто-нибудь улучшит его – принимаются pull requests!
Задачки, приведенные на CodeStars, хорошо подходят для обучения основам алгоритмики. Если вы начинаете осваивать программирование "с нуля", то для ознакомления с языком C# рекомендую видеокурс "Увлекательное программирование на C#", а для более детального погружения в синтаксис - более подробный курс в виде текстового пособия. А дальше - включайте голову!
Удачной прокачки ваших программерских скиллов под Новый год!
Comments
Anonymous
December 22, 2014
самый популярный символ у них пробелAnonymous
January 18, 2015
Первая задача. 105 героинь. Все перестановки, насколько я помню, да и гугл меня поддерживает - это факториал от числа. То есть 105! Далее умножить на 10 секунд (каждый просмотр) и поделить на 60 (секунды в часы). То есть можно сразу делить на 6. И будет это равно 18023279304004848341735021763338827495344101796248376319069610609553775531831752 55544974227544680400566293998224786716096656454846355728026828800000000000000000
- Для вычисления написана програмка - github.com/.../CodeStars01. Но вот почему то проверяльщик ответ не считает верным. Это у меня косяк или в консерватории?
Anonymous
January 18, 2015
@Alexandr Zhuravlev: 60 - это секунды в минуты.Anonymous
January 18, 2015
@Dmitry Soshnikov Ступил да. Только деление 360 вместо 6 тоже не прокатывает. Вот число 30038798840008080569558369605564712492240169660413960531782684349256292553052920 92574957045907800667610489997041311193494427424743926213378048000000000000000000 000000Anonymous
January 18, 2015
Все понял. В задании 105 на 104 поменяли. Число другое.Anonymous
January 18, 2015
Со второй задачей снова тупик. Где нужно расшифровать песню по Yo и Nice. Осмысленный текст я получил - это слова из песни Aerosmith - I miss you, Baby. Вот только не принимает проверяльщик ответ снова. github.com/.../CodeStars02Anonymous
January 19, 2015
@AleZhu: пока повременю разбираться, вдруг ошибка такая же простая, как в первом случае... У нас много ребят проходят эти задачи, так что глобальные проблемы маловероятны...Anonymous
January 21, 2015
емм.. а как вообще с такими большими числами работать? что ето за тип?Anonymous
January 21, 2015
@Ihor - посмотрите выше в исходниках у @AleZhu, как используется BigIntegerAnonymous
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 thingAnonymous
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 makingAnonymous
January 30, 2015
@gvahramyan - тот текст, что вы тут написали - не правильный. @Dmitry - аккуратнее, там есть хитрые пробелы местами... Прислушайтесь к совету @dubtar - кстати, за совет большое спасибо!Anonymous
January 30, 2015
@Dmitry Даже если вручную выставлять все пробелы, не принимает текст песни Aerosmith. И если там не должно быть по несколько пробелов м/у словами, то проблема в задании.Anonymous
January 31, 2015
С музами вообще косяки. Всё чётко разложил муз по массивам. Даже в сумме их чётко косарь, но ответы правильные не принимет. Проверьте там для 43.dataAnonymous
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 hearAnonymous
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" - буква wAnonymous
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 правильный. Возможно Вы копируете сразу из командной строки и там есть переносы. попробуйте просто число: 28608379847626743399579399624347345230704923486108533839793032713577421479098019929285305199121911120099904733726773271375499283275487746457600000000000000000000000Anonymous
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
А у меня 12Anonymous
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 секунд, а не 1Anonymous
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 removedAnonymous
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 plutoAnonymous
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. Та пара, что встречается чаще остальных и идет в результирующий ответ.
- В ответе может получится так, что второе слово встретится несколько раз.
Anonymous
February 10, 2015
Какой должен быть формат ответа в 9 задаче? "-92 516807 pluto" не подходит. Там нужно посчитать среднее, сумму для каждого из судей или по всем судьям вместе?Anonymous
February 11, 2015
- Их разбиваешь на две группы - первые и вторые слова. ??? А как понять какие слова первые, а какие вторые?
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 removedAnonymous
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 removedAnonymous
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-е задание помогите разобраться что требуется, и правильно ли я понимаю задание.
- Как определить "значимые пары"? Это любые пары, которые встречаются более одного раза? например в тексте "aaa bbb aaa bbb aaa bbb ccc" значимые пары будут "aaa bbb" и "bbb aaa" или есть еще какие нюансы?
- Дальше работаем только со значимыми парами (для определение частот и т.д.)? Первые слова упорядочиваем по частоте. При равной частоте первым берем то, которое первым встречается?
- Для каждого первого слова находим все вторые и упорядочиваем по частоте по тому же принципу? Если у вторых одинаковая частота что делать? Брать первое встречающиеся?
- В каком формате нужен ответ? первое+второе слова без пробелов и т.д.? т.е. в ответе должна быть строка без пробелов? или разделять?
- Anonymous
February 17, 2015
alex_makhnov,
- нет, два раза это не ОЧЕНЬ часто))
- Да, Да
- Да, Да
- В том же что и на входе пары через пробел, слова пары тоже через пробел
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> и LinqAnonymous
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-ти фанаток )) 3003879884000808056955836960556471249224016966041396053178268434925629255305292092574957045907800667610489997041311193494427424743926213378048000000000000000000000000Anonymous
February 18, 2015
alex_makhnov, напиши мыло, куда скинуть, а то многабукафAnonymous
February 18, 2015
Korhog, alex_makhnov@mail.ruAnonymous
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. Та пара, что встречается чаще остальных и идет в результирующий ответ.
- В ответе может получится так, что второе слово встретится несколько раз. }
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) * 4659Anonymous
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.ruAnonymous
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
Владимир,
- Console.WriteLine(200 / (200 + 50) * 100) - получается 0, потому что компилятор в этом случае работает с типом int32, целое от деления 200/250 = 0, вот и результат. Если же немного переписать - Console.WriteLine(200.0 / (200 + 50) * 100), то результат равен 80.
- Console.WriteLine(200 * 100 / (200 + 50)) - тут все понятно и правильно
- 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 () caseAnonymous
February 28, 2015
Да, сегодня меня осенило, что ошибся в синтаксисе. Испытал радость и разочарование одновременно. Спасибо за содействие, буду продолжать, ещё 8 заданий впереди.Anonymous
March 02, 2015
Всё никак не могу решить 9 задачу, может кто прогнать эти данные в своём коде и отписать какой ответ выдаёт? У меня как ни старался -105(-104) 151008 pluto http://pastebin.com/Qnw5FqWZAnonymous
March 03, 2015
Claifer Правильный ответ: 104 151008 saturnAnonymous
March 03, 2015
да, только -104Anonymous
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 removedAnonymous
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 7Anonymous
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 1996Anonymous
March 25, 2015
Алексей Перфильев, все-таки через пробел... Нашел ошибку - в координаты точки записывал одно и тоже число...Anonymous
March 26, 2015
The comment has been removedAnonymous
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-я задача. Подскажите, что я делаю не так...
- собираю пары, затем считаю количество их повторов. таким образом у меня есть массив всех пар: pairs(LeftWord, RightWord, Count).
- Копирую пары и их частоты, для которых Count больше какого-либо значения (например 15) в другой массив значимых пар. В этом массиве таких пар 74.
- Беру левые части пар и суммирую для них значения частот пар, в которых они участвуют. Сортирую по убыванию. таких получилось 10, но два из них я удаляю, т.к. они повторяются меньше 20 раз, а остальные более 250.
- Для каждой левой части беру все правые части и считаю сумму частот значимых пар, в которых они участвуют. Для каждого левого получается от 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.axdAnonymous
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); } } }