| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [Java] Задачка для ума |
| Автор: Atum 23.10.2009, 12:00 | ||||
| Добрый день ! предлагаю всем пользователям отвлечься и порешать такую вот интересную задачу : имеется две Даты ( типа java.util.Date) сегодня и какая то другая тестовая дата требуется отнести эту тестовую дату в одну из групп : Давно, В прошлом Месяце, В этом месяце ,на прошлой неделе, на этой неделе , вчера, сегодня, завтра, на следующей неделе, В Следующем месяце, Нескоро . и того 11 групп . пользоваться можно только типом дата и его методами ( Calendar использовать нельзя , если только настенный Пример определения дня :
Нескоро :
для тех кто решит задачу есть , как в школе подпункты (сложность) : 1) требуется учитывать - переход через особую точку - это Новый год 2) требуется учитывать первую неделю в году - что считать первой неделей года 3) требуется учитывать - что в разных странах неделя начинается по разному с Понедельника или Воскресенья 4) требуется учитывать что есть переход на летнее и зимнее время тому кто придумает самый красивый алгоритм - приз для тех кому сложно работать с датами - по 11 группам : попробуйте для начала распределить по Кварталам и по Декадам |
| Автор: fixxer 23.10.2009, 12:50 |
| Почему нельзя пользоваться Calendar? Можно ж написать (скопипастить |
| Автор: ivanovpv 23.10.2009, 15:51 | ||
| Ну да по сути предлагается написать собственный календарь... Или по крайней мере классик обладающий 90% признаков календаря. Какую тут ищет красоту автор - не понимаю. Класс описывающий календарь - ох он некрасив... Сам лично писал на С++ - а если писать путем то надо отсчитывать високосные дни в общем мраки Некое подобие красивости можно соблюсти на самой функции проверяющей признаки, ну типа
|
| Автор: Ares4322 23.10.2009, 17:25 |
| Ну это задача не глупая, но с нее обычно начинают изучать Java. Да и не только Java, наверное) |
| Автор: Temdegon 23.10.2009, 17:26 |
| Определяем сколько милисекунд в сутках. потом вычитаем date1.getTime() - date2.getTime(), получаем разность дат в милисекундах. Знак результата покажет проешдая дата или будущая. Делим результат на кол-во милисек в сутках, и узнаем сколько дней разница между датами. |
| Автор: Temdegon 23.10.2009, 17:45 | ||
да, действительно, лоханулся тогда надо искать алгоритм вычисления дня недели, типа http://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B4%D0%BD%D1%8F_%D0%BD%D0%B5%D0%B4%D0%B5%D0%BB%D0%B8 |
| Автор: goodday1941 23.10.2009, 18:02 |
| да неплохо если знать год месяц и день, а у нас в распоряжении только колличество милисикунд от первого января 1970 года ) |
| Автор: powerOn 23.10.2009, 22:14 |
| Для домашних заданий, курсовых, существует "Центр Помощи". Тема перенесена! |
| Автор: Atum 23.10.2009, 22:44 |
| для тех кому не очень интересна такая задача - можете ее и не решать я нашел два решения . которые меня порадовали. скажу сразу - ,как мне кажется , у такой задачи нет строгого математического алгоритма . и все решения это просто переборы и проверка условий. Решение date1.getTime() - date2.getTime() тоже имеет место быть , и если его довести до конца - то наверное будет красиво . для чего я разместил тут эту задачу: в детстве нас учили работать в числами и цифрами от 0 до 9 , потом в институте на сказали что есть другие системы исчисления с другим основанием и 1+1 = 10... тут я предлагаю поломать голову над тем как мыслить в терминах календаря проще всего сказать - что задача не имеет смысла и очень простая, но стоит начать ее решать и вы понимаете что не так все просто P.s. deprecated методы использовать можно. Это есть в условии . что я понимаю под красивым решением - это постараться уйти от обычного перебора , а использовать фантазию , например взять за основу - «Вечный» табель-календарь для определения дня недели любой календарной даты старого и нового стилей. и находить нужное решение без особых математических расчетов |