Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Задача на питон

Елизавета Хомякова Ученик (63), открыт 5 часов назад
Маша родилась 12 декабря 2012 года. Это очень красивая дата, потому что ее можно записать как 12.12.12. Маша хочет написать программу, которая будет узнавать, когда будет ближайшая такая же красивая дата. Маша записывает даты в формате дд.мм.гг, где дд — номер дня, мм — номер месяца, а гг — последние две цифры номера года. Например 3 апреля 1994 года записывается как 03.04.94. Она считает дату красивой, если все три числа в ее составе одинаковые. Она просит вас написать программу, которая читает дату в данном формате, и выводит ближайшую к ней красивую дату в будущем. Входные данные Ввод содержит дату в формате дд.мм.гг. Выходные данные Выведите ближайшую красивую дату в формате дд.мм.гг.
4 ответа
бабуин гибонович Оракул (51773) 5 часов назад
Чтобы решить задачу поиска ближайшей красивой даты в формате дд.мм.гг, мы будем последовательно проверять даты, начиная с заданной, и искать дату, где все части даты (день, месяц, год) одинаковые.

Вот решение на языке Python:

```python
from datetime import datetime, timedelta

def is_beautiful_date(date_str):
day, month, year = date_str.split('.')
return day == month == year

def find_next_beautiful_date(start_date_str):
start_date = datetime.strptime(start_date_str, "%d.%m.%y")
one_day = timedelta(days=1)

current_date = start_date
while True:
current_date_str = current_date.strftime("%d.%m.%y")
if is_beautiful_date(current_date_str):
return current_date_str
current_date += one_day

# Пример использования
input_date = "12.12.12"
next_beautiful_date = find_next_beautiful_date(input_date)
print(next_beautiful_date)
```

### Объяснение кода:
1. **Функция `is_beautiful_date(date_str)`**:
- Разбивает строку даты на день, месяц и год.
- Проверяет, равны ли все три части даты.

2. **Функция `find_next_beautiful_date(start_date_str)`**:
- Преобразует строку начальной даты в объект `datetime`.
- Использует цикл `while True`, который будет продолжаться до тех пор, пока не найдется красивая дата.
- Внутри цикла:
- Преобразует текущую дату в строку формата дд.мм.гг.
- Проверяет, является ли текущая дата красивой с помощью функции `is_beautiful_date`.
- Если дата красивая, возвращает её.
- Если дата не красивая, увеличивает текущую дату на один день.

3. **Основная часть программы**:
- Читает дату из входных данных.
- Вызывает функцию `find_next_beautiful_date` для поиска следующей красивой даты.
- Печатает результат.

Этот код будет находить и выводить ближайшую красивую дату, начиная с заданной. Например, если ввести "12.12.12", то ближайшая красивая дата будет "22.02.22".
Gio Besford Знаток (452) 5 часов назад
from datetime import datetime, timedelta

def find_next_beautiful_date(date_str):
"""
Находит ближайшую красивую дату в будущем.

Args:
date_str: Дата в формате дд.мм.гг.

Returns:
Ближайшую красивую дату в формате дд.мм.гг.
"""

try:
day, month, year = map(int, date_str.split("."))
year += 2000 # предполагаем, что год - это 20xx
date = datetime(year, month, day)
except ValueError:
return "Неверный формат даты"

for i in range(1, 1000): # Проверяем даты в ближайшие 1000 дней
next_date = date + timedelta(days=i)
day_str = str(next_date.day).zfill(2)
month_str = str(next_date.month).zfill(2)
year_str = str(next_date.year % 100).zfill(2)

if day_str == month_str == year_str:
return f"{day_str}.{month_str}.{year_str}"
return "Красивая дата не найдена в ближайшие 1000 дней"


date_input = input()
result = find_next_beautiful_date(date_input)
print(result)
Андрей Высший разум (465148) 5 часов назад
 d, m, y = map(int, input().split('.'))

if len({d, m, y}) == 1: d += 1 # если дата уже красивая, увеличиваем день
if d > m: m += 1 # если день больше месяца, увеличиваем месяц
if m > min(12, y): y += 1 # если месяц больше года или вышел за рамки года, увеличиваем год
if y > 12: y = 1 # если год больше 12, переходим к первому году следующего века

print('%02d.%02d.%02d' % (y, y, y))
Т.к. "профессиональные" программисты Ответов в очередной раз сломали публикацию кода и вместо %02 выводится хрень, то последнюю строчку кода дублирую текстом:

print('%02d.%02d.%02d' % (y, y, y))
Похожие вопросы