Skip to content

Fix bulls and cows#12

Closed
dimaush wants to merge 3 commits into
hexlet-codebattle:mainfrom
dimaush:fix-bulls_and_cows
Closed

Fix bulls and cows#12
dimaush wants to merge 3 commits into
hexlet-codebattle:mainfrom
dimaush:fix-bulls_and_cows

Conversation

@dimaush
Copy link
Copy Markdown
Contributor

@dimaush dimaush commented May 8, 2026

Уточнил условие и добавил несколько тестов на одинаковые цифры, потому что до этого простые решения, подсчитывающие коров неправильным образом, всё равно проходили все тесты. Теперь не должны.

@dimaush
Copy link
Copy Markdown
Contributor Author

dimaush commented May 8, 2026

Срочно мёржите)) а то всякие вот такие https://codebattle.hexlet.io/games/303234 решения продолжают проходить все тесты, недопустимо))

@mihleonid
Copy link
Copy Markdown

Кажется, что это не исправление, а замена одной задачи на другую. Например, сейчас в системе тест [1122,2211] имеет ответом [0,4], что не согласуется с тем, что для каждой цифры увеличение не более, чем на один. Впрочем, наверняка имелось в виду, что каждая позиция (а не цифра) в secret может быть использоване не более, чем раз. Тогда всё корректно, но всё равно, это две разные задачи (разрешить переиспользовать позиции в secret или нет). Судя по тому, что авторское решение использует именно этот вариант задачи (переиспользование не разрешается), то следует ещё чуть улучшить условие, и можно применять merge. Также может быть хорошей идеей добавить первоначальный вариант условия как другую задачу.

@dimaush
Copy link
Copy Markdown
Contributor Author

dimaush commented May 10, 2026

Это точно не замена одной задачи на другую, потому что эталонное решение не было изменено (разве что несущественно).

Были только добавлены новые тесты, которые, естественно, удовлетворяют эталонному решению. Зато они обеспечат провал слабым решениям, вроде того, которое по ссылке выше (и, если я правильно понимаю смысл any? в Ruby, то и https://codebattle.hexlet.io/games/303904 этого тоже).

Каждая позиция = каждая цифра. В числе 1122 четыре позиции, как и четыре цифры, а не две. При спаривании его с числом 2211 ответом будет [0, 4], и больше ничего не может быть ответом. Эталонное решение такой ответ и выдаёт.

Идеологически ни в каком варианте игры в быки и коровы нельзя переиспользовать позиции в числах. Для [1112, 3451] ответом будет [0, 1], а не [0, 3]. И если поменять числа местами, ответ не изменится.

@vtm9 vtm9 closed this May 10, 2026
@dimaush
Copy link
Copy Markdown
Contributor Author

dimaush commented May 10, 2026

Не вмёржите? А почему?.. 🥺

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants