Без ветвления (без if), выполняя одни и те же сравнения вне зависимости от ввода, можно отсортировать три числа a,b,c по убыванию, используя сети сортировки:
Значения заходят слева по проводам, выходят справа. Бо́льшие значения тонут, меньшие всплывают (по вертикальным линиям — компараторам: маx вниз, min наверх).
Без min, max функций можно использовать индексацию:
[[[(a, b, c), (a, c, b)], [None, (c, a, b)]],
[[(b, a, c), None], [(b, c, a), (c, b, a)]]][a < b][a < c][b < c]
Пример.
True == 1 and False == 0 в Питоне, поэтому выражение [on_false, on_true][condition] возвращает on_false, если condition ложно и on_true— если истинно.
Код возвращает одну из шести возможных перестановок: abc acb cab bac bca cba так чтобы значения всегда шли по убыванию: sorted([a,b,c], reverse=True). None никогда не выбирается, так как соответствует невозможным ситуациям (при корректном операторе сравнения): c > a >= b >= c и c <= a < b < c. Тест.
Связанные вопросы: