Python

Что у меня не так

На сириусе сделал программу, вот задача
Циклический сдвиг вправо
Циклически сдвиньте элементы списка вправо (A[0] переходит на место A[1], A[1] — на место A[2],..., последний элемент переходит на место A[0]).
Используйте минимально возможное количество операций присваивания. Не используйте кортежные присваивания.
Входные данные
Вводится список чисел. Все числа списка находятся на одной строке.
Выходные данные
Выведите ответ на задачу.
Примеры
Ввод 1 2 3 4 5
Вывод 5 1 2 3 4
Вот мой код
a = list(map(int, input().split()))
c = []
for i in a:
c.append(a[a.index(i) - 1])
print(" ".join(map(str, c)))
Что не так?
 с = a[-1:] + a[:-1] 
И это ВСЁ, что требуется для циклического сдвига вправо.

Вывод массива делается так:
 print(*c) 
БЕЗ ненужных map, str и join.

Циклический сдвиг на любое кол-во позиций - это всего лишь перестановка местами начала и конца массива. Например, сдвиг на 3 позиции вправо:
 с = a[-3:] + a[:-3] 
МА
Марат Авхадиев
99 038
Лучший ответ
Ваш код работает правильно для большинства случаев, однако в некоторых случаях он может выдавать ошибочные результаты.

Например, если в списке есть повторяющиеся элементы, то метод `a.index(i)` вернет индекс первого вхождения элемента в список, а не индекс текущего элемента. Это может привести к тому, что в результате получится неправильный порядок элементов.

Для решения этой задачи можно использовать более эффективный и универсальный подход - сдвигать элементы списка на одну позицию вправо, начиная с последнего элемента, и помещать первый элемент списка на место последнего элемента. Этот подход гарантирует корректность результата независимо от того, есть ли повторяющиеся элементы в списке или нет.

Пример кода, который решает данную задачу с помощью такого подхода:

a = list(map(int, input().split()))
last_elem = a[-1]
for i in range(len(a)-1, 0, -1):
a[i] = a[i-1]
a[0] = last_elem
print(" ".join(map(str, a)))

Такой код сдвигает все элементы списка на одну позицию вправо, начиная с последнего элемента, и помещает первый элемент на место последнего элемента. Результат выводится на экран в том же формате, что и был дан на входе.
@ Chatgpt
Вовик Чеботько
Вовик Чеботько
10 435
Тимур Агрба Спасибо что напомнили про chat gpt
Тимур Агрба Он не работет
Тимур Агрба А нет работает
Тимур Агрба Нет не работает

Похожие вопросы