Болезни Военный билет Призыв

Решение игры переправа таблица. Задача про семью и лодку

Я считаю, вы не правы по поводу задачи. Напротив, это бы показало как вы умеете моделировать. Такого скилла очень не хватает среди разработчиков, порой уделяется слишком много внимания инфраструктуре (=== инструментам), не утруждая себя такими вещами, как выделение «чистой» модели, без всякого инфраструктурного говна. Нейминг, выделение наиболее подходящих понятий из предметной области - это очень важные скиллы, если человек обладает таковыми, то с ним приятнее работать. Проще находить проблемы/противоречия в бизнес-логике, проще понимать эти бизнес-требования, модифицировать их и т.д.

В этой лабе прежде всего стоит еще раз вернуться к самой задаче: обобщить её решение вплоть до создания блок-схемы на уровне N детей и M взрослых (по-моему, рыбак в данной задаче ничем от других взрослых не отличается), найти ограничения (например, минимум нужно 2 ребенка, если я правильно понял), а потом уже заняться моделированием.

Мне вспомнилась задача с одного из CTF, где нужно было что-то похожее (по части получения списка действий): имея несколько кувшинов разных объемов, получить определенное количество галлонов воды, чтобы открылась дверь, используя фиксированный набор команд а-ля «взять кувшин», «наполнить», «перелить» и т.д. Если не принимать во внимание, что это был CTF, то на ООП такое решение на порядок доступнее и гибче. Никаких переборов, нужен был алгоритм со минимальным количеством шагов. Если такое сделать в виде лабы, то, мне кажется, в этом что-то есть.

Данную задачу дали мне как тестовое задания, выполнив которое, меня могли бы взять на работу.
Алгоритм задачи у меня есть, решение я тоже смоделировал, но как его реализовать я не разобрался. Решение и моделирование я еще в первом посте написал.
Да, рыбак - это и есть взрослый, по крайней мере я тоже так думаю, единственное отличие, после того как все переправятся на второй берег, он должен переправится обратно. Условие я тоже поставил, о том, что если детей меньше двух, то не будет работать код (опять же таки я это в первом посте писал).
Вся проблема у меня возникла тогда, когда я попробывал сделать массив из детей (Детей двое, а они буду ведь еще и поодиночке плавать), пробовал вот так:

Public function converse(){ for($i=$this->numOfChildren; $i>0; $i--){ $arr[$i] = $i; $arr_rev = array_reverse($arr); echo "

";
 print_r ($arr_rev);
 echo "
"; }; }

Оно выдавало два массива вместо одного.
Если бы я этот пункт правильно реализовал, то мне бы оставалось создать функцию, в которой через цикл прогнать переменные(элементы массива) с одного берега на другой, меняя им флаг, если бы у всех флаг стал 1, то задача была решена.
Именно про то, как это реализовать я спрашивал.
Спасибо за то, что вы мне посоветовали дальше изучать ооп, я этим и займусь. Как говорится поспешишь - людей насмешишь, поэтому отправил работодателю письмо с тем, что у меня имелось и со словами "спасибо за предложенную работу, я буду учиться, а после уже буду пробывать устраиваться еще раз".

Задача: переправить людей на другой берег реки, соблюдая следующие правила;

Как играть в Японская переправа через реку: 1. Полицейский не может оставлять преступника с людьми одного.
2. Папа не может оставлять сыновей одних с мамой, а мать дочерей с папой.
3. Дети не могут плавать на плоту одни.
4. Плот сам по себе не возвращается и перевозит за раз не более 2-х человек.;
Управление: мышкой. Начать игру - круглая синяя кнопка. Потом попробуйте современную экранизацию этой игры ">

Развернуть эту игру на весь экран

Другие игры этой серии и похожие игры


Логические игры - Японская переправа через реку

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

Крестьянин купил на базаре козу, кочан капусты и волка. По дороге домой надо было переправиться через реку. У крестьянина была маленькая лодка, в которую кроме него могла поместится только одна из его покупок.
Как ему переправить все товары через реку, если нельзя оставлять козу наедине с капустой и волка наедине с козой?

Сначала перевезти на другой берег козу. Затем вернуться за капустой, привезти ее на берег к козе, поменять их местами (капусту оставить на берегу, а козу к себе в лодку), с козой в лодке отправиться на другой берег к волку. Высадить козу и взять на борт волка, отвезти волка к капусте на другой берег. Съездить и привезти козу.
Задача решена.

Людоеды и миссионеры

Три миссионера и три людоеда должны перебраться через реку. У них есть одна лодка, в которой помещаются только двое. Во избежание трагедии нельзя оставлять вместе больше людоедов, чем миссионеров.
Как переправиться через реку?

1 каннибал и 1 миссионер туда, миссионер обратно.
2 каннибала туда, 1 каннибал обратно.
2 миссионера туда, 1 миссионер и 1 каннибал обратно.
2 миссионера туда, 1 каннибал обратно.
И этот каннибал забирает остальных каннибалов на другую сторону.

Семья

Отец, мать и двое детей – сын и дочь, должны переравиться через реку. Поблизости случился рыбак, который мог бы одолжить им свою лодку. Однако, в лодке могут поместится только один взрослый или двое детей.
Как семье переправиться через реку и вернуть рыбаку его лодку?

Первыми переправляются дети.
Сын возвращается к маме-папе.
Папа едет на берег к дочери, потом дочь едет за братом и возвращается с ним к папе.
Сын едет к маме, отдает ей лодку, чтобы она переплыла к папе и дочери.
После того, как мама переправилась, дочь садится в лодку и едет к брату, подбирает его, и вместе они едут к родителям.
Дочь остается с родителями, а сын едет к рыбаку, отдает ему лодку.
Рыбак едет к родителям и высаживается.
Дочь садится и едет за братом, привозит его с собой обратно (наконец-то вся семья снова вместе), они отдают лодку рыбаку.
Лодка пересекла реку 13 раз.

Люди и обезъяны

Три человека, одна большая и две маленькие обезъяны должны переправиться через реку. Есть одна лодка, в которой может поместиться не больше двоих. Только люди и большая обезъяна умеют грести. Нельзя, чтобы оставались вместе больше обезъян, чем людей, иначе обезъяны сожрут людей. Обезъяны могут выпрыгивать на берег, когда лодка причаливает.
Как им переправиться через реку?

Боязнь темноты

Одной семье надо пройти на другую сторону длинного, узкого и очень тёмного тоннеля. Отец может пройти сквозь тоннель за 1 минуту, мать – за 2, сын – за 4 и дочь за 5 минут. У них есть один факел, которого хватит ровно на 12 минут. В тоннеле могут идти не больше двух человек с факелом.
Как всей семье перебраться на другую строну тоннеля, если все боятся темноты?

Переправа через реку – игра

Цель игры – переправить всех людей через реку соблюдая следующие правила:

  1. На пароме могут находится не более 2-х человек.
  2. Только взрослые (отец, мать и полицейский) могут упралять паромом.
  3. Отец не может находится вместе с девочками в отсутствии матери.
  4. Мать не может находится вместе с мальчиками в отсутствии отца.
  5. Вор не может находится вместе с любыми членами семьи в отсутствии полицейского.

Click кружок, чтобы начать игру.
Click персонаж, чтобы переправить его на паром.
Click красную ручку, чтобы отправить паром на другую сторону.

Прыгающие лягушки – игра

Поменяйте местами лягушек. Три лягушки слева должны переместиться на 3 камня справа, а три лягушки справа – на 3 камня слева.

Каждая лягушка может прыгать только вперёд на соседний камень, если он пустует, или на пустующий камень позади соседней лягушки.
Click "REINICIAR", чтобы начать.

Цветы

Сколько у меня цветов, если все из них, за исключением двух, розы; а также все из них, за исключением двух, тюльпаны; помимо этого, все из них, за исключением двух, маргаритки?

Вычитание

Сколько раз можно вычесть число 2 из числа 32?

Остановившись проездом в маленьком городе, турист решил постричься. В городе было всего две парикмахерские, одна на улице Восточной, другая на улице Западной. В парикмахерской на Восточной был беспорядок, и сам парикмахер был пострижен отвратительно. В парикмахерской на Западной было чисто, и причёска у парикмахера была как у кинозвезды.
В какую из двух парикмахерских направился приезжий и почему?

Приезжий направился в парикмахерскую на Восточной улице. Он рассуждал так: "Если в городе только две парикмахерские, то парикмахер с Восточной улицы, должно быть, стригся у парикмахера с Западной улицы, и наоборот". Так что если приезжий хочет выглядеть так же привлекательно, как и парикмахер с Западной улицы (тот, что с отличной причёской), ему надо пойти к тому, кто стриг парикмахера с Западной улицы, то есть к парикмахеру с Восточной улицы.
И еще один момент: парикмахерская на Западной улице такая чистая и опрятная потому, что клиентов там достаточно мало.

Убийство в пустыне

А, B и С переходили через пустыню. А задумал убить С, подлил ночью в его воду яда и уехал от каравана. В тоже хотел убить С. Не зная, что вода уже отравлена, той же ночью он проделал дыру в бурдюке с водой С и уехал от каравана. С остался один без воды и через несколько дней умер от жажды.
Кто является убийцей, А или В?

Не всё так просто. На мой взгляд, однозначного ответа на этот вопрос не существует. Каждая точка зрения имеет право на существование. Большинство считает, что убийцей был А. Адвокат В обязательно бы упомянул два факта: во-первых, вылить отравленную воду из чьей-то сумки вовсе не значит убить этого человека; и во-вторых, В продлил жизнь С, сам того не зная (он мог умереть от отравления ядом гораздо быстрее, чем от жажды). Однако адвокат А мог бы привести следующий аргумент в защиту своего подопечного: «Почему А виновен в смерти С, если С не выпил ни капли яда?». Математик и философ Рэймонд Меррилл Смаллиан так подытожил свою точку зрения на правосудие, моральную сторону вопроса и логику в отношении данного случая. С моральной точки зрения, очевидно, что А и В виновны в попытке совершения преступления. С точки зрения правосудия, два разных вида обвинения, которые можно им предъявить, существенно разнятся в избранной мере наказания.
А логика дает нам возможность написать целую книгу, опираясь всего лишь на этот случай.

Старший близнец

В один прекрасный день у Керри был день рождения. А через два дня день рождения был у её брата-близнеца Терри. Как так получилось?
Эта загадка заняла первое место на конкурсе «Как так?» в журнале "Гэймз магазин" (“Games Magazine”) в 1992 году.

Сможете ли вы разгадать сегодняшнюю загадку?

Двое взрослых и двое детей хотят переправиться через реку.

Они смастерили плот, но он может выдержать либо одного взрослого, либо пару детей.

Сколько переправ потребуется, чтобы всех перевезти на другой берег?

Ответ

Плот необходимо переправить как минимум девять раз.

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

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

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

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

Затем все повторяется аналогичным образом, и к восьмому путешествию оба взрослых будут на другом берегу, а оба ребенка - на этом. На девятый раз на другой берег переправятся оба ребенка.

На одной стороне реки находятся три человека и три льва. Все они должны оказаться на другом берегу реки. Есть лишь одна лодка, в которой могут поместиться лишь два живых существа одновременно (человека или льва). Вы не можете оставлять на том или другом берегу реки больше львов, чем людей, так как в этом случае животные съедят людей, оставшихся в меньшинстве. Как вы переправите всех через реку?

Решение

Есть пять возможных вариантов первой поездки: один человек, один лев, человек и лев, два человека, два льва.

Так как львы не могут грести, а лодка сама не поплывет, значит, это исключает варианты с одним и двумя львами. Один и два человека тоже исключается, так как на одном берегу львов станет больше. Поэтому для первой поездки остается только один вариант: в лодке окажутся человек и лев.

Они переправляются на дальний берег.

Но лодка сама вернуться не может. Из этого следует, что человек возвращается вместе с лодкой.

Рассмотрим варианты следующей поездки. Отправить двух людей мы не можем, иначе на берегу останется один человек и два льва. Поэтому единственным вариантом являются человек и лев. Человек отвозит льва на другой берег и тут же возвращается обратно. Поскольку в противном случае он останется на берегу с двумя львами.

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

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

Вместо этого отправляем на другой берег двух людей, поскольку они по численности не уступают львам.

Но лодку надо вернуть обратно. Перевозить одного человека нельзя, поскольку на дальнем берегу останется человек и два льва. Поэтому обратно возвращаются человек и лев.

Теперь единственным разумным и безопасным вариантом является отправка двух человек на дальний берег.

Отправим обратно только одного человека. Он заберет льва (заманить его в лодку можно куском мяса) и вернется обратно.