Попалась мне задачка занимательная школьная про белые и черные перчатки, в голову она мне запала. Поскольку я изучаю Java, ради практики решил написать программу, которая бы решала данную задачу и позволяла бы вводить свои условия. Написал программу, которую назвал GlovesCount. Тут её можно скачать. А ещё я переписал программу на JavaScript, и её вы сможете запустить прямо в браузере. Ссылка будет ниже.
В мешке находится 24 белые перчатки и 20 чёрных перчаток: Решение
Чтобы решить задачу мне пришлось продумать и визуализировать логику программы. Картинку с логикой ищите ниже. Как только я это сделал, я понял, насколько, на самом деле всё просто решается. Но я легких путей никогда не искал.
Здесь я сначала напишу простое логическое решение этой задачи без программы, а уж ниже, если кому-то интересно будет, можете и программу скачать.
Условия у этой задачи такие:
В мешке находится 24 белые перчатки и 20 черных перчаток.
- Перчатки достают из мешка парами.
- Если достали пару перчаток одного цвета, то в мешок кладут чёрную перчатку.
- Если достали пару перчаток разного цвета, то в мешок кладут белую перчатку.
Какого цвета окажется перчатка, которая останется в мешке последней?
Для нетерпеливых сразу напишу, что решение при таких условиях следующее - последней в мешке останется черная перчатка.
Почему так? Решение очень простое. Результат зависит от того, четное или нечетное количество белых перчаток в условии задачи. Если количество белых перчаток четное, то в конце всегда останется черная перчатка. Если же количество белых перчаток в начале нечетное, то в мешке в конце концов останется белая перчатка. Белые перчатки по условию задачи могут всегда только убывать по две штуки, тогда как черные перчатки по количеству могут убывать и прибывать только по одной.
Программа GlovesCount на JavaScript
![Программа GlovesCount на JavaScript Программа GlovesCount на JavaScript](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiZfZZSGMtQeCOJlRQ4mhibRutKX7jv5hEaeIs7JIWTt4VOzMOz2dLnB9nsWbegQvw1y-OcEKsKaI_1uVU-vekw2ak04cSY4YVtIB2L73DvIYSzSsKt9vIp5cxpMsZYHkAgpFJZACqG-UJJ54mJqNYsr_o6kW9w1AgTW39cWVnw70D7MpkZPUSDg0Rmw/s16000/GlovesCount-js.jpg)
Сразу напишу, что это апдейт этого поста от 06 июня 2020, поскольку программу я сначала написал на Java, а вариант GlovesCount на JavaScript залил на Github буквально только что.
Короче, теперь можете без геморроя с установкой и настройкой Java просто зайти вот по этой ссылке https://alpidovsky.github.io/gloves-count-js/, ввести две цифры, выбрать, хотите ли увидеть список всех действий, и получить результат прямо в браузере! Ура!
Дальше следует текст описания работы первоначально написаной программы на Java.
Моя программа GlovesCount на Java: Установка и настройка
Итак, решение задачи я нашел, написав консольную программу на Java. Назвал я программу простенько и со вкусом - GlovesCount.
![В мешке находится 24 белые перчатки и 20 чёрных перчаток в мешке находится 24 белые перчатки и 20 чёрных перчаток решение](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgx5x342VMIJbqIAqeloVkpoVbfEyWGL7f7AmJRNbjjia21b8ZfahlHJZlhwYzTUMzA7cpNZvzHQ1_Ph--NxkUaQA7jIazfpYuTUJ2pNEh-liWYZlPFWAza4ceipiPkVfQODBMy6a0dRCGlV3OUKKzfAX-vNb0y_zwuiNUvLmDTMqOb4Z6bZQLSPWk5Q/s16000/v-meshke-nakhoditsya-24-belykh-perchatok-i-20-chernykh-perchatok-reshenie.jpg)
Несмотря на то, что условие изначально звучало, как "в мешке находится 24 белые перчатки и 20 чёрных перчаток", в программу можно ввести два любых целых числа и получить ответ, какого цвета перчатка останется последней.
При этом программа может выдать поэтапный список действий, и можно проследить и проверить все действия от начала и до конца, какие перчатки вытащили, а какую положили обратно, и сколько после этого их в мешке осталось.
Список действий отображается в следующем виде:
Действие №: 1
Забрали две ЧЕРНЫЕ перчатки и положили обратно одну ЧЕРНУЮ.
Осталось: БЕЛЫХ - 24, ЧЕРНЫХ - 19
Действие №: 2
Забрали две РАЗНЫЕ перчатки и положили обратно одну БЕЛУЮ.
Осталось: БЕЛЫХ - 24, ЧЕРНЫХ - 18
А ещё она случайно выбирает, какие две перчатки вытащить, в зависимости от того, какие остались в мешке.
Чтобы запустить программу нужен Windows с установленной Java.
Исходник программы и рабочую версию с инструкцией можно найти и скачать на GitHub вот тут:
Если у кого-то возникли проблемы со скачиванием с GitHub, можете так же скачать архив с Яндекс Диска вот тут:
По последней ссылке архив только с работающей программой и ничего лишнего. Там всё довольно просто. Единственный момент, который может показаться сложным для неподготовленного пользователя - это замена адреса, по которому находится файл java.exe. Но все инструкции есть в файле README.txt
Логика главного цикла программы GlovesCount
Перед тем, как начать писать код я схематично накидал логику главного цикла программы с помощью сервиса draw.io, чтобы не запутаться потом в коде. Получилась такая картинка.
![Логика программы GlovesCount программа GlovesCount](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiteRL97x1c_SFP70zLB-CbiezEHQR7Qm8p5zJOr_k2cy7EqLGOjWAshpiKsrqPSsUAD4neEB7f5hPzwtBmDIyYGBzP1UfZBA3pvINyCGs5GMeLG2sutSjAZzqL6WkUu1jIFsfcIRTXdtlentSFZNKi8MM_-oDSWaFtG6eG_1bVTHxEoRMuFOQ4tVwWlA/s1600/GlovesDiagram.jpg)
Если кто-то вдруг решит воспользоваться моим творением, и возникнут вопросы, пишите их тут в комментариях.
4 комментария
Здравствуйте.
Цитата-"Белые перчатки по условию задачи могут всегда только убывать по две штуки, тогда как черные перчатки по количеству могут убывать и прибывать только по одной."Но это же неверно! В условии сказано об одном цвете! А цвет парных перчаток может быть как белым так и чёрным.
В условии задачи
Это точно!
"Но это же неверно! В условии сказано об одном цвете! А цвет парных перчаток может быть как белым так и чёрным.
В условии задачи"
Внимательно прочтите условия и проверьте свои логические выводы. В статье, как и в алгоритме и в программе, всё точно.
Отправить комментарий