Си шарп с нуля

Формула программиста

основатель — Волосатов Евгений Витольдович
Только до конца недели. Вступление в Клуб Формулистов с 50% + 20% скидкой.

FireWolf
  • Звание: Мегакодер
  • Накопленный опыт: 626 часов
  • Баланс Мегахешей: собрано 33 Mh, потрачено 5 Mh , остаток 28 Mh
  • Баланс Байтов: нет
  • Не состоит в «Клубе формулистов»
  • Последний визит: 2019-08-12 22:10:51
  • Возраст: 38 лет

Видеокурсы

Дата активности Видеокурс Прогресс
2018-10-29 gmaps ASP.NET и GMaps 4 из 11 37 %
2018-10-28 aspnet Базовый ASP.ект 23 из 24 96 %
2018-10-27 ogame On-line игра 3 из 28 %
2018-10-07 task3 Комбинаторика 7 из 22 32 %
2018-10-04 iterator Итератор все 10 100 %
2018-09-19 webapi Web API все 1 %
2018-09-16 game0 Демо игры все 10 100 %
2018-09-16 wpf2 Простой WPF 11 из 12 %
2018-09-16 soft0 Демо софт все 8 115 %
2018-09-15 game1 Нано-игры все 9 90 %
2018-09-14 ef Entity Framework все 8 100 %
2018-09-05 chess3 Шахматы по сети все 95 %
2018-05-27 power Дневник успеха 1 из 101 17 %
2018-01-14 nevermind Невидимка все 5 %
2018-01-06 javasweeper Java Sweeper все 52 %
2017-10-28 soft1 Нанософт 1 из 10 10 %
Итого: 248 из 406 62 %

Консольные задачи

Дата активности Консольный раздел Прогресс
2019-01-17 book 000. Строки 6 из 8 75 %
2019-01-15 club 4004 - Елена Вставская 1 из 27 4 %
2018-12-23 task1 Календарь все 16 100 %
2018-12-22 task1 Цифры 11 из 12 92 %
2018-12-21 club 24 - Муза Оля все 3 100 %
2018-12-20 task2 VIP задачи 5 из 0 %
2018-12-18 task2 Комбинаторика все 9 100 %
2018-12-16 task2 Динамика все 3 100 %
2018-12-15 task2 Матрицы все 4 100 %
2018-12-15 task2 Рекурсия все 4 100 %
2018-12-13 task2 Строки все 6 100 %
2018-12-13 task2 Подпрограммы все 14 100 %
2018-12-11 task2 Простые массивы все 8 100 %
2018-12-10 task2 Матрёшки все 9 100 %
2018-12-09 task2 По цифрам все 8 100 %
2018-12-09 task2 Математика все 9 100 %
2018-12-09 task2 Любимые циклы все 6 100 %
2018-12-08 task2 Последовательность все 6 100 %
2018-12-07 task2 Точка и плоскость все 6 100 %
2018-12-07 task2 Узник цикла IF все 6 100 %
2018-12-06 task2 Обман цикла все 7 100 %
2018-12-06 task2 Do-рацикл все 4 100 %
2018-12-05 task2 Пока-цикл все 6 100 %
2018-12-05 task2 Вечность все 5 100 %
2018-12-04 task2 For-to-чки все 26 100 %
2018-12-03 task2 Условный оператор все 16 100 %
2018-12-01 task2 Типы данных все 5 100 %
2018-12-01 task2 Логика все 13 100 %
2018-11-30 task2 Алгоритмика все 20 100 %
2018-11-25 task1 Целые задачи все 11 100 %
2018-11-24 task1 Геометрия все 8 100 %
2018-11-21 task1 Формулы все 9 100 %
2018-11-21 task1 Символы все 5 100 %
2018-11-19 task1 Лирика 13 из 14 93 %
2018-11-19 task1 Строки все 14 100 %
2018-11-18 task1 Целые числа все 7 100 %
2018-11-18 task1 Семантика все 6 100 %
2018-10-28 solo Java - Циклы 3 из 2 150 %
2018-10-27 solo Java - Запуск 11 из 13 85 %
2018-10-18 solo C# набор 28 из 17 165 %
2018-10-03 solo Java - Вывод данных 3 из 7 43 %
2018-09-29 olimp Олимпиада 4 из 40 10 %
2018-05-03 olimp Шахматы 1 из 2 50 %
Итого: 365 из 421 87 %
Сохранить страницу:

10080. --
FireWolf
FireWolf
ответить
→  Yury   / 2019-01-05 18:00

Ну да, entity framework с Linq to SQL очень удобно использовать и коротко получается. А лямбдами можно вообще многие простые методы в одну строку вписать. Правда я это на основе уроков только говорю, так как работу программистом пока не могу найти.


19327. --
Yury
Yury
ответить
→  FireWolf   / 2019-01-05 17:22

Я на работе часто использую MySQL. И никак не могу найти время хотя бы по диагонали почитать Linq. При работе с СУБД думаю он будет крайне полезен. А в сочетании с лямбда выражениями - просто песня.


10080. --
FireWolf
FireWolf
ответить
→  Yury   / 2019-01-05 11:09

Да, в принципе, любой учебник по C# затрагивает Linq и на сайте MS тоже есть разбор возможностей C#. Но без конкретной необходимости применить что-то из Linq нет смысла его зубрить. Лучше прочитать про его возможности, а потом уже при написании программы вспомнить, что, кажется, вот тут выборку значений из массива по условию можно сделать короче используя Linq и поискать примеры на stackoverflow. Ну и, конечно, лучше сначала научиться делать всё без Linq - он же по сути занимается тем же самым перебором массивов через foreach, просто скрыто генерирует все переборы и условия. Ну и использование Linq не всегда оправдано: он может быть как быстрее, так и медленнее прописывания вручную.


19327. --
Yury
Yury
ответить
→  FireWolf  # Консоль / Целые числа / Пять чисел / 2019-01-04 22:45

прекрасное решение. Обязательно нужно Linq учить. Кстати не подскажите книжечку или курс попонятнее? Заранее благодарен


19384. --
Владимир
Владимир
ответить
→  FireWolf   / 2018-12-24 12:03

Спасибо!


10080. --
FireWolf
FireWolf
ответить
→  Владимир  # Консоль / Календарь / Секундомер / 2018-12-24 11:33

h - 1 знак часа в 12-часовом формате (5 а не 05)
m - 1 знак минуты (5, а не 05)
s - 1 знак секунды(5, а не 05)
@ - показывает, что строку надо обрабатывать как есть и тогда можно писать 1 слеш вместо двух
\ - показывает, что тут надо поставить пробел
Дело в том, что конвертация DateTime в string не понимает явно указанных пробелов и надо их обозначить служебным символом, а так как один слеш конвертация использует в своих целях, то надо два слеша. А @ позволяет обойтись одним. То есть, вместо  .ToString(@"h\ m\ s") можно написать и .ToString(@"h\\ m\\ s").


19384. --
Владимир
Владимир
ответить
→  FireWolf  # Консоль / Календарь / Секундомер / 2018-12-24 10:57

Можешь пожалуйста обьяснить последнюю строку? А именно (@"h\ m\ s")


10080. --
FireWolf
FireWolf
ответить
→  Владимир  # Консоль / Цифры / Серединка / 2018-12-22 16:46

На самом деле надо ещё проще:
Console.WriteLine(Console.ReadLine().Substring(1, 4));
Но нельзя использовать слово string :))))


19384. --
Владимир
Владимир
ответить
→  FireWolf  # Консоль / Цифры / Серединка / 2018-12-22 16:29

Круто!


10080. --
FireWolf
FireWolf
ответить
→  Кирилл  # Консоль / 24 - Муза Оля / Фибоначчи / 2018-12-21 10:50

Можно ещё кратче:
{
        ulong t = 1, f = 0, N = ulong.Parse(Console.ReadLine());
        while (f < N) f = t + (t = f);
        Console.WriteLine(f == N && N != 0 ? "YES" : "NO");
}


10080. --
FireWolf
FireWolf
ответить
# Консоль / 24 - Муза Оля / Фибоначчи / 2018-12-21 10:48

В тесте ошибка: 0 относится к числам Фибоначчи: en.wikipedia.org/wiki/Fibonacci_number#List_of_Fibonacci_numbers
Пришлось добавить исключение для нуля :(


10080. --
FireWolf
FireWolf
ответить
# Консоль / VIP задачи / Тю / 2018-12-20 11:49

А я сделал через Enum... Доктор скажите, я извращенец? ^_^


10080. --
FireWolf
FireWolf
ответить
# Консоль / Комбинаторика / Цифры и знаки / 2018-12-18 20:40

Узнал из видео про отличный чит!


10080. --
FireWolf
FireWolf
ответить
→  Слава  # Консоль / Рекурсия / Обратный отсчёт / 2018-12-15 19:08

А здесь парсить строки вообще нет нужды.


10080. --
FireWolf
FireWolf
ответить
# Консоль / Матрицы / Квадранты матрицы / 2018-12-15 17:41

Сделал через Jagged Array - так и заполнение и вывод массива в одну строчку получается.


10080. --
FireWolf
FireWolf
ответить
# Консоль / Подпрограммы / Звезда / 2018-12-13 14:21

Сделал через цикл с использованием НОДа от предыдущей задачи, а введённые координаты храню в структуре Point в List.


10080. --
FireWolf
FireWolf
ответить
# Консоль / Простые массивы / Мини-максимум / 2018-12-13 10:27

Проще через Min и Max конечно, но чтобы оптимизировать решение пришлось больше строчек на одну сделать :(


10080. --
FireWolf
FireWolf
ответить
# Консоль / Подпрограммы / НОД / 2018-12-12 11:35

Интересно. Сделал цикл для произвольного количества элементов. Для интереса в методе поиска НОДа попробовал рекурсию, while и for.

Выяснил, что с циклом for из видеорешения 7-й тест вылетает по таймауту, потому что на 1 прогон чисел в тесте на i5-8250U нужно больше 22 секунд!

Рекурсия же для прогона 1 000 000 раз затратила минимум 199 мс!

А круче всего работает цикл while - 1 000 000 прогонов за 122 мс!

То есть, цикл ащк из видеорешения более чем в 180 миллионов раз неэффективнее цикла while и более чем в 110 миллионов неэффективнее рекурсии!


10080. --
FireWolf
FireWolf
ответить
# Консоль / Матрёшки / Семизначные числа / 2018-12-10 19:10

Я решил задачу в одну строчку через Enumerable.Range в Linq и проверкой на наличие лишних char в строке. Но потом я задумал чисто работу со строкой и чтобы составлять строку поразрядным увеличением. Можно сказать, что решил сделать кастомный BigInt под конкретную задачу инкремента числа на 2 - 2 - 6. Но в решение её не внёс, чтобы оставить короткое решение через Linq :)
var s = "3333333".ToCharArray();
for (int stop = 6; stop >= 0;)
{
    int pos = 6;
    for (int inc = 3; inc <= 7; inc += 2)
    {
        s[pos] = inc.ToString().ToCharArray()[0];
        Console.WriteLine(s);
    }
    while (pos >= 0)
    {
        if (s[pos] == '7')
        {
            s[pos] = '3';
            pos--;
            stop--;
        }
        else
        {
            s[pos] = ((int.Parse(s[pos].ToString())) + 2).ToString().ToCharArray()[0];
            stop = pos;
            break;
        }
    }
}


10080. --
FireWolf
FireWolf
ответить
# Консоль / Условный оператор / Возрастание / 2018-12-03 14:04

А мне нравится такое решение:

var nums = Array.ConvertAll(Console.ReadLine().Trim().Split(), int.Parse).OrderBy(x => x);
foreach (var n in nums) Console.WriteLine(n);


10080. --
FireWolf
FireWolf
ответить
# Консоль / Условный оператор / Три Максима / 2018-12-02 19:16

Как я перестал бояться и полюбил Linq:

using System.Linq;
using System;
class VideoSharp
{
    static void Main()/*if*/
    {
        Console.WriteLine(Array.ConvertAll(Console.ReadLine().Split(), long.Parse).Take(3).Max());
    }
}


5649. KF
Максим Лапшинов
Максим Лапшинов
ответить
→  FireWolf   / 2018-12-02 13:03

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


10080. --
FireWolf
FireWolf
ответить
→  Максим Лапшинов   / 2018-12-02 12:47

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


5649. KF
Максим Лапшинов
Максим Лапшинов
ответить
→  FireWolf  # Консоль / Алгоритмика / Условный оператор / 2018-12-02 12:13

Вот и для чего публиковать тут в сообшении решение задачки?
Тут ведь приходят чтобы научится и некто их незаставляет учится чтобы брать и тупо копировать код программы
А так хотят видеть не готовое решение программы а обсуждение ее
А вы сразу тут постите решение задачки и это очень плохо
А так есть кнопка видеорешение можно посмотреть решение или в самый конец прокрутить и переписать решение но непонять его


10080. --
FireWolf
FireWolf
ответить
# Консоль / Типы данных / Байты и числа / 2018-11-30 22:14

int i = int.Parse(Console.ReadLine()) * 2;
        byte b = (byte)i;
        Console.WriteLine(i + " " + b);


10080. --
FireWolf
FireWolf
ответить
# Консоль / Алгоритмика / Простые массивы. / 2018-11-30 15:26

Умный в циклы не пойдёт, умный LINQ'ом обойдёт...
using System.Linq;
using System;
class VideoSharp
{
    static void Main()/*[]*/
    {
        string N = Console.ReadLine();
        Console.WriteLine(Console.ReadLine().Split().Count(n => n == "0" || n == "-0"));
    }
}


10080. --
FireWolf
FireWolf
ответить
# Консоль / Алгоритмика / Обман цикла / 2018-11-29 16:49

В одну строчку с Linq:

using System;
using System.Linq;
class VideoSharp
{
    static void Main()/*for continue*/
    {
      Console.WriteLine(Console.ReadLine().Count(c => "bcdfghjklmnpqrstvwxz".Contains(char.ToLower(c))));
    }
}


10080. --
FireWolf
FireWolf
ответить
# Консоль / Алгоритмика / For-то-чки / 2018-11-28 17:03

Альтернативный вариант:
        int N = int.Parse(Console.ReadLine());
        System.Text.StringBuilder sb = new System.Text.StringBuilder(":-");
        for (int i = 0; i < N; i++) sb.Append(")");
        Console.WriteLine(sb.ToString());


10080. --
FireWolf
FireWolf
ответить
# Консоль / Календарь / Послезавтра / 2018-11-27 17:28

А вот вам альтернативный вариант!

class VideoSharp
{
    static void Main()/*AddYears AddMonths AddDays*/
    {
        DateTime dt1 = DateTime.Parse(Console.ReadLine());
        DateTime dt2 = DateTime.Parse(Console.ReadLine());
        int years, months, days;
        years = dt2.Year - dt1.Year;
        if (dt2.Month < dt1.Month)
        {
            years--;
            months = 12 - dt1.Month + dt2.Month;
        }
        else months = dt2.Month - dt1.Month;
        if (dt2.Day < dt1.Day)
        {
            if (dt2.Month == dt1.Month)
            {
                years--;
                months = 11;
            }
            else months--;
            days = DateTime.DaysInMonth(dt1.Year, dt1.Month) - dt1.Day + dt2.Day;
            if (months == 11 && days == 28)
            {
                years++;
                months = 0;
                days = 0;
            }
        }
        else days = dt2.Day - dt1.Day;
        Console.WriteLine("{0}\r\n{1}\r\n{2}", years, months, days);
    }
}


10080. --
FireWolf
FireWolf
ответить
# Консоль / Календарь / Секундомер / 2018-11-27 15:09

long seconds = long.Parse(Console.ReadLine()) % 86400;
        TimeSpan time = TimeSpan.FromSeconds(seconds);
        Console.WriteLine(time.ToString(@"h\ m\ s"));


10080. --
FireWolf
FireWolf
ответить
# Консоль / Календарь / День года / 2018-11-26 20:17

        DateTime dt;
        if (DateTime.TryParse(Console.ReadLine(), out dt)) Console.WriteLine(dt.DayOfYear);
        else Console.WriteLine(-1);


10080. --
FireWolf
FireWolf
ответить
# Консоль / Цифры / Чётность цифр / 2018-11-26 18:58

        string num = Console.ReadLine().TrimStart('0', '-'); int even = 0, odd = 0;
        foreach (char c in num)
        {
            if ((c - '0') % 2 == 0) even++;
            else odd++;
        }
        Console.WriteLine(even == odd ? 0 : even > odd ? 2 : 1);


10080. --
FireWolf
FireWolf
ответить
# Консоль / Цифры / Серединка / 2018-11-26 16:32

using System;
class VideoSharp
{
    static void Main()
    {
        Console.WriteLine(Console.ReadLine().Remove(0, 1).Remove(4, 1));
    }
}


10080. --
FireWolf
FireWolf
ответить
# Консоль / Цифры / Штирлиц / 2018-11-25 22:39

        var str = Console.ReadLine().Trim('0');
        if (str.Length < 2) Console.WriteLine(str);
        else Console.WriteLine("{1}{0}", str[0], str[1]);


10080. --
FireWolf
FireWolf
ответить
# Консоль / Цифры / Ноль-ноль / 2018-11-25 20:49

Попробовал такой вариант:
        string str = Console.ReadLine();
        str = str.Remove(str.Length - 2);
        str += "00";
        Console.WriteLine(str);
Но роботу ненравится ответ "00" на введённое число "24". Почему?


10080. --
FireWolf
FireWolf
ответить
# Консоль / Цифры / Сумматор / 2018-11-25 20:02

Нельзя string? Ну нельзя - так нельзя...
    static void Main()
    {
        var input = Console.ReadLine(); int sum = 0;
        foreach (var n in input) sum+= (n - '0');
        Console.WriteLine(sum);
    }


10080. --
FireWolf
FireWolf
ответить
# Консоль / Целые задачи / Арифметика 2 / 2018-11-25 16:20

        long[] nums = Array.ConvertAll(Console.ReadLine().Split(new[] {'+', '*', '='}, StringSplitOptions.RemoveEmptyEntries), long.Parse);
        Console.WriteLine(nums[0] + nums[1] * nums[2]);


10080. --
FireWolf
FireWolf
ответить
# Консоль / Целые задачи / Вторая дробная / 2018-11-25 16:17

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

        double input = double.Parse(Console.ReadLine(), NumberStyles.Float, CultureInfo.InvariantCulture);
        string str = input.ToString("F3");
        Console.WriteLine(str.Substring(str.Length - 2, 1));

Форматирую строку под 3 знака после запятой ("F3"), а не под 2, чтобы избежать округления. И поэтому беру второй знак с конца. а не первый.


10080. --
FireWolf
FireWolf
ответить
# Консоль / Целые задачи / Арифметика / 2018-11-24 17:17

    static void Main()/*IndexOf Substring*/
    {
        long[] nums = Array.ConvertAll(Console.ReadLine().Split(new[] {'*', '='}, StringSplitOptions.RemoveEmptyEntries), long.Parse);
        Console.WriteLine(nums[0] * nums[1]);
    }


10080. --
FireWolf
FireWolf
ответить
# Консоль / Символы / Буквы кодов / 2018-11-21 16:32

Console.WriteLine(string.Join("", Console.ReadLine().Split().Take(7).Select(c => Convert.ToChar(int.Parse(c)))));


10080. --
FireWolf
FireWolf
ответить
# Консоль / Символы / Коды букв / 2018-11-21 16:27

Console.WriteLine(string.Join(" ", Console.ReadLine().Take(5).Select(c => Convert.ToInt32(c))));


10080. --
FireWolf
FireWolf
ответить
# Консоль / Лирика / Билетики / 2018-11-19 18:31

        string ticketA = Console.ReadLine(), ticketB = Console.ReadLine();
        int sum = 0, length = ticketA.Length;
        for (int i = 0; i < length; i++) sum += Math.Abs(ticketA[i] - ticketB[i]);
        Console.WriteLine(sum);


10080. --
FireWolf
FireWolf
ответить
# Консоль / Лирика / Яблоки / 2018-11-19 17:51

Console.WriteLine(Array.ConvertAll(Console.ReadLine().Split(), x => int.Parse(x)).Aggregate((a, b) => b * a));


10080. --
FireWolf
FireWolf
ответить
# Консоль / Лирика / Классики / 2018-11-19 17:38

        int[] nums = Array.ConvertAll(Console.ReadLine().ToCharArray(), x => x - '0');
        Console.WriteLine(nums.Sum());


10080. --
FireWolf
FireWolf
ответить
# Консоль / Целые числа / Пять чисел / 2018-11-18 15:37

Linq - и всё решение в одну строчку.


10080. --
FireWolf
FireWolf
ответить
# Консоль / Целые числа / Максима / 2018-11-18 15:06

Запилил красивое решение через Reflection с получением alias, а робот не позволяет такую красоту использовать :(

    static void Main()
    {
        foreach (dynamic n in new object[] {new sbyte(), new byte(), new short(), new ushort(), new int(), new uint(), new long(), new ulong(),})
        {
            var type = n.GetType();
            Console.WriteLine(GetAlias(n.GetType()) + " " + type.GetField("MinValue").GetValue(null) + " " + type.GetField("MaxValue").GetValue(null));
        }
        Console.ReadLine();
    }

    public static string GetAlias(Type t)
    {
        var typeName = "";
        using (var provider = new CSharpCodeProvider())
        {
            var typeRef = new CodeTypeReference(t);
            typeName = provider.GetTypeOutput(typeRef);
        }
        return typeName;
    }


10080. --
FireWolf
FireWolf
ответить
# Консоль / Семантика / Дедушка Эхо / 2018-11-18 13:57

Console.WriteLine("{0}\r\n{0}", Console.ReadLine());


10080. --
FireWolf
FireWolf
ответить
# Консоль / Семантика / Привет, Мир! / 2018-11-18 13:45

А компилятор всё равно старый и using static System.Console; не понимает :(


17606. --
Виктор
Виктор
ответить
→  FireWolf  # Консоль / Условный оператор / Три Максима / 2018-11-09 14:57

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


17947. KF
Dmitry Sinitsin
Dmitry Sinitsin
ответить
→  FireWolf  # ASP.NET и GMaps / Координаты адреса / 2018-10-30 08:02

Заметил, что устаревают внешние данные именно в веб-курсах. И если с версиями ещё вопрос решаем, просто ищу в архиве сайта разработчика желаемого ПО нужную старую версию софта, упомянутого в уроке, и дело решено, то с Гуглом или Бутстрапом, к примеру, этот фокус не помогал. То шрифты обновлены и уже не прикручиваются как описано в видео, то интерфейс сменили прилично. Веб-курсы - для пытливых умов ))
Просто повторить "как в уроке" - зачастую не прокатывает.


14981. KF
DimanDOS
DimanDOS
ответить
→  FireWolf  # ASP.NET и GMaps / Запуск ASP.NET MVC / 2018-10-29 19:33

Отлично, FireWolf! Курс очень интересный, и итог получиться прекрасный :)


20105. --
Макс Тимашков
Макс Тимашков
ответить
→  FireWolf  # ASP.NET и GMaps / Презентация / 2018-10-29 14:53

Задумка интересная) Желаю удачи в реализации, уверен, у тебя всё получится))



20197. --
Евгений Гаврусь
Евгений Гаврусь
ответить
→  FireWolf  # Базовый ASP.ект / VIP. Авторизация на сайте / 2018-10-27 07:16

Приветствую! Так держать! Это хорошо когда ты вовремя обнаруживаешь ошибку и исправляешь её. Желаю успеха в дальнейших уроках! ;-)


19525. --
Александр Балбашов
Александр Балбашов
ответить
→  FireWolf  # Базовый ASP.ект / ФИНАЛЬНЫЙ УРОК. Презентация / 2018-10-25 17:20

Привет FireWolf, вижу хорошо поработал! Молодец!


17947. KF
Dmitry Sinitsin
Dmitry Sinitsin
ответить
→  FireWolf  # Базовый ASP.ект / Размещение проекта в Интернете / 2018-10-23 08:16

10  Когда я на почте служил ямщиком
2018-10-23
То мне повстречался косматый геолог.

Posted by sasha
Работает! Удачного дня!


20215. --
Андрей Бебнев
Андрей Бебнев
ответить
→  FireWolf  # Базовый ASP.ект / Что такое SQL-инъекция / 2018-10-16 20:29

К сожалению факт в том что 100% защиты не существует, но к этому естественно надо стремится. Удачи в развитии данной темы.


9913. --
vip
vip
ответить
→  FireWolf  # Базовый ASP.ект / Запуск модели Story / 2018-10-16 08:52

ну тут скорее не логику
скорее ASP.Net тебе предоставляет интерфейс для реализации твоей логики


5649. KF
Максим Лапшинов
Максим Лапшинов
ответить
→  FireWolf  # Базовый ASP.ект / Схема базы данных / 2018-10-12 22:08

Просто вас помучать хотят
А так Евгений Волосатов привык в консоле все набирать  ему быстрее все набирать в консоле чем использовать GUI
и поэтому в курсах такое присутствует да и не только в курсах а еще на вебинарах когда подводит итоги за какойто периюд
Надо вам по чаще на вебинарах быть поимете
Успехов вам в прохождении данного курса


1. KF
Евгений Волосатов
Евгений Волосатов
ответить
→  FireWolf  # Базовый ASP.ект / Выбор темы для проекта / 2018-10-08 22:07

Прикольная история.


19525. --
Александр Балбашов
Александр Балбашов
ответить
→  FireWolf   / 2018-10-08 20:15

лол)


10080. --
FireWolf
FireWolf
ответить
→  Александр Балбашов   / 2018-10-08 20:04

Филёвский парк в Москве :) Там в начале нулевых была анимешная тусовка АиР (Аниме ин Раша), но потом туда влились толкиенисты (вот чего им в Нескучном саду или в Коломенском не сиделось?), вахафилы и прочие, и тусовка превратилась в обычную пьянствующую гоп-компанию :( Впрочем я там с начала нулевых и не был, - может возродилось всё.


19525. --
Александр Балбашов
Александр Балбашов
ответить
→  FireWolf  # Базовый ASP.ект / Выбор темы для проекта / 2018-10-08 19:53

Че за парк такой  с Анимешниками)?


15822. --
Павел Демьянов
Павел Демьянов
ответить
→  FireWolf  # Базовый ASP.ект / Выбор темы для проекта / 2018-10-08 19:21

Поздравляю, желаю дальнейших успехов!!!                               
                                                                                                           
                                                                                                           
                                                                                                           


10080. --
FireWolf
FireWolf
ответить
→  Павел Демьянов  # Комбинаторика / Рекурсия. Заливка области / 2018-10-07 18:11

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


15822. --
Павел Демьянов
Павел Демьянов
ответить
→  FireWolf  # Комбинаторика / Рекурсия. Заливка области / 2018-10-07 17:39

Интересная работа программы, не много не понятно, что она заливает по скриншоту.


11589. KF
Yefim
Yefim
ответить
→  FireWolf  # Комбинаторика / Рекурсия. Главный секрет / 2018-10-05 18:23

Молодец! Выглядит психоделично!


6203. KF
Николай Миролюбов
Николай Миролюбов
ответить
→  FireWolf  # Консоль / Олимпиада / Случайная задача / 2018-10-04 19:28

Я вначале абсолютно точно также решил, потом решил переписать на паскале.


10080. --
FireWolf
FireWolf
ответить
# Консоль / Олимпиада / Случайная задача / 2018-10-04 17:24

Чем городить 5 вложенных циклов для вывода двоичных чисел до 32, можно обойтись одним циклом с конвертацией в строку по базе 2 и забиванием строки недостающими нулями встроенной в строку функцией. Вообще в 1 строчку умещается. Хотя, в идеале надо это делать через побитовое смещение - самый быстрый и правильный способ (ну и самый гиковый).


10080. --
FireWolf
FireWolf
ответить
→  Владимир  # Итератор / Итератор. Волшебное слово yield. / 2018-10-01 18:43

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


19384. --
Владимир
Владимир
ответить
→  FireWolf  # Итератор / Итератор. Волшебное слово yield. / 2018-10-01 18:26

Впервые слышу про yield, лол


1. KF
Евгений Волосатов
Евгений Волосатов
ответить
→  FireWolf   / 2018-09-23 20:55

Подписка в Клуб формулистов обновлена.
Количество дней: +15
Количество байт: +365

Подписка КФ до: 2018-10-29
Остаток байтов: 478
Вы являетесь участником Клуба формулистов.


1. KF
Евгений Волосатов
Евгений Волосатов
ответить

20062. --
Руслан
Руслан
ответить
→  FireWolf   / 2018-09-23 12:36

Спасибо =)


10080. --
FireWolf
FireWolf
ответить
# Консоль / Олимпиада / Простой ряд чисел / 2018-09-23 11:45

10 000-ое число через 3 секунды находит, а 100 000-ое через 3 минуты, так что робот подвиснет, когда начнёт полную проверку делать :)


10080. --
FireWolf
FireWolf
ответить
→  Руслан  # Консоль / Олимпиада / Простой ряд чисел / 2018-09-23 11:42

Это полупростой ряд ;)


10558. --
Иван Воронин
Иван Воронин
ответить
→  FireWolf  # Web API / Создание Web API проекта / 2018-09-19 12:00

Молодец, хорошо поработал. Да, данный урок давно просится, чтобы его порезали на части, но видимо пока руки не дошли, либо Игромистр хочет перезаписать его именно под стиль уроков курса, а не вебинара. В любом случае, это история, которая показывает, как у нас на вебинарах бывает и на сколько это весело и интересно. Продолжай заниматься в том же духе, в каждом уроке всегда есть что-то новое или давно забытое старое =)


10080. --
FireWolf
FireWolf
ответить
→  Антон Лазарец   / 2018-09-17 16:29

Ну как я понял, в Мелкософт из Явы идею и стащили :)


986. --
Антон Лазарец
Антон Лазарец
ответить
→  FireWolf   / 2018-09-17 16:05

Буду на джаву смотреть, не хочу на c#


10080. --
FireWolf
FireWolf
ответить
→  Антон Лазарец   / 2018-09-17 15:58

Вот ссылка на мелкософт: docs.microsoft.com/ru-ru/dotnet/standard/events/observer-design-pattern Но у них там как обычно мутно описано, но если поискать по C# Rx Observer/Observable или по C# IObserver/IObservable много ещё выдаст. Ну и в учебниках всяких типа Гриффитса тема раскрыта.


986. --
Антон Лазарец
Антон Лазарец
ответить
→  FireWolf   / 2018-09-17 15:00

не Rx, из java.util пакета базовая реализация) но Rx нужно будет глянуть, не слышал про такое O_O спасибо за наводку !з


10080. --
FireWolf
FireWolf
ответить
# Консоль / Олимпиада / Случайная задача / 2018-09-17 14:58

Как мне кажется, перебирать все делители до N / 2 не рационально. Лучше в переборе в цикле for пройтись от 1 до, например N / 10, а потом в другом цикле проверять так if (N % (10...1) == 0) WriteLine(N / (10...1)).


10080. --
FireWolf
FireWolf
ответить
→  Антон Лазарец  # Судоку / Печать цифр в таблице / 2018-09-17 14:29

В C# тоже сейчас лямбды вовсю используются. Это собственно и есть автогенерируемый делегат на анонимную функцию. Observable это имеется в виду Rx Observer/Observable? По описанию прекрасная штука, интересное развитие идеи событий (которые по сути те-же делегаты в удобной обёртке). Всё хочу их попробовать, но не знаю, куда их приспособить для эксперимента :)


19525. --
Александр Балбашов
Александр Балбашов
ответить
→  FireWolf  # Простой WPF / WPF. Простая змейка. VIP урок. Поймай хвост! / 2018-09-17 11:46

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

Спинка пёстрая, бока,
Голова точёная,
Не обижу я тебя,
Змейка ультрамодная!

Змеи разные бывают,
Ядовитые и нет,
Кто в пустыне проживает,
Кто-то плавает в воде.

Змеи разные бывают,
И по цвету и длине,
Есть у них одно лишь сходство,
Нет конечностей уже!
Автор: Леонов В.А.


1295. KF
Дмитрий Че
Дмитрий Че
ответить
→  FireWolf  # Простой WPF / WPF. Простая змейка. VIP урок. Поймай хвост! / 2018-09-17 00:21

Вот это отчет, так отчет!


1295. KF
Дмитрий Че
Дмитрий Че
ответить
→  FireWolf  # Демо игры / VIP. Бесплатная консультация / 2018-09-17 00:20

Хорошее дело! С завершением!


1. KF
Евгений Волосатов
Евгений Волосатов
ответить
→  FireWolf  # Демо софт / VIP. Бесплатная консультация / 2018-09-16 11:03

Об этом нас есть отдельный курс, называется без конкуренции


2146. --
Иван
Иван
ответить
→  FireWolf  # Нано-игры / VIP урок. Игра 2048 / 2018-09-15 23:18

Самое сложное остановиться играть. 


19525. --
Александр Балбашов
Александр Балбашов
ответить
→  FireWolf  # Нано-игры / VIP урок. Игра 2048 / 2018-09-15 18:56

Удачи!


1. KF
Евгений Волосатов
Евгений Волосатов
ответить
→  FireWolf   / 2018-09-13 21:12

Подписка в Клуб формулистов обновлена.
Количество дней: +31
Количество байт: +257

Подписка КФ до: 2018-10-14
Остаток байтов: 257
Вы являетесь участником Клуба формулистов.


10080. --
FireWolf
FireWolf
ответить
→  Евгений Волосатов   / 2018-09-09 11:12

Да там тоже, в принципе, была практика. Урок в учебнике и состоял в том, чтобы с помощью EF сделать базу и доступ к ней из оконного приложения. Только я тогда вообще не понимал, что происходит :)))))


1. KF
Евгений Волосатов
Евгений Волосатов
ответить
→  FireWolf  # Entity Framework / Подключение БД по методу CodeFirst / 2018-09-08 20:06

На практике всегда всё лучше понимаешь


18131. KF
Александр
Александр
ответить
→  FireWolf  # Шахматы по сети / Алгоритмы. VIP. Можно пройти? / 2018-08-26 14:47

Да отличные результаты ! Такой профессиональный подход к тестированию


10080. --
FireWolf
FireWolf
ответить
→  Александр  # Шахматы по сети / Алгоритмы. Куда идёт Король / 2018-08-17 14:58

Надо сначала в настройках консоли (правый клик по зпголовку окна) выбрать шрифт, имеющий знаки шахматных фигур (например MS Gothic), а для вывода я использовал следующий код (первый метод собирает строку из состояния шахматного поля, а второй её выводит в консоль):

        static string ChessToAscii(Chess chess)
        {
            var sb = new StringBuilder();
            sb.AppendLine("    a b c d e f g h  ");
            sb.AppendLine("  +----------------+");
            for (int y = 7; y >= 0; y--)
            {
                sb.Append(" ");
                sb.Append(y + 1);
                sb.Append(" |");
                for (int x = 0; x < 8; x++) sb.Append(chess.GetFigureAt(x, y));
                sb.AppendLine("| " + (y + 1));
            }
            sb.AppendLine("  +----------------+");
            sb.AppendLine("    A B C D E F G H  ");
            if (chess.IsCheck) sb.AppendLine("CHECK!");
            if (chess.IsCheckmate) sb.AppendLine("CHECKMATE!");
            if (chess.IsStalemate) sb.AppendLine("STALEMATE!");
            return sb.ToString();
        }

        static void Print(string text)
        {
            OutputEncoding = Encoding.Unicode;
            ConsoleColor fcOld = ForegroundColor;
            ConsoleColor bcOld = BackgroundColor;
           
            for (int i = 0; i < text.Length; i++)
            {
                if (text[i] >= 'a' && text[i] <= 'z' && i < 228)
                {
                    ForegroundColor = ConsoleColor.DarkRed;
                }
                else if (text[i] >= 'A' && text[i] <= 'Z' && i < 228)
                {
                    ForegroundColor = ConsoleColor.DarkYellow;
                }
                else ForegroundColor = ConsoleColor.Cyan;
               
                PrintChar(text[i], i);
            }

            ForegroundColor = fcOld;
            BackgroundColor = bcOld;

            void PrintChar(char f, int i)
            {
                if (i > 49 && i < 209)
                switch (f)
                {
                    case 'K' : SetBGColor(); Write('\u2654'); break;
                    case 'Q' : SetBGColor(); Write('\u2655'); break;
                    case 'R' : SetBGColor(); Write('\u2656'); break;
                    case 'B' : SetBGColor(); Write('\u2657'); break;
                    case 'N' : SetBGColor(); Write('\u2658'); break;
                    case 'P' : SetBGColor(); Write('\u2659'); break;
                    case 'k' : SetBGColor(); Write('\u265A'); break;
                    case 'q' : SetBGColor(); Write('\u265B'); break;
                    case 'r' : SetBGColor(); Write('\u265C'); break;
                    case 'b' : SetBGColor(); Write('\u265D'); break;
                    case 'n' : SetBGColor(); Write('\u265E'); break;
                    case 'p' : SetBGColor(); Write('\u265F'); break;
                    case '.' : SetBGColor(); Write("  "); break;
                    default: Write(f); break;
                }
                else Write(f);
                BackgroundColor = bcOld;

                void SetBGColor() => BackgroundColor = (i % 2 == 0) ? ConsoleColor.Gray : ConsoleColor.DarkGray;
            }
        }


18131. KF
Александр
Александр
ответить
→  FireWolf  # Шахматы по сети / Алгоритмы. Куда идёт Король / 2018-08-16 18:14

А как сделать такую же доску в консоли ? Удивительно красиво для консоли !


10080. --
FireWolf
FireWolf
ответить
→  Евгений Волосатов   / 2018-08-05 23:24

К сожалению, нет.  Я вначале хотел откатить всё назад через CTRL+Z, но студия подвисла и пришлось её c Unity перезагрузить. Я завтра попробую по памяти восстановить предыдущую версию Board и если получится, пришлю вам проект.


1. KF
Евгений Волосатов
Евгений Волосатов
ответить
→  FireWolf  # Шахматы по сети / Рефакторинг. Класс шахматной игры / 2018-08-05 22:01

У тебя есть версия проекта до начала выполнения этого урока?


10080. --
FireWolf
FireWolf
ответить
→  Сергей  # Демо софт / Вступительное слово / 2018-08-04 17:12

Но если ззнаешь английский язык, то лучше всё-таки использовать английские версии Visual Studio, Unity и прочего, так как на английскойм языке ресурсов для программистов гораздо больше, а искать потом в русских менюшках, что там насоветовали на английском не очень удобно. Да и учебников на английском гораздо больше и не надо ждать, когда их переведут.


10558. --
Иван Воронин
Иван Воронин
ответить
→  FireWolf  # Шахматы по сети / Рефакторинг. Волшебник изумрудного ящика / 2018-08-04 12:10

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


4210. --
Дмитрий
Дмитрий
ответить
→  FireWolf   / 2018-08-04 04:46

Похоже, придётся там проверять. У меня тест (который в Алгоритмах ВИП) считает только первый ход. В смысле 20 - 400 - 8000 и тд. Т.е. после каждого хода почему-то возвращается в исходную позицию...
Правда, не знаю, в каком классе искать причину. Буду проверять глобально)


  • Звание: Мегакодер
  • Накопленный опыт: 626 часов
  • Собранный капитал: нет
  • Участник «Клуба формулистов»: до 2018-10-29

Клуб формулистов

Формулист За сегодня За неделю
Разминка Обучение Бонусы Сумма
1 KF grom518 21714 5 15 3 23 23
2 KF Дмитрий 20302 3 5 8 8
3 -- Anton 22389 1 1 1

Правила клуба формулистов

У каждого формулиста есть задача минимум на каждый день:
+ зайти на сайт, проверить один отчёт, получить 1 байт.
Задача максимум - выполнить все остальные ежедневные задачи.
Нажмите здесь чтобы перейти к ежедневному чек-листу.

В 24:00 МСК накопленные за сутки байты переносятся в недельный актив.
В воскресение 24:00 МСК все накопленные байты переходят на баланс формулиста.

Собранные байты можно обменивать на доступные видеокурсы (1 байт = 1 рубль, без скидок)
Приобретённые за байты видеокурсы доступны только во время нахождения в автобусе/клубе формулистов!

При завершении подписки в автобусе/клубе формулистов все накопленные байты обнуляются, а доступ к видеокурсам, приобретённым за байты, закрывается.
Продлевайте подписку заблаговременно.

Начинаем практику по языку C#





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

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

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

Ты в любой момент сможешь отписаться от рассылки.


Научился: Реализовал проверку на правильность хода перед пересозданием доски. Как это просто оказалось, оказывается! А я пытался проверки делать в дополнительном конструкторе... Позор мне _-_ Зато моё тестирование из предыдущего урока - https://www.videosharp.info/10080/checking/chess3=1935 - показало странные результаты. (Чтобы не повторять тут стену текста, подробности посмотрите в отчёте по предыдущему уроку). А по данному уроку, после реализации проверки возможности хода перед пересозданием board для начальной шахматной позиции, без сбора подробной статистики, но после нескольких тестов, можно точно только следующее (чтобы не постить длинную таблицу поверхностного тестирования передам результаты на словах, а подробнее можно на скриншоте посмотреть): 1) Появились сильные колебания производительности на глубинах расчёта ходов 1-3 и без многократных прогонов с вычисление среднего результата сказать определённо ничего нельзя, кроме следующих пунктов: 2) На глубине расчёта 3 стабильно повторяется ускорение расчётов в связках NextMovesLINQ() + YieldValidMoves() (1775ms против 2583ms) и NextMovesLINQ() + YieldValidMovesLINQ() (1815ms против 2327ms). 3) На 2-10% ускорились все варианты расчётов для глубины ходов 4. Выводы: 1) Для собственно проверки возможности хода в данном проекте значительной разницы при избавлении от лишних пересозданий board нет - скорость расчёта сильно скачет и явно в большей мере зависит от внешних факторов (сборщик мусора, троттлинг процессора и т.п.), а для проверки возможности хода фигурой глубина расчёта больше 1 не требуется. 2) Обращает внимание значительное ускорение расчётов для глубины 3 - 30-40%. Возможно есть какой-то sweet spot в количестве создаваемых объектов и вычислений над ними конкретно для LINQ. 3) Многопоточные вычисления продолжают лидировать для глубины расчёта 4, а вот про глубину 1-3 сказать определённо уже ничего нельзя - слишком сильные колебания результатов в каждом прогоне теста. 4) В любом случае для глубины вычислений 4 избавление от лишних board сказывается благотворно. Это всё выводы для начальной шахматной позиции без сделанных ходов. Для других позиций результаты могут отличаться. К следующему финальному уроку постараюсь сделать более подробное тестирование с вычислением средних результатов :)



Научился: Научился опубликовывать проект в сети напрямую из Visual Studio. Интересно, а как сделать, чтобы работало из подпапки на сайте? Просто сделать папку и опубликовать в неё?
Трудности: Страница упорно не хотела работать, выдавая ошибку, подробности которой скрывала из-за настроек приватности в файле global.config. Поправив настройки в файле, удалось выяснить, что не устраивает версия .Net, под которую было скомпилировано. У меня было 4.7.1, а надо было 4.7. Кстати, эту информацию можно было получить и просто сщёлкнув по надписи "Предпросмотр" под адресом сайта в панели управления хостингом.