ระบบที่ฉันสร้างประกอบด้วยชุดของตัวเลื่อน UI (จำนวนแตกต่างกัน) แต่ละตัวมีระดับ 0-100 โดยตัวเลื่อนฉันหมายถึง UI ที่คุณจับองค์ประกอบและลากขึ้นและลงเช่นการควบคุมระดับเสียง พวกเขาเชื่อมต่อกันด้วยอัลกอริทึมที่ช่วยให้มั่นใจว่าพวกเขาจะรวม 100 เสมอดังนั้นเมื่อเลื่อนหนึ่งเลื่อนขึ้นอื่น ๆ ทั้งหมดเลื่อนลงในที่สุดถึงศูนย์ เมื่อคนหนึ่งถูกเลื่อนลงคนอื่น ๆ ก็จะขยับขึ้น ทุกครั้งที่ผลรวมจะต้องเป็น 100 ดังนั้นที่นี่เลื่อนมีค่าต่าง ๆ แต่พวกเขารวม 100%:
----O------ 40
O---------- 0
--O-------- 20
--O-------- 20
--O-------- 20
หากตัวเลื่อนแรกเลื่อนขึ้นจาก 40 เป็น 70 ตัวเลื่อนอื่น ๆ จะต้องเลื่อนลงตามค่า (เนื่องจากตัวเลื่อนถูกลาก) หมายเหตุสามสไลเดอร์เปลี่ยนจาก 20 เป็น 10 และหนึ่งอยู่ที่ศูนย์เนื่องจากไม่สามารถลดลงได้
-------O--- 70
O---------- 0
-O--------- 10
-O--------- 10
-O--------- 10
แน่นอนว่าเมื่อตัวเลื่อนใด ๆ มาถึง 0 หรือ 100 มันก็ไม่สามารถเคลื่อนไหวได้อีกต่อไปซึ่งเป็นสิ่งที่หัวของฉันเริ่มเจ็บจริงๆ ดังนั้นหากตัวเลื่อนเลื่อนได้สูงกว่าตัวเลื่อนอื่นก็จะลดลง แต่เมื่อตัวเลื่อนใด ๆ ถึงศูนย์เฉพาะอันที่เหลือที่ยังไม่ถึงศูนย์ก็สามารถเลื่อนลงได้
ฉันถามสิ่งนี้เพราะคำถามนี้เฉพาะกับอัลกอริทึมที่ไม่ใช้งาน FWIW แพลตฟอร์มดังกล่าวเป็น Android Java แต่นั่นไม่เกี่ยวข้องโดยเฉพาะ
วิธีที่ฉันใช้กับการแทงครั้งแรกของฉันคือการคำนวณเปอร์เซ็นต์การเปลี่ยนแปลงของตัวเลื่อนที่เคลื่อนที่ จากนั้นฉันแบ่งการเปลี่ยนแปลงนั้นและนำไปใช้ (ในทิศทางอื่น) กับค่าตัวเลื่อนอื่น ๆ ปัญหาที่เกิดขึ้นคือการใช้เปอร์เซ็นต์และการคูณหากตัวเลื่อนใด ๆ มีค่าเป็นศูนย์จะไม่สามารถเพิ่มขึ้นได้อีกจากศูนย์ - ผลลัพธ์สุทธิจากการที่ตัวเลื่อนแต่ละตัวติดค้างที่ศูนย์ ฉันใช้แถบเลื่อนที่มีช่วง 0 - 1,000,000 เพื่อหลีกเลี่ยงปัญหาการปัดเศษและดูเหมือนจะเป็นประโยชน์ แต่ฉันยังไม่ได้สร้างอัลกอริทึมที่จัดการสถานการณ์ทั้งหมดได้ดี