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

Два ближайших числа

06.10.2023, 09:32. Показов 1844. Ответов 7

Студворк — интернет-сервис помощи студентам
Два ближайших числа
Дан список целых чисел, содержащий как минимум два элемента. Найдите в нём два ближайших элемента (то есть два элемента с минимальной абсолютной разностью). Изменять список при этом нельзя.

Входные данные

В единственной строке входных данных задан список целых чисел, не превосходящих по модулю 231
.

Выходные данные

Программа должна вывести два числа: индексы двух элементов списка, абсолютная величина разности которых минимальна.
вводиться: 7 0 4 2 5 9 должно выйти: 2 4
я написал программу и она не верна, я хотел бы что вы смогли мне объяснить в чем моя ошибка и как, по возможности, ее исправить. Заранее огромное спасибо!
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
a=list(map(int,input().split()))
p=[]
 
p=sorted(a)
 
p=list(map(int,p))
c=p[0]
c1=p[1]
for i in range(len(a)-1):
    if abs(p[i]-p[i+1])<abs(c-c1):
        c=p[i]
        c1=p[i+1]
        
key1=c
key2=c1
for i in range(len(a)):
    if a[i]==key1:
        ans_1=i
        break
for i1 in range(len(a)):
    if a[i1]==key2:
        if i1==i:
            continue
        else:
            ans_2=i1
            break
        
print(ans_1,ans_2)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.10.2023, 09:32
Ответы с готовыми решениями:

Два ближайших числа
Дан список целых чисел, содержащий как минимум два элемента. Найдите в нём два ближайших элемента (то есть два элемента с минимальной...

Задача - Два ближайших числа
Два ближайших числа Дан список целых чисел, содержащий как минимум два элемента. Найдите в нём два ближайших элемента (то есть два...

Найдите в списке два ближайших друг к другу числа
Дан список чисел (содержащий не менее двух элементов). Найдите в нем два ближайших друг к другу числа (то есть два числа с наименьшей...

7
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
06.10.2023, 12:01
Лучший ответ Сообщение было отмечено Axes0 как решение

Решение

Axes0, Вот решение, оно не оптимальное.
Python
1
2
3
4
5
6
from itertools import combinations
 
a = [7, 0, 4, 2, 5, 9]
 
result = min((i for i in combinations(a, 2)), key=lambda x: abs(x[1] - x[0]))
print(a.index(result[0]), a.index(result[1]))
Code
1
2
3
4
5
2 4
 
 
** Process exited - Return Code: 0 **
Press Enter to exit terminal
Проблемы в вашем коде посмотрю позже, если время будет.

Добавлено через 6 минут
Axes0, Вот "быстрый" вариант.
Python
1
2
3
4
5
a = [7, 0, 4, 2, 5, 9]
s = sorted(a)
 
result = min(((s[i], s[i +1]) for i in range(len(s) - 1)), key=lambda x: x[1] - x[0])
print(a.index(result[0]), a.index(result[1]))
1
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
06.10.2023, 12:43
Axes0, а сортировка зачем? Вам же запрещено изменять список.
0
Любознательный
 Аватар для YuS_2
7406 / 2259 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
06.10.2023, 14:06
Цитата Сообщение от Axes0 Посмотреть сообщение
она не верна
В чем проявляется ошибка?

anton78spb,
список может быть и таким:
[7, 0, 4, 2, 5, 9, 9]

Цитата Сообщение от eaa Посмотреть сообщение
а сортировка зачем?
чтобы сравнить минимальную разность между элементами же.

Цитата Сообщение от eaa Посмотреть сообщение
Вам же запрещено изменять список.
дык, исходный вроде не изменяется... а про новые ничего не сказано

Добавлено через 8 минут
Цитата Сообщение от anton78spb Посмотреть сообщение
print(a.index(result[0]), a.index(result[1]))
Python
1
2
3
4
ind_1 = a.index(result[0])
ind_n = ind_1 + 1
ind_2 = a[ind_n:].index(result[1]) + ind_n
print(ind_1, ind_2)
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,330
06.10.2023, 14:09
Цитата Сообщение от anton78spb Посмотреть сообщение
Вот "быстрый" вариант.
Python
1
2
3
4
5
a = [7, 0, 4, 2, 5, 7, 9]
s = sorted(a)
 
result = min(((s[i], s[i +1]) for i in range(len(s) - 1)), key=lambda x: x[1] - x[0])
print(a.index(result[0]), a.index(result[1]))
но не точный, ответ 0 0, такие дела))
1
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
06.10.2023, 14:44
YuS_2, Ципихович Эндрю, Спасибо.
Python
1
2
3
4
a = [7, 0, 4, 2, 5, 7, 9]
s = sorted((v, i) for i, v in enumerate(a))
result = min([i for i in zip(s, s[1:])], key=lambda x: x[1][0] - x[0][0])
print(result[0][1], result[1][1])
Code
1
2
[7, 0, 4, 2, 5, 7, 9]
0 5
Code
1
2
[0, 4, 2, 5, 7, 9]
1 3
1
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,330
06.10.2023, 14:48
Цитата Сообщение от anton78spb Посмотреть сообщение
Ципихович Эндрю, Спасибо.
пжл
Цитата Сообщение от anton78spb Посмотреть сообщение
[7, 0, 4, 2, 5, 7, 9]
0 5
я ожидал ответа
2 4
так как между ними разница 2
а у Вас ответ
0 5
разница равна 5
или задача не про это?
0
Любознательный
 Аватар для YuS_2
7406 / 2259 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
06.10.2023, 14:51
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
так как между ними разница 2
между 7 и 7 разница меньше

Добавлено через 23 секунды
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
или задача не про это?
про индексы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.10.2023, 14:51
Помогаю со студенческими работами здесь

Задача "Два ближайших числа"
Два ближайших числа Дан список целых чисел, содержащий как минимум два элемента. Найдите в нём два ближайших элемента (то есть два...

Даны два натуральных числа n и m. Сократите дробь (n / m), то есть выведите два других числа p и q таких, что (n / m) =
Даны два натуральных числа n и m. Сократите дробь (n / m), то есть выведите два других числа p и q таких, что (n / m) = (p / q) и дробь...

Программа для нахождения ближайших простых чисел другого числа
Дано число Х(1&lt;Х&lt;10000). Найдите ближайшее к нему простое число. Если заданное число является простым, то в ответе выдайте его. Если есть...

Найти два ближайших к заданному значению числа Фибоначчи
Дано натуральное число N (2&lt;=N&lt;=2*10^9).Найти два ближайших к нему числа Фибоначчи.

Создать текстовый файл. Записать в него числа, определить их среднее значение, и определить два ближайших к нему числа
Создать файл .txt записать в него числа, определить их среднее значение, и определить два ближайших к нему числа (из записанных в...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru