내가 만들고있는 시스템에는 각각 0-100의 스케일로 UI 슬라이더 세트 (숫자가 다릅니다)가 포함되어 있습니다. 슬라이더 란 볼륨 컨트롤처럼 요소를 잡고 위아래로 드래그하는 UI를 의미합니다. 그것들은 항상 총 100을 보장하는 알고리즘으로 연결되어 있습니다. 따라서 하나의 슬라이더가 위로 움직이면 다른 하나는 모두 0으로 내려갑니다. 하나가 아래로 이동하면 다른 하나가 위로 이동합니다. 항상 총계는 100이어야합니다. 따라서 슬라이더에는 다양한 값이 있지만 총 100 %입니다.
----O------ 40
O---------- 0
--O-------- 20
--O-------- 20
--O-------- 20
그런 다음 첫 번째 슬라이더가 40에서 70으로 위로 이동하면 다른 슬라이더는 값을 아래로 이동해야합니다 (슬라이더를 끌 때). 3 개의 슬라이더가 20에서 10으로 변경되었으며 하나는 더 낮아질 수 없으므로 0으로 유지되었습니다.
-------O--- 70
O---------- 0
-O--------- 10
-O--------- 10
-O--------- 10
물론 슬라이더가 0 또는 100에 도달하면 더 이상 움직일 수 없으므로 머리가 아프기 시작합니다. 따라서 슬라이더가 더 높게 움직이면 다른 것이 더 낮아 지지만, 0에 도달하면 아직 0에 도달하지 않은 나머지 것만 더 낮아질 수 있습니다.
이 질문은 구현이 아닌 알고리즘에만 해당되므로 여기에서 묻습니다. FWIW 플랫폼은 Android Java이지만 특별히 관련이 없습니다.
첫 번째 찌르기로 취한 접근법은 움직 인 슬라이더의 백분율 변화를 계산하는 것이 었습니다. 그런 다음 해당 변경 사항을 분할하고 다른 방향으로 다른 슬라이더 값에 적용했습니다. 문제는 백분율과 곱셈을 사용하여 슬라이더가 0에 도달하면 다시 0에서 다시 증가 할 수 없다는 것입니다. 그 결과로 개별 슬라이더가 0에 고정됩니다. 반올림 문제를 피하기 위해 0-1,000,000 범위의 슬라이더를 사용했지만 도움이되는 것처럼 보이지만 아직 모든 시나리오를 잘 처리하는 알고리즘을 만들지 않았습니다.