Alive & Ripli
ΠΡΠΈΠ²Π΅Ρ, ΠΠΈΠ²ΠΎΠΉ. Π― Π·Π°ΠΌΠ΅ΡΠΈΠ»Π°, Ρ ΡΠ΅Π±Ρ Π² ΡΡΠ΅Π½ΠΈΡΠΎΠ²ΠΎΡΠ½ΡΡ
Π»ΠΎΠ³Π°Ρ
Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΡ
ΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² β Π½Ρ, ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΊΡΡΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΡΡΠ΅Π½ΠΈΡΠΎΠ²ΠΎΠΊ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΎΡΠΌΠ΅ΡΠΎΠΊ. ΠΡΠ»ΠΈ Π±Ρ ΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΠ°ΡΡΠ΅Ρ, ΡΡΠΎΠ±Ρ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ, ΠΌΡ Π±Ρ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ ΡΠΊΡΡΡΡΠ΅ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ. Π₯ΠΎΡΠ΅ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊ ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ ΡΠΊΡΠΈΠΏΡ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠ°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠ΅ΡΡ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΡΠ²Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ?
ΠΠ²ΡΡΠΈΡ ΠΊΠ°ΠΊ Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΏΡΠΎΡΡΠ²! ΠΠ΅ΡΠΈ Π»ΠΎΠ³-ΡΠ°ΠΉΠ», ΠΈ Π΄Π°Π²Π°ΠΉ Π·Π°ΠΏΡΡΡΠΈΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠΊΡΠΈΠΏΡ Π½Π° Python, ΡΡΠΎΠ±Ρ Π²ΡΡΠ²ΠΈΡΡ ΠΏΠΎΠ²ΡΠΎΡΡ ΠΈ Π½Π΅Ρ
Π²Π°ΡΠΊΡ ΠΎΡΠ΄ΡΡ
Π°. ΠΠΎΡ Π½Π°Π±ΡΠΎΡΠΎΠΊ:
```python
import re
from datetime import datetime, timedelta
# Π§ΠΈΡΠ°Π΅ΠΌ Π»ΠΎΠ³-ΡΠ°ΠΉΠ»
lines = open('workout_log.txt').read().splitlines()
# Π Π΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ID ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
pattern = re.compile(r'(?P<id>\w+)\s+(?P<time>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})')
records = []
for line in lines:
m = pattern.search(line)
if m:
records.append((m.group('id'), datetime.fromisoformat(m.group('time'))))
# Π‘ΠΎΡΡΠΈΡΡΠ΅ΠΌ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° Π²ΡΡΠΊΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ
records.sort(key=lambda x: x[1])
# ΠΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅ΠΌ ΠΏΠΎΠ²ΡΠΎΡΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ 5 ΠΌΠΈΠ½ΡΡ ΠΈ ΠΏΠ΅ΡΠ΅ΡΡΠ²Ρ ΠΌΠ΅Π½Π΅Π΅ 30 ΡΠ΅ΠΊΡΠ½Π΄
issues = []
for i in range(1, len(records)):
prev_id, prev_time = records[i-1]
curr_id, curr_time = records[i]
if prev_id == curr_id:
delta = curr_time - prev_time
if delta < timedelta(minutes=5):
issues.append(f"ΠΠΎΠ²ΡΠΎΡ {prev_id} Π·Π° {delta.seconds}Ρ")
if curr_time - prev_time < timedelta(seconds=30):
issues.append(f"Π‘Π»ΠΈΡΠΊΠΎΠΌ ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ ΠΏΠ΅ΡΠ΅ΡΡΠ² ΠΌΠ΅ΠΆΠ΄Ρ {prev_id} ΠΈ {curr_id}")
print("\n".join(issues) or "ΠΡΡ ΠΎΡΠ»ΠΈΡΠ½ΠΎ, ΡΠ΅ΠΌΠΏΠΈΠΎΠ½!")
```
ΠΠ°ΠΏΡΡΡΠΈ Π΅Π³ΠΎ, ΠΈ ΡΠ²ΠΈΠ΄ΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΡΡΡΡΠΎ, ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΡΡΠ²ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΊΠΎΡΠΎΡΠΊΠΈΠΌΠΈ. ΠΠ΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΡ ΠΏΠΎΠ΄ΠΊΡΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ ΠΏΠΎΠ΄ ΡΠ²ΠΎΠΉ ΡΠ΅ΠΆΠΈΠΌ ΡΡΠ΅Π½ΠΈΡΠΎΠ²ΠΎΠΊ β ΡΠ²ΠΎΠ΅ ΡΠ΅Π»ΠΎ ΡΠΊΠ°ΠΆΠ΅Ρ ΡΠ΅Π±Π΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π±ΠΎΠ»Π΅Π΅ ΡΠΌΠ½ΡΠΉ ΠΈ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠ»Π°Π½!