Попробовал написать универсальное решение, как можно улучшить/написать красивее ? Не нравится большое кол-во переменных, возможно от части можно отказаться без ущерба ?