https://stacks.pythonprogramminghelp.com/3-clever-tools-to-simplify-your-diagonalization/