Сложная условная математика

#math #conditional

#математика #условные операторы

Вопрос:

Это сложно для меня:

У меня есть четыре группы из 8 светодиодов. A равно 1-8, B равно 9-16, C равно 17-24, а D равно 25-32.

Я пытаюсь выяснить, как написать условное, где

 i = 0 //this would be the LED number

loop {
 i = //gets updated here
 if (i is in the first group) {
    //  do stuff
 }  else {
    //do other stuff
 }
}
  

В принципе, мне нужно проверить светодиод перед его выключением, чтобы увидеть, находится ли он в той же группе, что и новый светодиод, который загорается.

Если он находится в той же группе, он будет отключен, если он НЕ в той же группе, он должен оставаться включенным.

Итак, с математической точки зрения мне нужно посмотреть, находится ли число в определенном диапазоне. Думаю, я мог бы просто написать четыре версии

 if (i >=8)
...
if(i <=9 amp;amp; >=16)
...
  

и т.д., Но это кажется не очень аккуратным…

Ответ №1:

Используйте целочисленное деление. Вычтите 1 из обоих значений, затем целое число разделите на 8. Если это один и тот же результат, то оба светодиода находятся в одном банке.

 def samebank(i, j):
  return ((i - 1) // 8) == ((j - 1) // 8)
  

Ответ №2:

 GetLedGroup(i)
  string[] arrLed = {"A","B","C","D"};
  return arrLed[Math.floor(i/8)-1];