https://jessehirsh.ca/choose-your-own-algorithm-2/
Choose your own algorithm