Дата активности | Видеокурс | Прогресс | ||
---|---|---|---|---|
2017-09-04 | wpf | WPF Clocks | 100 % | |
2017-04-12 | game1 | Нано-игры | 70 % | |
2016-09-28 | task2 | Алгоритмика | 100 % | |
2016-09-18 | soft1 | Нанософт | 90 % | |
2016-09-18 | task4 | Графические циклы | 93 % | |
2016-09-12 | compiler | Компилятор | 100 % | |
2016-08-23 | soft0 | Демо софт | 100 % | |
2016-06-29 | task5 | Секундомер | 32 % | |
2016-06-29 | task3 | Комбинаторика | 5 % | |
2016-06-28 | task1 | Семантика | 100 % | |
2016-06-19 | lines | Шарики | 75 % | |
2016-06-08 | network | Сетевые технологии | 8 % | |
2016-06-07 | aspnet | Базовый ASP.ект | 17 % | |
2016-06-07 | game4 | Игры со Спрайтами | 19 % | |
2016-06-05 | game2 | Микроигры | 27 % | |
2016-06-04 | soft3 | Теория ООП | 16 % | |
2016-05-16 | game0 | Демо игры | 80 % | |
Итого: | 39 % |
Дата активности | Консольный раздел | Прогресс | ||
---|---|---|---|---|
2019-08-03 | task2 | Рекурсия | 25 % | |
2016-10-01 | solo | Java - Запуск | 100 % | |
2016-10-01 | solo | Java - Ввод данных | 17 % | |
2016-10-01 | solo | Java - Вывод данных | 72 % | |
2016-09-28 | task2 | Матрицы | 100 % | |
2016-09-26 | task2 | Строки | 100 % | |
2016-09-26 | task2 | Подпрограммы | 100 % | |
2016-09-24 | task2 | Простые массивы | 100 % | |
2016-09-23 | task2 | По цифрам | 100 % | |
2016-09-23 | task2 | Матрёшки | 100 % | |
2016-09-22 | task2 | Любимые циклы | 100 % | |
2016-09-22 | task2 | Математика | 100 % | |
2016-09-22 | task2 | Последовательность | 100 % | |
2016-09-21 | task2 | Вечность | 100 % | |
2016-09-21 | task2 | Узник цикла IF | 100 % | |
2016-09-21 | task2 | Точка и плоскость | 100 % | |
2016-09-21 | task2 | Обман цикла | 100 % | |
2016-09-20 | task2 | Пока-цикл | 100 % | |
2016-09-20 | task2 | For-to-чки | 100 % | |
2016-09-20 | task2 | Do-рацикл | 100 % | |
2016-09-19 | task2 | Типы данных | 100 % | |
2016-09-19 | task2 | Условный оператор | 100 % | |
2016-09-19 | task2 | Логика | 100 % | |
2016-09-10 | solo | HTML - тексты | 100 % | |
2016-09-10 | solo | Java - Циклы | 100 % | |
2016-09-09 | olimp | Олимпиада | 8 % | |
2016-09-09 | club | 6452 - Кирилл Шмойлов | 34 % | |
2016-09-09 | solo | HTML - таблицы | 100 % | |
2016-09-08 | club | 5649 - Максим Лапшинов | 13 % | |
2016-09-07 | solo | C# набор | 89 % | |
2016-08-24 | club | 7119 - Владимир Новопашин | 14 % | |
2016-08-23 | club | 24 - Муза Оля | 67 % | |
2016-08-23 | club | 4004 - Елена Вставская | 8 % | |
2016-07-31 | task1 | Лирика | 93 % | |
2016-06-28 | task1 | Календарь | 100 % | |
2016-06-21 | task1 | Целые задачи | 100 % | |
2016-06-20 | task1 | Цифры | 92 % | |
2016-06-16 | task1 | Геометрия | 100 % | |
2016-06-13 | task1 | Символы | 100 % | |
2016-06-13 | task1 | Формулы | 100 % | |
2016-05-31 | task1 | Строки | 100 % | |
2016-05-26 | task2 | Алгоритмика | 100 % | |
2016-05-13 | task1 | Целые числа | 100 % | |
2016-05-11 | task1 | Семантика | 100 % | |
Итого: | 78 % |
Обновить бы робота хотя бы до 7 версии языка, а то не умеет в паттерн матчинг - int.TryParse(Console.ReadLine(), out var number).
Да, сахар, но приятнее же =)
Доброго времени суток.
Не хочу спорить и не буду, просто оставлю это здесь, раз уж увидел и потратил время на проверку.
Я не знаю, что вы запускали и как у вас выделение памяти для десяти строковых переменных в куче (для строки в 10 цифр, для 1000 цифр - 1000 переменных) сработало быстрее создания трех (я не помню, но вроде компилятор оптимизирует цепочку Replace() и вообще сводит к созданию одной, не факт, так что будем считать, что на каждый вызов отдельная), но вы не правы - Replace быстрее при длине строки 4+ цифры.
Не говоря уже о том, что читаемый код всегда будет лучше быстрого кода (2018 год, код пишут для людей, а не для компилятора, тем более управляемый на C#), а цепочка реплейсов явно выглядит и читается проще чем цикл с ифами.
Я тестировал на этом (вашего кода для сравнения нет, но тут идет код из решения и вариант с Replace() как я его имел ввиду, полагаю у вас было что-то подобное):
--
string data = "1234567890";
// Для понимания проблемы создания лишних переменных в куче раскоментировать код.
// Результаты для 10 000 раз:
// Видео - решение: 31508 ms
// Replace - решение: 572 ms
// Результаты для 10 000 000 раз:
// Видео - решение: около 10 часов, мб больше из-за работы GC, стоит запускать только самым упертым, я не запускал =)
// Replace - решение: 56115 ms
//
//for (int i = 0; i < 100; i++)
//{
// data += "1234567890";
//}
Stopwatch timer = new Stopwatch();
timer.Start();
string s = "";
for (int i = 0; i < 10000000; i++)
{
for (int j = 0; j < data.Length; j++)
{
if (data[j] == 0) s += 1;
else if (data[j] == 1) s += 0;
else s += data[j];
}
s = "";
}
timer.Stop();
Console.WriteLine($"Видео-решение: {timer.ElapsedMilliseconds} ms");
timer.Restart();
for (int i = 0; i < 10000000; i++)
{
data = data.Replace('1', '*').Replace('0', '1').Replace('*', '0');
}
timer.Stop();
Console.WriteLine($"Replace-решение: {timer.ElapsedMilliseconds} ms");
Console.ReadLine();
--
Потому что это будет работать медленнее.
согласен с предыдущим оратором отлично все получилось удачи!
очередной попугай, который копипастит мои слова и думает, что его флуд никто не читает, удачи, я на своих проектах к таким сразу применяю санкции, так что радуйся, что я не в администрации.
1. Я Вас не знаю и "на ты" не переходил.
2. Вы автор решения задачи? Или адвокат автора и уполномочены выступать от его лица?
3. Ответить хоть на один мой вопрос у Вас духа не хватает или уровня развития?
4. Потрудитесь прочесть то, что я пишу, прежде чем отвечать, хотя бы половину.
твои комментарии не несут смысловой нагрузки, ты напоминаешь капризного ребёнка, который выронил сосю, а самому её достать лень, задача отличная. Судя по твоей "простыне плача", ты не понял смысла моих пары строк.
з.ы.
По поводу Электрона, ты его адвокат? он за себя сказать не может? где я ему нагрубил? вы задали тон общения в своих комментариях, что вы хотели получить в ответ? сюсимуси? А за курсы тут ты не единственный платишь, но то, что ты сделал на этом акцент, как раз и отвечает на твой вопрос по поводу "ляма на карту".
Прошу прощения, но я где-то указывал, что посмотрел решение до того, как решить самому? Вроде мой комментарий как раз говорит об обратном, как и финальный отзыв по всему курсу Алгоритмика. И да, я считаю, что полезно после выполнения задания сравнивать решение с другими вариантами и делать выводы.
Ваше "вам на карту ещё и лям кинули" считаю несколько странной реакцией. Ибо:
Во-первых, я заплатил за курс, в курсе есть возможность высказать мнение по каждой задаче (т.е. входит в пакет), я его выразил. И если я пишу подобный отзыв - я, прежде всего, делаю это для стимуляции повышения качества (прямо указал на ошибку в решении).
Во-вторых, какое отношение мое желание получения денег "на карту" (есть оно у меня или нет) имеет к комментарию, задаче, курсу и данному сайту в целом? А тем более - как оно касается Вас?
В-третьих, сами Вы не высказали никакого конструктива по данной задаче. Но нахамили мне и пользователю Электрон. Считаете это более полезным, чем мой комментарий?
Я очень надеюсь, что Вы не имеете отношения к администрации ресурса и пишите от себя лично, т.к. с этим сайтом у меня связаны приятные воспоминания и мне он действительно помог на начальных стадиях изучения C#.
Задача норм, а если вы посмотрели видео решение, вместо того, чтобы самим решить, то что вы хотели? чтобы вам на карту ещё и лям кинули?
А и да, работа со строками медленнее!!!
На 1:40 и далее послушай внимательно, всё верно в видео, никаких ошибок. Конечно вариантов решение одного и того же великое множество, но алгоритм верный.
при реализации задач ещё не раз прибегать будешь к одному и тому же алгоритму.
Что уж сразу никто, я догадался) Просто если бы было в этой последовательности, что то кроме цифр и точек, тогда так нельзя было бы сделать))
Виктор, спасибо за столь развёрнутый комментарий.
Твои замечания понятны и вполне уместны.
Впрочем, понять, чего ты лишаешься, отказываясь записывать видео,
можно только после того, как запишешь десяток финальных обзоров.
Очень важно всесторонне развиваться, но это - твой выбор.
Отчёт принимаю.
1 - научись говорить за себя, не нужно упоминать, других людей, они сами за себя скажут.
2 - я тоже начинал с х1,5, на данный момент уже смотрю все видео на х2,25 это нормально и реально субъективно.
3 - Запись видео каждый раз, это реклама твоей работы, практика записи, ведь ты каждый раз с нуля запускаешь студию, пишешь каждый раз один и тот же начальный код, тебя это не смущает? всё верно, это практика.
4 - За выполнение финального урока начисляют 200 байт, если ты состоишь в КФ. Так что это не плохой плюс к дополнительной практике по саморекламе.
5 - так как ты не состоишь в КФ, я точно не буду отменять твой отчёт как неверный, если автор курса или кто-то ещё посчитает обязательным видеть видео в этом отчёте, они выскажут своё мнение по этому поводу и нажмут кнопочку ПЛОХО!!!
Молодец, отлично поработал, не останавливайся на достигнутом.
с финалом Виктор
Выскажу своё личное мнение по поводу комментария.
Если на видео показать ну совсем нечего, то я считаю что видео прикладывать не обязательно даже к финальному уроку.
Если есть что показать, то можно снять ролик, даже без звука и показать всё что хочется.
Главное чтобы всё в удовольствие было! =)
Ничего не проверка - надо уметь признавать свои косяки!
Monkey see, monkey do?
Это не опечатка, а проверка на внимательность)))
Всё верно, есть такая опечатка, молодец!
Я тоже предпочитаю программно делать.
Молодец, я тоже реализовал программно, вместо копипаста, но знать, что есть несколько вариантов решения одного и того же всегда приятно.
Как и подозревал, все намного проще - увидел решение через в Geometry.Parse в другом отчете)
Вы играете в классическую мафию?
Понимаю тебя, у меня это увлечение с 89 года, когда написал первую игрушку. Поэтому знаю, сколько это требует времени и сил. Создавать своё намного интереснее. Ботов тоже делал по заказу для некоторых игр, пройденный этап. На этом проекте интересны идеи и их реализация, но ещё интереснее делать тоже самое но по своему. Со своими доработками и т.д. То как ты это видишь.
Есть некоторое увлечение ком.играми (и последние пару лет геймдевом). Как правило, оно влечет за собой определенную трату времени, как и любое увлечение. Тут каждому свое.
Зачем тогда вообще тратить время на соц. игрушки, только если на них обкатывать бота для последующей продажи его нуждающимся =)
Угу, когда нажимаешь кнопку "Плохо", она требует сначала написать сообщение автору работы. Я думал вы знаете, поэтому скопировал формулировку "кнопку [Плохо]" из предупреждающего окна, чтобы было понятно что комментарий вызван только требованием.
А кто-то по этому поводу вопросы задавал? Я не рассчитывал на "Хорошо", я рассчитывал на чей-нибудь совет.
Кто-то это должен был сделать
Именно это я и написал - "хорошо как учебная задача" и "полезно в любом случае" =)
Нажимаю кнопку [Плохо] потому что задача не выполнена, и я считаю что это явно не "хорошо".
Разве нужны еще какие-то объяснения для этого?)
Если уже есть опыт создания программ, то да.
Для начинающих лучше нарисовать схему.
Более того, даже для продолжающих
схема помогает структурировать
мысли, избежать ошибок и
быстрее получить
результат.
вот.
Поздравляю с еще одним пройденным курсом!
Серьезный поход у вас, молодец!
Молодец! отличные комментарии, надеюсь их учтут в ближайшем будущем, ведь этот курс один из первых для изучения по логике и не хотелось бы, чтобы из-за него портилось впечатление о проекте в целом
з.ы.
по поводу того, что задач на 200, а меньше, это видимо потому, что они добавляются постепенно и финальная планка 200 видимо пока не достигнута
Огромное спасибо за отзыв. Замечания действительно дельные.
Поздравляю с завершением курса!
Замечания совершенно справедливы!
С завершением алгоритмики.
Отличный отзыв, всё по делу.
Сделал решение через второй массив и прогон элементов массива через ряд if.
Ну и вывод в строку сделал через if с проверкой на последний элемент строки.
В видео более красивое решение)
При прочтении статьи в Wiki и вспоминании основ действий с матрицами из университетского курса услышал скрип шестеренок в голове)
Сделал проверку в одном цикле, ограничив условия для j сразу относительно обеих диагоналей:
(int j = n-1; j > n - 1 - i && j >= i; j--)
Tekashnik сделал еще лучше - сразу при заполнении массива проверять на максимум значения с нужным адресом)
А почему Replace() затруднительно?
Replace("0", "zero").Replace('1', '0').Replace("zero","1")
В место "zero" можно любой набор символов, которого не будет в строке.
Сделал без if, используя Replace() к первой подстроке.
А то, что Substring() можно использовать только с одним параметром забыл как-то, в итоге лишний код расчета длины оставшейся строки.
Ага, вот если на первую страницу добавить "сделайте секундомер, для этого
1. Зафиксируйте время начала создания программы
2. Создайте GUI приложение stopWatch.
3. Разместите на форме лейбл для отображения времени, текстовое поле и кнопочку.
4. Разместите таблицу... А затем сделайте тоже самое, но по инструкции. Сравните время. Что вы забыли предусмотреть?". Было бы забавнее. Кто хочет пробует сам, кто не хочет открывает инструкцию и делает.
На видео пояснений тоже нет, так что это специфика урока, а не проблема скриншотов. Переписать код и повторить не одно и то же. А если сделаешь по своему сам поймешь почему так или не так. Понравилось на одном сайте: в видео периодически вставляют вопросы, на которые надо ответить чтоб смотреть дальше. Сразу появляется мысль: надо внимательно слушать, чтоб не пропустить что-то важное, вместо того что "ерунда, не пойму, перемотаю и еще раз послушаю".
Переписал функцию на цифры - 100%
посмотрел видео, понял ошибку в решении со строками - нули вначале строки необходимо убирать.
Решил через строки - 60%.
Хотя результат тестов верный, но Шарп не принимает (вообще не понятно, почему тогда 3 из 5 тестов проходит, если строки не нравятся).
Комментарий, что надо решать через числа прочел, но чем плохо решение через строки?
Оно работает на 100%, оно не ограничено длиной числа, оно даже не ограничено числами.
Его минус в том, что оно отличается от решения цифрами?
Сделал удаление лишних символов через Trim() в каждой итерации цикла. Явно проще, чем "реплейсить" по одному каждый символ. Replace() хорош только для '-' внутри слова, можно его применять один раз на всякий случай, но в тестах таких вариантов не было..
Еще неплохо использовать как разделитель эти символы, что делали в некоторых решениях, но тогда опять таки, если '-' внутри слова, то это может привести к ошибке.
Сначала написал неэффективный перебор.
Потом нагуглил алгоритм Евклида и реализовал итерацией.
В видео рекурсией, так короче, но итерацией понятнее, что происходит)
Оптимизация функции хорошая идея, жаль Шарп принял без нее
Залез в глубокие дебри, пытаясь найти зависимость.
Построил решение на 4 массивах, в итоге неверное, спустя 4 часа дался и посмотрел видео решение.
Что-то сразу не догадался, что можно не хранить min и max, а только их индексы (которые и так надо хранить).
Отлично решение у Владимир 6391.
Переделал под него, получилось компактнее и красивее:
int n = int.Parse(Console.ReadLine());
string[] line2 = Console.ReadLine().Split();
int[] a = new int[n];
int minIndex = 0, maxIndex = 0;
for (int i = 0; i < n; i++)
{
a[i] = int.Parse(line2[i]);
if (a[i] < a[minIndex]) minIndex = i;
else if (a[i] > a[maxIndex]) maxIndex = i;
}
int temp = a[minIndex];
a[minIndex] = a[maxIndex];
a[maxIndex] = temp;
for (int i = 0; i < n - 1; i++)
Console.Write(a[i] + " ");
Console.WriteLine(a[n - 1]);
Сложнее было не придумать, как найти минимум и максимум (с этим то всё просто), а как и, главное, зачем сделать это без сортировки). Придумал конечно, практически совпало с решением Елены.
Но, зачем такое решение в теме массивов? Не лучше ли тут будет как раз Array.Sort() закрепить? А перебор в цикле оставить для темы циклов.
Хорошая задача.
Через цикл массив как-то красивее решение.
Шарп принял одно и тоже верное решение со второй попытки. Видимо тяжко ему от 2000 строк.
На ссылку на Метод Горнера обратил внимание только после включения видео.
К тому же из условий не понял, что последовательность будет длинной в N элементов.
Поэтому решал иначе - просто высчитывал сумму, подставляя значение в цикле while с условием остановки - пока есть что парсить в double:
int n = int.Parse(Console.ReadLine());
double x = double.Parse(Console.ReadLine());
double an, sum = 0;
while (double.TryParse(Console.ReadLine(), out an))
sum += an * Math.Pow(x, n--);
Console.WriteLine("{0:f5}", sum);
(N^N)^N == N^N*N
Т.е. степени при раскрытии скобок перемножаются.
Даже если очень хочется сделать циклом (хз зачем, если Math.Pow доступно), то тогда уж одним циклом до N^2.
А вообще очевидное решение сразу возвести число в нужную степень.
int n = int.Parse(Console.ReadLine());
Console.WriteLine(Math.Pow(n, n*n));
В видео отличное простое решение, жаль сам не догадался)
Спасибо, очень толковый анализ такого способа подачи информации
Написал всё верно, но почему-то решил, что x и y даны в градусах. И начал преобразовывать из в радианы.
Потом перелопатил все действия, залез в дебри тригонометрических формул, несколько раз поменял ход решения - не выходит и всё! Пока видео не посмотрел)
Я тоже когда выполнял данное задание и сделал небольшой туториал с подсказками как сделать быстрей: www.youtube.com/watch?v=pjq8fEWh6Hs
Решение в одну строку:
Console.WriteLine("{0:f5}", Math.Pow(6561, 1/Math.Pow(2, int.Parse(Console.ReadLine()))));
С учётом того, что тема математическая, даже лучше, чем с циклом.
А мне перестановка была как-то сразу очевидна =)
Секундомер уже делал, как в рамках одноименного курса, так и в Прикладных.
Подача интересная, только красный шрифт на белом фоне немного по глазам бьёт.
Спасибо за подарок)
Не знал, что Робот Шарп работает с разными потоками, поэтому сразу сделал сохранение значений в строку с разделением "\n".
Ну и для проверки остановки цикла опять использовал TryParse.
Странно, что никто не догадался использовать int.TryParse, который возвращает булевое значение, как ограничение цикла while (см. ниже).
И если мы всё равно задаём переменным min, max значение первой строки, зачем делать проверки внутри цикла и прочее? Можно задать их до цикла, т.к. первая строка будет всегда, а потом переходить к циклу.
int n = int.Parse(Console.ReadLine());
int min = n, max = n;
while (int.TryParse(Console.ReadLine(), out n))
{
if (n < min) min = n;
if (n > max) max = n;
}
Console.WriteLine("{0} {1}", min, max);
Видео решение - "рукалицо".
Я понимаю, что тема вроде как про switch, но таким образом считать дни как-то уж совсем грустно.
Кроме того, если весьма грубая ошибка.
Если год високосный к days прибавляется единица по-умолчанию. И не берется во внимание, что может быть дата, например, 8.02.2016. Т.е. до 29 февраля.
Добавить бы такой вариант в тесты.
Вы не правы.
"В наше время понедельник считается первым днём недели ... в Великобритании" (с) Wiki (ru.wikipedia.org/wiki/Дни_недели)
В видео решение оптимизированно математически, так и должно быть, круто)
Сделал проверку, содержит ли строчное представление числа "0", т.к. так интереснее, чем просто проверять разряды.
Тесты 5,6,7,8 не соответствуют условию: одно целое число (по модулю не более 10^9).
Сначала написал:
int n = int.Parse(Console.ReadLine());
int max = 0;
for (int i = 1; i < n; i++)
if (n % i == 0) max = i;
Console.WriteLine(max);
И вообще не мог придумать, куда break применить. Оказывается надо цикл строить от максимального значения (n/2) и перебирать по убыванию.
Сначала сделал без continue (т.к. так проще), потом сделал по теме задания, искусственно впихнув в ненужный перебор по одному, а не по семь.
Видео про другой цикл.
В конце первой строки нужен пробел - тогда проходит решение.
На видео ошибка, а Саша всё правильно сделал - указанный цикл не сможет возвести 3 в степень 0, он сразу возводит в 1.
А в условии задачи указано от 0 до 37. Поэтому необходимо условие для n == 0.
В чём отличие с 6 задачей?
www.videosharp.info/console/task/level=34
Зачем таким образом увеличивать количество задач? Я расстроен.
Я рассчитывал, что из 200 задач курса большая часть будет интересными и явно сложнее, чем такие. Ок, вводные и должны быть простыми, но это уже 9 задача из 26, а мы до сих пор просто i в квадрат возводим и выводим на консоль =(
Я так понимаю та же самая задача будет в Пока-цикл. А записать видео к решению с for забыли.
Какой-то несерьёзный подход.
Кроме того, что задача фактически копирует предыдущую, еще и решение для цикла while, а не for.
123456789123456789 -123456789123456789 из теста 006 явно за пределами -10^9..10^9
Но т.к. об этом уже писали 9 месяцев назад и не исправили, видимо давно забили на коментарии.
Понятно, что прошло больше года, но "не так" тут кроется в том, что надо внимательно читать условие.
Требуется сравнить "ab, bc, cd, da", а не "ab, ac, ad, bc, bd, cd" как делано у вас.
Забыл сравнить d-a, но в тестах ни разу не встретился случай, где d-a минимальное, поэтому 100%.
Жаль, исправить нельзя уже.
+-10^9 в пределах int, зачем long?