Попалась мне задачка занимательная школьная про белые и черные перчатки, в голову она мне запала. Поскольку я изучаю Java, ради практики решил написать программу, которая бы решала данную задачу и позволяла бы вводить свои условия. Написал программу, которую назвал GlovesCount. Тут её можно скачать. А ещё я переписал программу на JavaScript, и её вы сможете запустить прямо в браузере. Ссылка будет ниже.
В мешке находится 24 белые перчатки и 20 чёрных перчаток: Решение
Чтобы решить задачу мне пришлось продумать и визуализировать логику программы. Картинку с логикой ищите ниже. Как только я это сделал, я понял, насколько, на самом деле всё просто решается. Но я легких путей никогда не искал.
Здесь я сначала напишу простое логическое решение этой задачи без программы, а уж ниже, если кому-то интересно будет, можете и программу скачать.
Условия у этой задачи такие:
В мешке находится 24 белые перчатки и 20 черных перчаток.
- Перчатки достают из мешка парами.
- Если достали пару перчаток одного цвета, то в мешок кладут чёрную перчатку.
- Если достали пару перчаток разного цвета, то в мешок кладут белую перчатку.
Какого цвета окажется перчатка, которая останется в мешке последней?
Для нетерпеливых сразу напишу, что решение при таких условиях следующее - последней в мешке останется черная перчатка.
Почему так? Решение очень простое. Результат зависит от того, четное или нечетное количество белых перчаток в условии задачи. Если количество белых перчаток четное, то в конце всегда останется черная перчатка. Если же количество белых перчаток в начале нечетное, то в мешке в конце концов останется белая перчатка. Белые перчатки по условию задачи могут всегда только убывать по две штуки, тогда как черные перчатки по количеству могут убывать и прибывать только по одной.
Программа GlovesCount на JavaScript
Сразу напишу, что это апдейт этого поста от 06 июня 2020, поскольку программу я сначала написал на Java, а вариант GlovesCount на JavaScript залил на Github буквально только что.
Короче, теперь можете без геморроя с установкой и настройкой Java просто зайти вот по этой ссылке https://alpidovsky.github.io/gloves-count-js/, ввести две цифры, выбрать, хотите ли увидеть список всех действий, и получить результат прямо в браузере! Ура!
Дальше следует текст описания работы первоначально написаной программы на Java.
Моя программа GlovesCount на Java: Установка и настройка
Итак, решение задачи я нашел, написав консольную программу на Java. Назвал я программу простенько и со вкусом - GlovesCount.
Несмотря на то, что условие изначально звучало, как "в мешке находится 24 белые перчатки и 20 чёрных перчаток", в программу можно ввести два любых целых числа и получить ответ, какого цвета перчатка останется последней.
При этом программа может выдать поэтапный список действий, и можно проследить и проверить все действия от начала и до конца, какие перчатки вытащили, а какую положили обратно, и сколько после этого их в мешке осталось.
Список действий отображается в следующем виде:
Действие №: 1
Забрали две ЧЕРНЫЕ перчатки и положили обратно одну ЧЕРНУЮ.
Осталось: БЕЛЫХ - 24, ЧЕРНЫХ - 19
Действие №: 2
Забрали две РАЗНЫЕ перчатки и положили обратно одну БЕЛУЮ.
Осталось: БЕЛЫХ - 24, ЧЕРНЫХ - 18
А ещё она случайно выбирает, какие две перчатки вытащить, в зависимости от того, какие остались в мешке.
Чтобы запустить программу нужен Windows с установленной Java.
Исходник программы и рабочую версию с инструкцией можно найти и скачать на GitHub вот тут:
Если у кого-то возникли проблемы со скачиванием с GitHub, можете так же скачать архив с Яндекс Диска вот тут:
По последней ссылке архив только с работающей программой и ничего лишнего. Там всё довольно просто. Единственный момент, который может показаться сложным для неподготовленного пользователя - это замена адреса, по которому находится файл java.exe. Но все инструкции есть в файле README.txt
Логика главного цикла программы GlovesCount
Перед тем, как начать писать код я схематично накидал логику главного цикла программы с помощью сервиса draw.io, чтобы не запутаться потом в коде. Получилась такая картинка.
Если кто-то вдруг решит воспользоваться моим творением, и возникнут вопросы, пишите их тут в комментариях.
4 комментария
Здравствуйте.
Цитата-"Белые перчатки по условию задачи могут всегда только убывать по две штуки, тогда как черные перчатки по количеству могут убывать и прибывать только по одной."Но это же неверно! В условии сказано об одном цвете! А цвет парных перчаток может быть как белым так и чёрным.
В условии задачи
Это точно!
"Но это же неверно! В условии сказано об одном цвете! А цвет парных перчаток может быть как белым так и чёрным.
В условии задачи"
Внимательно прочтите условия и проверьте свои логические выводы. В статье, как и в алгоритме и в программе, всё точно.
Отправить комментарий