Функции - это инструмент, используемый для написания поддерживаемого кода, главная их задача - избавить программиста от необходимости писать одно и то же несколько раз.
Если приложить это определение к вашей задаче, становится понятно, что функции вам вообще ни к чему, забудьте о них пока.
Процесс в общем случае такой:
- Придумываете алгоритм решения задачи.
- Описываете алгоритм литературным псевдокодом.
- Последовательно реализуете каждый шаг псевдокода без оглядки на функции, паттерны, абстрации и все прочие наслоения (это если ваш уровень программирования реально низок; это всё-таки нужные вещи и с опытом ими всё проще жонглировать в голове).
- Когда программа полностью готова и работает, можно заняться оптимизацией, улучшением архитектуры и т.п.
Примерно такой алгоритм описан у Мартина в "Совершенном коде", если мне не изменяет память. Почитайте, хорошая книга. В идеале, стоит в этот процесс добавить ещё тестирование, но опять, это если голова не пухнет и без него.
Это позволяет на каждом этапе фокусироваться на том, что важно в данный момент и не забивать голову нерелевантными вещами. Есть слона по кусочкам, вот это всё.