Преобразовать 6-значное число в день недели (питон)

В настоящее время я пытаюсь преобразовать 6-значное число в день недели. Например, я хочу, чтобы "150102" было преобразовано, поскольку в будний день в пятницу "15" - это год 2015 "," 01 "- это месяц, а" 02 "- это день.

Примечание. Я хочу сделать это без импорта временных функций и использования языка Python.

1 ответ

Решение

Ну, судя по вашим комментариям, это задание (что означает, что оно должно быть помечено как таковое). Поэтому я боюсь, что мое решение будет расплывчатым, но предоставьте некоторые рекомендации по (читай, вероятно, не самое лучшее) решению.

Во-первых, вы хотите иметь что-то, что разбивает данную строку на год / месяц / дату.

public class Date {
    private int year, month, date;

    public Date(final String given) {
        // TODO - Extract year / month / date.
        // Validate year is supported, month exists and date
        // exists in month...
    }
}

Затем, вам (вероятно) понадобится некоторая фиксированная точка, которую вы знаете в будний день (скажем, 1 января 2000 года; суббота).

Затем используйте свои знания дней в году / високосном году, каждом месяце и т. Д., Чтобы узнать, сколько дней с этой даты было предоставлено в качестве аргумента.

static int daysSinceKnown(Date date) {
    // TODO - How many years since, how many of those were leap-years, etc.
}

Наконец, модульная арифметика может дать вам день недели после возврата этой функции. (В частности, глядя на это значение mod 7 (%7) даст вам номер 0-6 [отрицательные числа не будут работать хорошо, но вы можете уловить это при проверке года], который вы можете интерпретировать как день недели.)

Другие вопросы по тегам