Nano Hash - криптовалюты, майнинг, программирование

Найдите количество недельных строк в месяце

Учитывая день начала (среда = 4) и количество дней в месяце (31), какой элегантный способ найти количество недельных строк, которое потребуется для календаря месяца?

Для текущего месяца (startDay = 4, daysInMonth = 31) это будет 5. Но если daysInMonth = 33, это будет 6 строк.

Это не совсем работает:

int numRows = (startDay+daysInMonth)/daysInWeek;
if ((startDay+daysInMonth) % daysInWeek != 0) {
    numRows++;
}
01.10.2014

  • Какой первый день в каждой строке? Воскресенье или понедельник? 02.10.2014
  • Ваш алгоритм кажется правильным; какой ответ, где вы ожидаете? 02.10.2014
  • В основном это было правильно. См. выбранный ответ ниже. 02.10.2014

Ответы:


1

Просто измените на

int numRows = (startDay + daysInMonth - 1) / daysInWeek;
if ((startDay+daysInMonth - 1) % daysInWeek != 0) {
    numRows++;
}

и вы должны получить правильный результат. РЕДАКТИРОВАТЬ: просто чтобы немного расширить его: у вас есть правильная идея, вы просто забыли учесть тот факт, что смещение для дня 1 равно 0, а не 1.

01.10.2014
  • Это неправильно. Пожалуйста, сверьтесь с месяцем «2018/09». Не хватает одной строки. На самом деле должно быть 6 строк, но получается 5. 29.10.2018

  • 2

    На самом деле, я думаю, что ваш исходный алгоритм правильный, просто нужно вычесть 1 при выполнении по модулю daysInWeek.

    daysInWeek = 7
    startDay = 3 # Zero based day of week array, 3 = Wednesday
    daysInMonth = 31
    numRows = (startDay+daysInMonth)/daysInWeek
    
    if ((startDay+daysInMonth - 1) % daysInWeek != 0)
        numRows += 1
    end
    
    print numRows
    

    Он показывает 6 правильно. (Кстати, зачем вам месяц с 33 днями?) Должно быть 6 строк для 33-дневного месяца (если такое было).

    33-дневный месяц, начиная со среды

    01.10.2014
  • Вы правы, он работает для daysInMonth = 33. Но для daysInMonth = 32 он должен возвращать только 5 недель, а вместо этого возвращает 6. 02.10.2014
  • Извините, я сделал изменение. Вам нужно вычесть 1 из строки по модулю. 02.10.2014

  • 3
  • это не работает. Если daysInMonth = 33 и startDay = 4, я получаю 5 строк. Должно быть 6. 02.10.2014
  • @soleil посчитай вручную. 33 - (7 - 4) = 30. 30 / 7 = 4,28... целлинг = 5. 5+1 = 6 02.10.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..