09. Pokemon Don't Go
Имам проблем със задачата. Judge гърми на два теста. Hещо съм пропуснал, но не виждам какво е.
Задачата: https://softuni.bg/trainings/resources/officedocument/43665/exercise-lists-arrays-advanced-java-fundamentals-september-2019/2440
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;
public class PokemonDontGo09 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<Integer> inputNumbers = Arrays.stream(scanner.nextLine().split("\\s+"))
.map(Integer::parseInt)
.collect(Collectors.toList());
int sum = 0;
while (inputNumbers.size() > 0) {
int index = Integer.parseInt(scanner.nextLine());
boolean flag = false;
if (index < 0) {
index = 0;
inputNumbers.remove(index);
inputNumbers.add(index, inputNumbers.get(inputNumbers.size() - 1));
flag = true;
}
else if (index > inputNumbers.size() - 1) {
index = inputNumbers.size() - 1;
inputNumbers.remove(index);
inputNumbers.add(inputNumbers.get(0));
flag = true;
}
int numberAtIndex = inputNumbers.get(index);
sum += inputNumbers.get(index);
if (!flag){
inputNumbers.remove(index);
}
for (int i = 0; i < inputNumbers.size(); i++) {
if (inputNumbers.get(i) <= numberAtIndex) {
int newIncrease = numberAtIndex + inputNumbers.get(i);
inputNumbers.set(i, newIncrease);
} else {
int newDecrease = inputNumbers.get(i) - numberAtIndex;
inputNumbers.set(i, newDecrease);
}
}
}
System.out.println(sum);
}
}
Благодаря!!
Здравейте,
Може ли малко помощ за същата задача но на Python. Дава ми 90/100 и не мога да разбера какво пропускам.
Благодаря предварително !
numbers = list(map(int, input().split())) sum_value = 0 while numbers: index = int(input()) removed_elem = 0 if index < 0: removed_elem = numbers[0] numbers[0] = numbers[-1] elif index >= len(numbers): removed_elem = numbers[-1] numbers[-1] = numbers[0] else: removed_elem = numbers[index] numbers.remove(removed_elem) sum_value += removed_elem for i in range(len(numbers)): if numbers[i] <= removed_elem: numbers[i] += removed_elem else: numbers[i] -= removed_elem print(sum_value)@astankin
Грешката е на този ред:
Ако проверите документацията, ще откриете, че list.remove(x) "Remove the first item from the list whose value is equal to x.".
По условие трябва да премахнем елемент от конкретен индекс, а горната команда не ни гарантира това, aко има повече от един елемент с търсената стойност.
Трябва да се използва
list.pop([i]), която "Remove the item at the given position in the list, and return it":