Дата активности | Видеокурс | Прогресс | ||
---|---|---|---|---|
2016-06-04 | java-start | J1. Запуск | 75 % | |
2016-06-04 | java-write | J2. Печать | 34 % | |
2015-08-09 | sokoban | Сокобан | 9 % | |
2014-10-29 | task3 | Комбинаторика | 5 % | |
Итого: | 14 % |
Дата активности | Консольный раздел | Прогресс | ||
---|---|---|---|---|
2018-09-13 | olimp | Олимпиада | 50 % | |
2018-09-13 | solo | YESOLO on the Keyboard | % | |
2016-01-07 | task1 | Целые задачи | 100 % | |
2015-02-25 | task1 | Цифры | 92 % | |
2015-02-19 | task1 | Лирика | 86 % | |
2014-12-06 | task2 | For-to-чки | 62 % | |
2014-11-26 | task2 | Динамика | 100 % | |
2014-11-26 | task2 | Комбинаторика | 100 % | |
2014-11-25 | task2 | Рекурсия | 100 % | |
2014-11-25 | task2 | Алгоритмика | 45 % | |
2014-11-25 | task2 | Подпрограммы | 100 % | |
2014-11-25 | task2 | Логика | 24 % | |
2014-11-25 | task2 | Последовательность | 34 % | |
2014-11-24 | task2 | Условный оператор | 57 % | |
2014-11-24 | task2 | Матрёшки | 12 % | |
2014-11-24 | task2 | Математика | 12 % | |
2014-11-24 | task1 | Строки | 100 % | |
2014-11-24 | task2 | Обман цикла | 15 % | |
2014-11-24 | task6 | For-to-Цикл | 100 % | |
2014-11-24 | task2 | Строки | 17 % | |
2014-11-24 | task2 | Пока-цикл | 34 % | |
2014-11-24 | task2 | Любимые циклы | 17 % | |
2014-11-24 | task2 | Узник цикла IF | 84 % | |
2014-11-23 | task1 | Символы | 100 % | |
2014-11-23 | task1 | Календарь | 7 % | |
2014-11-23 | task1 | Формулы | 100 % | |
2014-11-23 | z | Вещественные числа | 100 % | |
2014-11-23 | task1 | Геометрия | 100 % | |
2014-11-19 | task1 | Целые числа | 100 % | |
2014-10-22 | task1 | Семантика | 100 % | |
Итого: | 65 % |
на самом деле это самая сложная часть, так как нужно определить ширину сарая в каждой клетке за 2 прохода по строке.
один проход для всех левых границ и один для всех правых.
и для этого нужно использовать стек.
если же решать в лоб, то в поле 10000 x 10000 итоговая программа будет работать очень медленно.
Не совсем точное описание:
"Далее на T строчках вводится координаты построек, по два числа X Y, каждое от 0 до 10000."
на самом деле задается Y X судя по картинке с примером.
Хорошие советы, Orange. Жалко, что поздно их увидела. Возможно, это помогло бы моему боту "набраться силы" :)
Хорошие советы, пригодятся в будущем =)
Сделать игрока с функцией:
public int GetMove(...) => int.Parse(Console.ReadLine());
и можно тогда делать ходы ручным вводом, возможно действительно стоило об этом упомянуть в видео.
1, 2 - Для этого есть этот урок - можно вместо второго игрока запрашивать ввод с консоли.
Советы хороши, но, как говорится... да много как говорится, поговорок подходящих много.
Первый блин - комом. Одна голова хорошо, а две - лучше. Ложка хороша к обеду. И т.д.
3 - Здесь - да и с этим ничего не поделать.
То что сложно - да, поэтому особо не углублялся, лишь старался показать минимальный код, который позволит протестировать свою dll.
Комментарий дельный и полезный. Спасибо!
Спасибо за дельные советы. Надеюсь, Андрей найдёт их для себя полезными.
1. Женя, реально нет времени, когда дедлайн суббота или воскресенье и во сколько?
2. Андрей, стоило бы добавить в видео как дебажить dll, когда есть только внешняя прога, это не сложно, но для новичков может быть проблемой. Судя по количеству участников.
3. Конечно полный перебор не вариант, с учетом запрещенных позиций и симметрии их все равно очень много, но, уже в 1988 году нашли решение, например, Victor Allis не только прогу написал, но и целую диссертацию по этому поводу, и хотя там всего 9 правил, разбираться с ними времени нет, это реально очень долго.
Зачем тогда записался на этот курс, если нет времени разбираться?
Зы. Создание арены и ИИ к ней - это ну очень разные вещи, но с другой стороны, да, как минимум у меня должны быть временные преимущества, поэтому для себя я решил не участвовать в соревновании, либо если все-таки что-то у меня будет - все конкурса
О временных ограничениях я сначала думал, но потом решил от них уйти, так как непонятно сколько ставить - поставить 1 секунду, кому-то может вполне не хватить, поставить - больше? сколько тогда? 5? 10? 60?
С другой стороны, кто-то может впихнуть в своего бота бесконечный цикл, но я для себя решил, что таких мы просто вручную отсеим на предварительном этапе.
Чтобы посмотреть заголовок класса, метода, перечисления и прочего - нужно нажать F12, забыл сказать об это на видео, наверное.
По поводу того, то первый игрок всегда выигрывает - для человека может быть гораздо проще, а вот в коде это реализовать... Тут ведь даже мат конем и слоном покажется детским лепетом, здесь всего число комбинаций на доске ограничено сверху величиной 127^7 = 5.3*10^14 и в каждом случае до 7 вариантов хода, такое количество не то что перебрать во время игры, так даже заочно перебрать и составить словарь не предоставляется возможным - он будет занимать более 3 ПБ
Автор участвовать не будет, так что можешь не переживать, временных отрезков нет, по поводу 1000 боёв, я думаю ограничимся 120+-
Еще не указано временные ограничения на ход.
Если будет допустим 1 секунда на ход, и в среднем 20 ходов за партию, то для проверки 1000 игр каждым цветом только для двух участников займет более 11 часов.
А почему одна звездочка?
Следующим уроком сразу ссылка на задачу =)
спасибо было здорово!
Мне нравится твоя подготовка, очень позитивно и сочно, уверена это будет классно смотреться и весело играть! :)
Потрясающе, вот что значит настоящий программист с подходом программиста решения задачи!!!
Я в восторге и под впечатлением от твоей работа, очень стимулирует и мотивирует! Молодец! :)
С ростом числа кубиков количество вариантов возрастает в геометрической прогрессии.
Так если для поля 10x10 с 1 кубиком достаточно хранить 100 позиций для игрока Х 100 позиций для кубика, всего то 10 000 вариантов, то для 10 кубиков вариантов уже сильно больше:
100 * 100^10 = 100^11 = 10 000 000 000 000 000 000 000.
О, и решение для 3й олимпиадной задачи («Большая степень») пригодилось, а я то думал куда его можно применить :)
В общем, нужно разными способами по максимуму сокращать количество ненужных вариантов.
Например, хранить только карты после движения кубика, а локальные, когда игрок бегает и не двигает кубики можно сбрасывать.
Заранее помечать точки куда кубик ставить нельзя, а также динамически проверять тупиковые ситуации.
Использовать сигнатуры для быстрого поиска среди рассмотренных позиций и т.д. и т.п.
При этом вариантов все равно остается еще очень и очень много, я не могу сказать что текущая версия у меня решит любой лабиринт.
Так для 6го лабиринта с сайта logic-games.spb.ru/sokoban/ (10 кубиков) ей потребовалось порядка 40 000 раз сдвинуть кубики, чтобы найти решение, на что ушло около минуты.
А вот для 8го уровня (18 кубиков) не хватило и 1 000 000, быстрее получилось самому уже пройти :)
МЫ в этой игре тоже пишем решалку, как ты помнишь, но только с одним ящиком.
А как ты делал с 4-мя ящиками, 10-мерный массив использовал? :)
База по созданию проекта в VisualStudio на C#.
Очень полезная информация.
Отличный вебинар, сделали игру Socoban практически с нуля целиком, много познавательных моментов.
Вывод результата: те же числа через запятую, в конце точка.
Условие не верное, на самом деле нужно вывести через пробел и без "." в конце.
У вас есть полностью идентичная задача в разделе ниже (найти сумму цифр) и видео-решение к ней со звуком:
www.youtube.com/watch?v=gDiDp7b1tZc
ЕСТЬ ТАМ ЗВУК. Просто очень тихо. Нужно в наушниках слушать.
www.youtube.com/watch?v=YlnUpdGp2Z0
Звука в видео-решении нет.
Неправильно вычисляете, в одном из тестов ошибка, входные данные не прошедших тестов не показываете, а зря.
Более корректно считать так: 2*b + 200*a/b, но он ваш тест не проходит, а такой 2*(b+100*a/b) проходит.
Пример, введено 7 1000
тогда одна сторона 0.7м, а вторая 1000м
Периметр будет 2001.4 м (в дабле), или отбросив дробную часть 2001м
У вас же получится что одна сторона 0м (700/1000 в инт), а вторая 1000м, и ответ 2000 м, что совершенно не верно.
Еще корректнее считать в дабл. и округлять к ближайшему целому. А не отбрасывать дробную часть
Так при входных данных 8 1000 правильный ответ 2002.