Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/40: Рейтинг темы: голосов - 40, средняя оценка - 4.60
2 / 2 / 0
Регистрация: 03.01.2022
Сообщений: 17

Бетельгейзе

05.01.2022, 15:48. Показов 8010. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Бетельгейзе – огромная переменная звезда, яркость которой колеблется из-за процессов, происходящих под её поверхностью. Но когда в ноябре 2019 года яркость снизилась до минимального уровня за последние 100 лет наблюдений и продолжала снижаться, астрономы заподозрили, что её жизненный цикл близится к эффектному завершению, взрыву сверхновой.

Вам нужно написать программу, которая поможет из наблюдений получить необходимые данные для подтверждения (или опровержения) выдвинутых учёными гипотез о причинах такого поведения звезды.

В файле alpha_oriona.csv (пример ниже) находятся данные измерения интенсивности излучения от звезды в формате:
date;time;luminosity;color

Для сопоставления наблюдаемых данных с выдвинутыми гипотезами о причинах изменения яркости звезды нужно найти наибольшую невозрастающую последовательность значений яркости. В файл result.txt запишите длину (первое и последнее значения считаются в длину) такой последовательности и дату и время ее начала.

Если таких несколько, то первую встреченную.

Пример
Файл alpha_oriona.csv

date;time;luminosity;color
2020-06-16;08:31:09;86;#ff2169
2020-06-16;08:31:19;94;#ff2402
2020-06-16;08:31:29;85;#ff7086
2020-06-16;08:31:39;82;#ff2070
2020-06-16;08:31:49;105;#ff9056
2020-06-16;08:31:59;104;#ff4359
2020-06-16;08:32:09;104;#ff8346
2020-06-16;08:32:19;98;#ff2439
2020-06-16;08:32:29;99;#ff9701

Ответ
4
2020-06-16 08:31:49

Не могу понять, в чем суть и как нужно решить эту задачу, помогите пожалуйста
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.01.2022, 15:48
Ответы с готовыми решениями:

Бетельгейзе
Бетельгейзе – огромная переменная звезда, яркость которой колеблется из-за процессов, происходящих под её поверхностью. Но когда в ноябре...

Бетельгейзе
Вам нужно написать программу, которая поможет из наблюдений получить необходимые данные для подтверждения (или опровержения) выдвинутых...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
2 / 2 / 0
Регистрация: 03.01.2022
Сообщений: 17
06.01.2022, 19:56  [ТС]
Как составить алгоритм решения?
0
enx
 Аватар для enx
1189 / 765 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
07.01.2022, 07:07
tetacol157, проходишься одним циклом по файлу, считаешь максимальную длину последовательность по колонке luminosity, пишешь в 2 переменные индекс начала, дату и время, собственно все.

Делается в один цикл, и пару ифов.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38171 / 21106 / 4307
Регистрация: 12.02.2012
Сообщений: 34,697
Записей в блоге: 14
07.01.2022, 10:23
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import csv
 
def task(fname):
    
    lstart,mstart=-1,-1
    size,msize=0,0
    lprev=0
    dt,cdt,pdt,mdt='','','',''
    
    with open(fname) as csvf:
        rdr = csv.DictReader(csvf,delimiter=';')
        ii=0
        for row in rdr:
            lcurr=int(row['luminosity'])
            cdt=row['date']+' '+row['time']
            if lcurr<=lprev:
                if lstart==-1:
                    lstart=ii-1
                    dt=pdt
                    size=2
                else:
                    size+=1
            else:
                if size>=msize:
                    mstart=lstart
                    msize=size
                    mdt=dt
                lstart=-1
                size=0
                
            lprev=lcurr
            pdt=cdt
            ii+=1
            
    return (mstart,msize,mdt)
    
start,length,date_time=task('alpha_oriona.csv')    
with open('result.txt','w') as fout:
    fout.write(str(start)+' '+str(length)+'\n')
    fout.write(date_time)
1
2 / 2 / 0
Регистрация: 03.01.2022
Сообщений: 17
07.01.2022, 12:59  [ТС]
Catstail, код падает на втором тесте.

Входные данные:
date;time;luminosity;color
2020-06-16;12:29:34;108;#ff3206
2020-06-16;12:29:44;84;#ff7750
2020-06-16;12:29:54;102;#ff3237
2020-06-16;12:30:04;83;#ff4671
2020-06-16;12:30:14;108;#ff5695
2020-06-16;12:30:24;92;#ff5308
2020-06-16;12:30:34;98;#ff0020
2020-06-16;12:30:44;108;#ff0272

Правильный ответ:
2
2020-06-16 12:29:34

Код выводит:
2
2020-06-16 12:30:14
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38171 / 21106 / 4307
Регистрация: 12.02.2012
Сообщений: 34,697
Записей в блоге: 14
07.01.2022, 13:03
tetacol157, я плАчу... Ну исправь строку 24:

Python
1
    if size > msize:
0
2 / 2 / 0
Регистрация: 03.01.2022
Сообщений: 17
07.01.2022, 13:11  [ТС]
Catstail, теперь на пятом тесте

Входные данные:
date;time;luminosity;color
2020-06-16;12:29:34;99;#ff9574
2020-06-16;12:29:44;90;#ff7645
2020-06-16;12:29:54;93;#ff7932
2020-06-16;12:30:04;87;#ff0097
2020-06-16;12:30:14;104;#ff2188
2020-06-16;12:30:24;90;#ff1304
2020-06-16;12:30:34;87;#ff4336
2020-06-16;12:30:44;104;#ff1601
2020-06-16;12:30:54;90;#ff1784
2020-06-16;12:31:04;86;#ff2533
2020-06-16;12:31:14;106;#ff2996
2020-06-16;12:31:24;102;#ff7471
2020-06-16;12:31:34;93;#ff0217
2020-06-16;12:31:44;107;#ff4804
2020-06-16;12:31:54;80;#ff9856
2020-06-16;12:32:04;83;#ff3806
2020-06-16;12:32:14;86;#ff1079
2020-06-16;12:32:24;93;#ff4760
2020-06-16;12:32:34;87;#ff2436
2020-06-16;12:32:44;89;#ff1594
2020-06-16;12:32:54;96;#ff4228
2020-06-16;12:33:04;104;#ff8963
2020-06-16;12:33:14;90;#ff2695
2020-06-16;12:33:24;91;#ff8864
2020-06-16;12:33:34;88;#ff5792
2020-06-16;12:33:44;85;#ff2026
2020-06-16;12:33:54;84;#ff2208

Правильный ответ:
4
2020-06-16 12:33:24

Код выводит:
3
2020-06-16 12:30:14
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38171 / 21106 / 4307
Регистрация: 12.02.2012
Сообщений: 34,697
Записей в блоге: 14
07.01.2022, 13:43
Лучший ответ Сообщение было отмечено tetacol157 как решение

Решение

tetacol157, да, это моя ошибка

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import csv
 
def task(fname):
    
    lstart,mstart=-1,-1
    size,msize=0,0
    lprev=0
    dt,cdt,pdt,mdt='','','',''
    
    with open(fname) as csvf:
        rdr = csv.DictReader(csvf,delimiter=';')
        ii=0
        for row in rdr:
            lcurr=int(row['luminosity'])
            cdt=row['date']+' '+row['time']
            if lcurr<=lprev:
                if lstart==-1:
                    lstart=ii-1
                    dt=pdt
                    size=2
                else:
                    size+=1
            else:
                if size>msize:
                    mstart=lstart
                    msize=size
                    mdt=dt
                lstart=-1
                size=0
                
            lprev=lcurr
            pdt=cdt
            ii+=1
 
    if size>msize:
        mstart=lstart
        msize=size
        mdt=dt
            
    return (mstart,msize,mdt)
    
start,length,date_time=task('alpha_oriona.csv')    
with open('result.txt','w') as fout:
    fout.write(str(start)+' '+str(length)+'\n')
    fout.write(date_time)
1
2 / 2 / 0
Регистрация: 03.01.2022
Сообщений: 17
07.01.2022, 13:51  [ТС]
Catstail, спасибо, все тесты прошло
1
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
07.01.2022, 14:40
Лучший ответ Сообщение было отмечено tetacol157 как решение

Решение

Как вариант:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import csv
import math
 
date_cur = ''
time_cur = ''
lum_cur = 0
count_cur = 0
 
lum_prev = -math.inf
 
date_max = ''
time_max = ''
count_max = 0
fname = 'alpha_oriona.csv'
with open( fname ) as csvf:
    rdr = csv.DictReader(csvf, delimiter=';')
    for row in rdr:
        lum = int( row['luminosity'] )
        if lum > lum_prev:
            date_cur  = row['date']
            time_cur  = row['time']
            lum_cur   = lum
            count_cur = 1
        else:
            count_cur += 1
            if count_cur > count_max:
                count_max = count_cur
                date_max = date_cur
                time_max = time_cur
        lum_prev = lum
print( count_max, date_max, time_max )
3
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,321
09.01.2022, 13:41
Цитата Сообщение от Catstail Посмотреть сообщение
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import csv
def task(fname):
lstart,mstart=-1,-1
    size,msize=0,0
    lprev=0
    dt,cdt,pdt,mdt='','','',''
with open(fname) as csvf:
        rdr = csv.DictReader(csvf,delimiter=';')
        ii=0
        for row in rdr:
            lcurr=int(row['luminosity'])
            cdt=row['date']+' '+row['time']
            if lcurr<=lprev:
                if lstart==-1:
                    lstart=ii-1
                    dt=pdt
                    size=2
                else:
                    size+=1
            else:
                if size>msize:
                    mstart=lstart
                    msize=size
                    mdt=dt
                lstart=-1
                size=0
lprev=lcurr
            pdt=cdt
            ii+=1
if size>msize:
        mstart=lstart
        msize=size
        mdt=dt
return (mstart,msize,mdt)
start,length,date_time=task('alpha_oriona.csv')    
with open('result.txt','w') as fout:
    fout.write(str(start)+' '+str(length)+'\n')
    fout.write(date_time)
Почему то две 4 выдает????
Вложения
Тип файла: txt result.txt (24 байт, 47 просмотров)
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38171 / 21106 / 4307
Регистрация: 12.02.2012
Сообщений: 34,697
Записей в блоге: 14
09.01.2022, 14:03
Цитата Сообщение от isaak Посмотреть сообщение
Почему то две 4 выдает???
- первая - номер, вторая - длина
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru