C# обучение с нуля

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

основатель — Волосатов Евгений Витольдович
Поздравляю с 1 сентября! Система начисления Байтов работает.

Статистика по сообщениям

  • Отправлено: 178
  • На публикациях:   2
  • По консольным: 60
  • По видеоурокам: 54
  • Личных сообщений: 62
  • Получено ответов: 258

23924. --
Красимир Зорбов
Красимир Зорбов
ответить
→  FireWolf  # Шахматы по сети / Интерфейс. Начальная позиция / 2020-01-02 10:10

Можете ли вы выслать мне этот файл Zero.png, я не знаю, как это сделать: krasizorbov@abv.bg


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. --
Максим Лапшинов
Максим Лапшинов
ответить
→  FireWolf   / 2018-12-02 13:03

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


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

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


5649. --
Максим Лапшинов
Максим Лапшинов
ответить
→  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. --
Dmitry Sinitsin
Dmitry Sinitsin
ответить
→  FireWolf  # ASP.NET и GMaps / Координаты адреса / 2018-10-30 08:02

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


14981. --
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. --
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. --
Максим Лапшинов
Максим Лапшинов
ответить
→  FireWolf  # Базовый ASP.ект / Схема базы данных / 2018-10-12 22:08

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


1. --
Евгений Волосатов
Евгений Волосатов
ответить
→  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. --
Yefim
Yefim
ответить
→  FireWolf  # Комбинаторика / Рекурсия. Главный секрет / 2018-10-05 18:23

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


6203. --
Николай Миролюбов
Николай Миролюбов
ответить
→  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. --
Евгений Волосатов
Евгений Волосатов
ответить
→  FireWolf   / 2018-09-23 20:55

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

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


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

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. --
Дмитрий Че
Дмитрий Че
ответить
→  FireWolf  # Простой WPF / WPF. Простая змейка. VIP урок. Поймай хвост! / 2018-09-17 00:21

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


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

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


1. --
Евгений Волосатов
Евгений Волосатов
ответить
→  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. --
Евгений Волосатов
Евгений Волосатов
ответить
→  FireWolf   / 2018-09-13 21:12

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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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

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





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

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

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

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


Научился: Научился подключать сайт к базе данных на хостинге.
Трудности: Найти причину неподключения сайта на хостинге к расположенной на хостинге базе данных. Оказалось, что сайт имел в приоритете строку подключения из web.config, а не из настроек ASP.Net на хостинге. Видимо причина в каком-то недосмотре при выполнении урока по генерации сайта посредством EF на основе базы данных.



Научился: Научился пользоваться функциями автоматического рефакторинга - раньше как-то не очень обращал на них внимания...