Волна анекдотов, и я вставлю свои 2к рублей

Решили как-то физик, математик и программист написать код для электронных часов на Arduino.

**Физик** (практик, привыкший к измерениям):

— "Берем общее время в секундах, преобразуем в строку и вытаскиваем каждую цифру отдельно!"

```cpp

String timeStr = String(time);

digit1 = timeStr.substring(0,1).toInt(); // десятки минут

digit2 = timeStr.substring(1,2).toInt(); // единицы минут

digit3 = timeStr.substring(2,3).toInt(); // десятки секунд

digit4 = timeStr.substring(3,4).toInt(); // единицы секунд

```

Логично же — мы видим цифры на дисплее, вот и работаем с ними как с цифрами!

**Математик** (любитель элегантности):

— "Какие строки? Используем красоту арифметики!"

```cpp

digit1 = time / 600 % 10; // десятки минут

digit2 = time / 60 % 10; // единицы минут

digit3 = time / 10 % 6; // десятки секунд

digit4 = time % 10; // единицы секунд

```

Математически строго и эффективно!

**Программист** (помолчав, пишет):

```cpp

struct Time {

uint8_t min_10, min_1, sec_10, sec_1; // каждая цифра сразу

};

void increment(Time &t) {

if (++t.sec_1 > 9) {

t.sec_1 = 0;

if (++t.sec_10 > 5) {

t.sec_10 = 0;

if (++t.min_1 > 9) {

t.min_1 = 0;

t.min_10++;

}

}

}

}

```

Физик и математик хором:

— Да это читерство! Ты вообще избежал всех преобразований!

Программист:

— Я не избежал, я выбрал правильное представление данных. Ваши методы — это как вычислять координаты в чужой системе, а мой — работать в своей.

А в чем бы вы оказались правы? 👇