Название: Морской бой Отправлено: Илья от Апрель 17, 2010, 08:33:59 Все наверное хоть раз играли в эту занимательную игру. Для тех, кто не играл вкратце расскажу правила:
Поле 10 на 10, в битве участвует линейные корабли N*1 прямоугольники, всего при N=1 - 4 корабля, при N=2 - три корабля, при N=3 два корабля, при N=4 - один корабль, то есть всего 10 кораблей. Производятся выстрелы - по 1 клетке за выстрел, возможные ситуации: ранил, убил, промах. Корабли расположены изолировано по полю, то есть не соприкасаются ни сторонами, ни углами. Вопросы такие: 1) За какое наименьшее число выстрелов гарантированно убивается четырехпалубник, если он один на поле? 2)За какое наименьшее число выстрелов гарантированно убивается четырехпалубник, если на поле целая эскадра? Название: Re: Морской бой Отправлено: House Fox от Апрель 17, 2010, 08:38:48 Ответ и на первый и на второй вопрос : за 100 выстрелов. :)
Название: Re: Морской бой Отправлено: Илья от Апрель 17, 2010, 08:40:20 Ответ и на первый и на второй вопрос : за 100 выстрелов. Правильно.Да, забыл добавить самую малость: за какое наименьшее количество выстрелов. :) Название: Re: Морской бой Отправлено: House Fox от Апрель 17, 2010, 08:43:51 :)Ну я так и понял, но решил не упускать момент и ответить. ;)
Название: Re: Морской бой Отправлено: General от Апрель 17, 2010, 08:55:15 На Хабре, кстати, была хорошая статья про морской бой (http://habrahabr.ru/blogs/games/82221/)
Название: Re: Морской бой Отправлено: Redirect от Апрель 17, 2010, 11:13:23 1) За какое наименьшее число выстрелов гарантированно убивается четырехпалубник, если он один на поле? 37Название: Re: Морской бой Отправлено: Илья от Апрель 17, 2010, 11:15:54 Нет.
Название: Re: Морской бой Отправлено: Redirect от Апрель 17, 2010, 11:18:47 :sing: Название: Re: Морской бой Отправлено: Redirect от Апрель 17, 2010, 11:21:44 29
Название: Re: Морской бой Отправлено: House Fox от Апрель 17, 2010, 11:25:49 Вот я сейчас считаю :
29 Название: Re: Морской бой Отправлено: Илья от Апрель 17, 2010, 11:26:14 29 Вот это верно. :good2:А как быть со вторым вопросом? Название: Re: Морской бой Отправлено: Redirect от Апрель 17, 2010, 11:31:57 2)23 !!!!
Название: Re: Морской бой Отправлено: House Fox от Апрель 17, 2010, 11:34:10 Ну 9 хватит по-моему.
Название: Re: Морской бой Отправлено: Redirect от Апрель 17, 2010, 11:35:44 Даже 21
Название: Re: Морской бой Отправлено: Илья от Апрель 17, 2010, 11:38:14 Господа, надо остановится на одном варианте. Рассматриваем самый "худший" для нас случай.
По секрету: Показать скрытый текст Название: Re: Морской бой Отправлено: House Fox от Апрель 17, 2010, 11:39:15 Ну не знаю, в чем различие, но навреное снова 29. (до этого что-то не то написал)
Название: Re: Морской бой Отправлено: House Fox от Апрель 17, 2010, 11:41:17 Объясняю : Ну четырехпалубник все равно один на поле будет, т.е. он может не измениться и столько же ходов потребуется для его убития.
Название: Re: Морской бой Отправлено: Redirect от Апрель 17, 2010, 11:42:58 23 в том случае, если мы каждый раз будем попадать в корабли (не 4х палубный), а это 16 выстрелов + оставшиеся клеточки простреливаем - 23
Название: Re: Морской бой Отправлено: Redirect от Апрель 17, 2010, 11:43:45 Объясняю : Ну четырехпалубник все равно один на поле будет, т.е. он может не измениться и столько же ходов потребуется для его убития. А как определить какой из них 4х палубный ? Название: Re: Морской бой Отправлено: General от Апрель 17, 2010, 11:44:18 House Fox, Дело в том, что когда на поле есть другие корабли, попадание не гарантирует, что попали именно в четырёхпалубник. Интересная задача.
Название: Re: Морской бой Отправлено: House Fox от Апрель 17, 2010, 11:44:57 23 в том случае, если мы каждый раз будем попадать в корабли (не 4х палубный), а это 16 выстрелов + оставшиеся клеточки простреливаем - 23 Ну если мы убиваем один корабль, то вокруг него все клетки резко "закрываются", т.е. в них можно не стрелять. Ну т.е. первый мой вариант тоже подходит(т.е. 9 выстрелов) Название: Re: Морской бой Отправлено: House Fox от Апрель 17, 2010, 11:45:41 Ребят, я запутался :laugh:
Название: Re: Морской бой Отправлено: Илья от Апрель 17, 2010, 11:49:32 Ребят, я запутался :laugh: Главное не торопится. :beer:Название: Re: Морской бой Отправлено: Redirect от Апрель 17, 2010, 11:50:31 (http://s52.radikal.ru/i138/1004/a0/ed180000295b.png)
20 с 100% удачей ) Название: Re: Морской бой Отправлено: Илья от Апрель 17, 2010, 12:24:32 А если удача отвернулась от нас?
Можно попробовать посчитать сколько потребуется выстрелов для убиения 4-ка, если по пути нам пришлось еще убить два трех палубника и 3 двухпалубника. Название: Re: Морской бой Отправлено: kinder от Апрель 18, 2010, 03:17:23 2) 56 выстрелов, так у меня получилось в самом худшем случае. Алгоритм таков - как и в первой задаче проходим по диагоналям, при нахождении корабля обстреливаем его, для этого достаточно трёх выстрелов для однопалубного, 4х для двух, 5ти для трёх и 5ти для четырёхпалубного. Кроме двух особых точек в центре где требуется на один выстрел больше (и есть возможность там расположить два корабля). Очевидно максимальное количество выстрелов потребуется когда все корабли лежат на этих диагоналях. Клеток на диагоналях 24. Итого: 24+(3-1)*4+(4-1)*3+(5-1)*2+5+(2)=56
Название: Re: Морской бой Отправлено: Илья от Апрель 18, 2010, 15:18:26 Зачем обстреливать корабли, если по условию сказано, что они не соприкасаются друг с другом: убил одно палубный автоматически клетки вокруг него отсекаются - там уже не может быть другого корабля.
Название: Re: Морской бой Отправлено: kinder от Апрель 18, 2010, 18:33:11 Илья, точно
давно я не играл в морской бой :) сейчас пересчитаю, нашел еще другой способ Название: Re: Морской бой Отправлено: kinder от Апрель 18, 2010, 19:16:06 2) мой ответ 43 выстрела
очевидно, однопалубные не должны быть на диагоналях, в остальном также, получается: 24+(3-1)*3+(4-1)*2+5+2=43 в моём случае независимо от стратегии всегда существует способ расставить корабли так, чтобы выстрелов потребовалось не менее 43. Название: Re: Морской бой Отправлено: Илья от Апрель 19, 2010, 10:47:40 А у меня поначалу получалось 46.
Название: Re: Морской бой Отправлено: mr.Tyler от Апрель 21, 2010, 12:59:37 ответы на оба вопроса = 24. выстрела
чтобы 100% поразить четурехпалубник при минуме выстрелов, необходимо каждую строку и акждый столбец простреливать по принципу "3 пустых.. выстрел..3 пустых.. выстрел" т.к. 4 палубник, то 4 позиции с которых можем начинать их отстрел. на картинке сверху - один из вариантов прострела всего поля на картинкеснизу - 4 варианта в рез-те которых получается в сумме 24,25,25,26 выстрелов. лучший 24. если стоят ВСЕ корабли, то это не меняет ответа, т.к. наихудший вариант - мы не попадем ни в какой корабль кроме 4 палубника. (http://s61.radikal.ru/i174/1004/00/aa70bd9b941e.jpg) Название: Re: Морской бой Отправлено: Илья от Апрель 21, 2010, 13:08:01 Цитировать наихудший вариант - мы не попадем ни в какой корабль кроме 4 палубника. Наихудший вариант, если мы попадем во все трехпалубные и во все двухпалубные и нам придется их проверять на наличие 4-ой палубы.Название: Re: Морской бой Отправлено: kinder от Апрель 21, 2010, 13:23:18 Илья предоставьте вариант эскадры, для которой требуется более 43 выстрелов
Название: Re: Морской бой Отправлено: Илья от Апрель 21, 2010, 15:52:02 Кстати, я хоть и подтвердил, что 29 - это правильный ответ на первый вопрос, щас проверил и меньше чем за 30 выстрелов не получаеся. Так что надо еще разобраться с первым вопросом, то есть предоставить решение в 29 выстрелов, при котором 4-х палубник гарантированно убивается, а потом уже двигаться дальше.
Название: Re: Морской бой Отправлено: mr.Tyler от Апрель 21, 2010, 17:09:43 и правда 29 на 1 вопрос.
(http://s45.radikal.ru/i109/1004/63/d7eabef745c1.jpg) второй вопрос и правда поперебористее касяк. корабль у кромки стоит.. если в другмо месте - то 30 надо =/ Название: Re: Морской бой Отправлено: Илья от Апрель 21, 2010, 17:22:56 Цитировать касяк. корабль у кромки стоит.. если в другмо месте - то 30 надо :beer:Название: Re: Морской бой Отправлено: mr.Tyler от Апрель 21, 2010, 17:27:50 ааа, неет, косяка нету. последний выстрел СПЕЦИАЛЬНО должен производиться у стенки - иначе мы бы корабль уже зацепили ДО этого и в цифру 29 уложились (т.к. в запасе как минимум 1 выстрел был бы)!! все нормуль ))
Название: Re: Морской бой Отправлено: mr.Tyler от Апрель 21, 2010, 17:54:25 а уже дошел до того, что требуется всего 28 выстрелов!!
алгоритм базировался на прошлых картинках+мысль загнать корабль в угол (который отбросит парочку вариантов автоматом) затем прострелять все у кромки. результат на картинке. (http://i080.radikal.ru/1004/33/eb21648353fb.jpg) нумерация стрельбы приобрела стратегическое значение )) на счет второго вопроса - получил с допущениями число 45.. которое на практике всегда меньше , но высчитать его точно - вообще нереально альтернатива - написать программку которая переберет все сочетании на основании предыдущих картинок 24*22*20*18*16*14 == 42,5 млн вариантов для перебора всех возможных значений. ээм бумажки с ручкой точно не хватит Название: Re: Морской бой Отправлено: kinder от Апрель 21, 2010, 22:12:06 ну что, будут варианты эскадр для более чем 43 выстрелов ? :)
число точное |