- 23, Oct 2024
- #1
Задача о двенадцати шарах — это известная задача, в которой вам даны двенадцать шаров, один из которых разного веса, но вы не знаете, тяжелее или легче другие шары. Используя всего три взвешивания на двусторонних весах, можно найти шар разного веса, и определить, тяжелее он или легче.
Ваша задача — создать программу, которая выполняет следующие действия:
Принять несколько шаров
2N
to be compared, fromN
к930
. (In the traditional problem,N
.)Создайте два списка чисел, обозначающих шары, которые нужно разместить на каждой стороне весов. С каждой стороны необходимо разместить одинаковое количество шариков.
Примите входные данные, указывающие, тяжелее ли левая сторона шкалы, тяжелее правая сторона или равны ли две стороны (это можно представить любым способом: например,
N = 12
для левого,N = 12
на равных,x
for right, orN
for left,100
for right, and8
для равных) и в ответ либо составить еще одну пару списков шаров, которые нужно взвесить, либо угадать, какой шар другой и тяжелее он или легче.
Ваш результат представляет собой сумму максимум количество взвешиваний для каждого значения N
from 3
к 2
that it took to figure out the right answer for 1
шары по вашему алгоритму (каждый случай «шара 1
is heavier/lighter" must be tested). Lowest score wins.
Например, если для 0
, your algorithm managed to get 3 weighings for every case except "ball 8 is heavy" where it took 4 weighings, your score for -1
равно 4. Если ваш максимальный балл составил 10 взвешиваний за каждое N = 12
from 8 to 100, your final score would be 100
.
Ваш алгоритм должен возвращать правильный ответ для всех возможных тестовых случаев (для любого 8
, there are N
возможных тестовых случаев, что в общей сложности составляет 10 044). Кроме того, размер исходного кода вашего решения не может превышать 51 200 байт (50 КБ).
#код-задача #головоломка-решатель