+ Нов въпрос
nd_nikolov 7 Точки

# 02. Array Modifier

You are given an array with integers. Write a program to modify the elements after receive the commandsswap”, “multiply” or “decrease”.

• “swap {index1} {index2}” take two elements and swap their places.
• “multiply {index1} {index2}” take element at the 1st index and multiply it with element at 2nd index. Save the product at the 1st index.
• “decrease” decreases all elements in the array with 1.

## Input

On the first input line you will be given the initial array values separated by a single space.

On the next lines you will receive commands until you receive the command “end”. The commands are as follow:

• “swap {index1} {index2}”
• “multiply {index1} {index2}”
• “decrease”

## Output

The output should be printed on the console and consist element of the modified arrayseparated by “, “(comma and single space).

## Constraints

• Commands will be: “swap”, “multiply”, “decrease” and “end
• Elements of the array will be integer numbers in the range [-231...231]
• Count of the array elements will be in the range [2...100]
• Indexes will be always in the range of the array

## Examples

 Input Output Comments 23 -2 321 87 42 90 -123 swap 1 3 swap 3 6 swap 1 0 multiply 1 2 multiply 2 1 decrease end 86, 7382, 2369942, -124, 41, 89, -3 23 -2 321 87 42 90 -123 – initial values swap 1(-2) and 3(87) ▼ 23 87 321 -2 42 90 -123 swap 3(-2) and 6(-123) ▼ 23 87 321 -123 42 90 -2 swap 1(87) and 0(23) ▼ 87 23 321 -123 42 90 -2 multiply 1(23) 2(321) = 7383 ▼ 87 7383 321 -123 42 290 -2 multiply 2(321) 1(7383) = 2369943 ▼ 87 7383 2369943 -123 42 90 -2 decrease – all - 1 ▼ 86 7383 2369942 -124 41 89 -3 1 2 3 4 swap 0 1 swap 1 2 swap 2 3 multiply 1 2 decrease end 1, 11, 3, 0

Решение 0/100

array = input().split()
command = input().split()
amount = 0
new_array = []

while not command == "end":
if command[0] == "swap":
array[int(command[1])], array[int(command[2])] = array[int(command[2])], array[int(command[1])]
elif command[0] == "multiply":
amount = int(array[int(command[1])]) * int(array[int(command[2])])
array.remove(array[int(command[1])])
array.insert(int(command[1]), str(amount))
elif command[0] == "decrease":
for item in array:
new_array.append(int(item) - 1)
command = input().split()
if command[0] == "end":
break
print(", ".join(map(str, new_array)))

Решение 40/100

array = input().split()
command = input().split()
amount = 0
while not command == "end":
if command[0] == "swap":
array[int(command[1])], array[int(command[2])] = array[int(command[2])], array[int(command[1])]
if command[0] == "multiply":
amount = int(array[int(command[1])]) * int(array[int(command[2])])
array.insert(int(command[1]), str(amount))
array.remove(array[int(command[2])])
if command[0] == "decrease":
decreased_array = [int(x)-1 for x in array]
if command[0] == "end":
break
command = input().split()
print(", ".join(map(str, array)))

Предварително благодаря за отделеното време и направените усилия!

Тагове:
0
08/07/2020 14:25:30
KALOYAN_123 34 Точки

Здравей проблемът ти е, че очакваш всеки тест да има командата "decrease" и съответна при тест без тази команда променливата ти new_array остава празна

Пример:

 0 1 2 3 4 5 swap 0 4

ще ти принтира празен ред.

Затова реших, че ще бъде по-лесно да използваш map() и lamda за да намалиш всяко едно число по отделно и вместо да правиш нов лист просто да намаляш всяко число от вече съществуващия, защото накрая ако има някаква друга команда след "decrease" тя няма да се отрази на new_array.

Ето го и завършеното решение: https://pastebin.com/HdMkDfbh

0
08/07/2020 14:52:48
nd_nikolov 7 Точки

Много ти благодаря! Абсолютно прав си!

0
Xpuck0 69 Точки

Здравей,

Недей да правиш нов лист. В решението ти с 40 точки в decrease смени името на променливата

array = [int(x)-1 for x in array]

multiply също ти е тотал щета. Просто трябва числото на дадения първи индекс да го умнижиш с числото от втория индекс и да го презапишеш. Може и по твоя начин, но е много излишно и дори инсъртваш и триеш на грешните места.

Иначе кода е за пълна оптимизация. Разгледай това решение и проучи и научи нещата, които не ги разбираш.

Успех!

0
08/07/2020 15:17:16
nd_nikolov 7 Точки

Благодаря!

0
Nayden_92 1 Точки

Привет , може ли малко хелп. Не мога да направя командите правилно и да стигна до правилно решение

0
Pe6ko13 8 Точки

https://pastebin.com/1rpGR63x

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.