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

Джеймс Уэбб

18.04.2024, 09:09. Показов 2707. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Это телескоп. Самый лучший. Он умеет смотреть в такие глубины космоса, в которые еще не проникал взгляд человека.

Напишите класс JamesWebb, который умеет обрабатывать полученное телескопом изображение и возвращать данные о нем по запросу.

Экземпляр класса при инициализации принимает двумерный список целых чисел (прямоугольный), в котором звезды представлены отрицательными числами, а галактики и туманности – положительными. Класс обеспечивает выполнение методов:
brightest_star() – возвращает координаты самой яркой звезды (сначала строку, затем столбец; самая яркая – у которой наибольший модуль числа; если таких несколько, то ту, у которой наименьшее значение строки, а в строке – столбца);
brightest_galaxy() – возвращает координаты самой яркой галактики; определяется аналогично звезде, только число положительное;
stars() – возвращает количество звезд;
galaxies() – возвращает количество галактик и туманностей;
voids() – возвращает количество пустых областей (они обозначены нулями).

Гарантируется, что в списке всегда есть хотя бы одна звезда и хотя бы одна галактика.

Пример
Ввод
Python
1
2
3
4
5
6
7
8
9
data = [[0, 0, 1, 2],
        [3, 1, -1, -1],
        [0, 3, -1, 0]]
jw = JamesWebb(data)
print(jw.brightest_star())
print(jw.brightest_galaxy())
print(jw.stars())
print(jw.galaxies())
print(jw.voids())
Вывод
(1, 2)
(1, 0)
3
5
4
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.04.2024, 09:09
Ответы с готовыми решениями:

Джеймс Бонд
Прошу помощи "киноманов" :) Обьясните пожалуйста "Джеймс Бонд" - это сериал или как вообще понять? Можете цивильно обьяснить что к...

James C. Christensen (Джеймс К. Кристенсен)
James C. Christensen (Джеймс К. Кристенсен) - удивительный художник с прекрасным чувством стиля и неистощимой фантазией. ...

SQL полное руководство Джеймс Грофф
Здравствуйте! Книге SQL полное руководство Джеймс Грофф 3 издание уже лет 15-ть если не ошибаюсь и её продают до сих пор. Без учебной...


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

Или воспользуйтесь поиском по форуму:
5
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
18.04.2024, 09:50
Лучший ответ Сообщение было отмечено Aidar1986 как решение

Решение

Aidar1986,
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
class JamesWebb:
    def __init__(self, data):
        self.data = data
        self.flat = [i for row in data for i in row]
 
    def brightest_star(self):
        star = min(self.flat)
        for index, row in enumerate(self.data):
            if star in row:
                return index, row.index(star)
 
    def brightest_galaxy(self):
        galaxy = max(self.flat)
        for index, row in enumerate(self.data):
            if galaxy in row:
                return index, row.index(galaxy)
 
    def stars(self):
        return sum(1 for i in self.flat if i < 0)
 
    def galaxies(self):
        return sum(1 for i in self.flat if i > 0)
 
    def voids(self):
        return sum(1 for i in self.flat if i == 0)
 
 
data = [[0, 0, 1, 2], [3, 1, -1, -1], [0, 3, -1, 0]]
 
jw = JamesWebb(data)
print(jw.brightest_star())
print(jw.brightest_galaxy())
print(jw.stars())
print(jw.galaxies())
print(jw.voids())
Code
1
2
3
4
5
(1, 2)
(1, 0)
3
5
4
1
 Аватар для VistaSV30
986 / 330 / 79
Регистрация: 10.04.2012
Сообщений: 1,239
Записей в блоге: 4
18.04.2024, 11:03
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 numpy as np
 
class JamesWebb():
 
    def __init__(self, d):
        self.dl = [j for i in d for j in i]
        self.dn = np.array(d)
        
    def brightest_star(self):
        a = np.argwhere(self.dn == np.min(self.dn))
        am = np.argmin([i*100 + j for i, j in a])
        return a[am]
    
    def brightest_galaxy(self):
        a = np.argwhere(self.dn == np.max(self.dn))
        am = np.argmin([i*100 + j for i, j in a])
        return a[am]
    
    def stars(self):
        return sum(1 for i in self.dl if i < 0)
    
    def galaxies(self):
        return sum(1 for i in self.dl if i > 0) 
    
    def voids(self):
        return sum(1 for i in self.dl if i == 0)
    
data = [[0, 0, 1, 2],
        [3, 1, -1, -1],
        [0, 3, -1, 0]]     
    
jw = JamesWebb(data) 
 
print(jw.brightest_star())
print(jw.brightest_galaxy())
print(jw.stars())
print(jw.galaxies())
print(jw.voids())
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
18.04.2024, 16:50
Ну или так:
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
class JamesWebb:
    def __init__(self, data):
        self.d = {(i,j):data[i][j] for j in range(len(data[0])) for i in range(len(data))}
 
    def brightest_star(self):
        return [k for k,v in self.d.items() if v == min(self.d.values())][0]
 
    def brightest_galaxy(self):
        return [k for k,v in self.d.items() if v == max(self.d.values())][0]
 
    def stars(self):
        return len([x for x in self.d.values() if x < 0])
 
    def galaxies(self):
        return len([x for x in self.d.values() if x > 0])
 
    def voids(self):
        return len([x for x in self.d.values() if x == 0])
 
data = [[0, 0, 1, 2],
        [3, 1, -1, -1],
        [0, 3, -1, 0]]
jw = JamesWebb(data)
print(jw.brightest_star())
print(jw.brightest_galaxy())
print(jw.stars())
print(jw.galaxies())
print(jw.voids())
1
0 / 0 / 0
Регистрация: 06.06.2019
Сообщений: 20
27.06.2025, 11:35
правильное решение выдает от @anton78spb
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
class JamesWebb:
    def __init__(self, data):
        self.data = data
        self.flat = [i for row in data for i in row]
 
    def brightest_star(self):
        star = min(self.flat)
        for index, row in enumerate(self.data):
            if star in row:
                return index, row.index(star)
 
    def brightest_galaxy(self):
        galaxy = max(self.flat)
        for index, row in enumerate(self.data):
            if galaxy in row:
                return index, row.index(galaxy)
 
    def stars(self):
        return sum(1 for i in self.flat if i < 0)
 
    def galaxies(self):
        return sum(1 for i in self.flat if i > 0)
 
    def voids(self):
        return sum(1 for i in self.flat if i == 0)
0
 Аватар для andrey_f
883 / 536 / 228
Регистрация: 21.02.2011
Сообщений: 5,706
27.06.2025, 12: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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
class JamesWebb:
    def __init__(self, data):
        self.data = data
 
    def brightest_star(self):
        max_mod = -1
        coord = None
        for i, row in enumerate(self.data):
            for j, val in enumerate(row):
                if val < 0:
                    if abs(val) > max_mod:
                        max_mod = abs(val)
                        coord = (i, j)
                    elif abs(val) == max_mod:
                        if i < coord[0] or (i == coord[0] and j < coord[1]):
                            coord = (i, j)
        return coord
 
    def brightest_galaxy(self):
        max_val = -1
        coord = None
        for i, row in enumerate(self.data):
            for j, val in enumerate(row):
                if val > 0:
                    if val > max_val:
                        max_val = val
                        coord = (i, j)
                    elif val == max_val:
                        if i < coord[0] or (i == coord[0] and j < coord[1]):
                            coord = (i, j)
        return coord
 
    def stars(self):
        count = 0
        for row in self.data:
            for val in row:
                if val < 0:
                    count += 1
        return count
 
    def galaxies(self):
        count = 0
        for row in self.data:
            for val in row:
                if val > 0:
                    count += 1
        return count
 
    def voids(self):
        count = 0
        for row in self.data:
            for val in row:
                if val == 0:
                    count += 1
        return count
 
 
data = [[0, 0, 1, 2], [3, 1, -1, -1], [0, 3, -1, 0]]
 
jw = JamesWebb(data)
print(jw.brightest_star())
print(jw.brightest_galaxy())
print(jw.stars())
print(jw.galaxies())
print(jw.voids())
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru