02. The Lift - получавам 70 точки
Здравейте,
Ще се радвам ако мога да получа малко помощ за задачата 02. The Lift (https://judge.softuni.org/Contests/Practice/Index/2517#1). Получавама 70 точки и не мога да разбера какво бъркам.
Накратко правя променливи - free_spaces, in_wagon, с if разделям на празни и вагони в които има хора, след това с if разделям ако чакат да се качат повече от 4 души.
people = int(input())
array_wagons = [int(i) for i in input().split()]
wagon_list = []
in_the_train = 0
MAX_PEOPLE = 4
flag = False
for wagon in array_wagons:
free_spaces = MAX_PEOPLE - wagon
in_wagon = MAX_PEOPLE-free_spaces
if wagon == 0: # Free Wagon
if people >= 4:
wagon_list.append(free_spaces)
people -= free_spaces
else:
wagon_list.append(people)
people -= people
elif wagon != 0:
if people + in_wagon >= 4:
wagon_list.append(in_wagon + free_spaces)
people -= 4 - in_wagon
else:
wagon_list.append(people)
people -= 4 - in_wagon
wagon_list = ' '.join(map(str, wagon_list))
if people > 0:
print(f"There isn't enough space! {people} people in a queue!")
print(wagon_list)
else:
print(f"The lift has empty spots!")
print(wagon_list)
Благодаря за отговора!
Добавих логиката, която споменаваш и за съжалание от 70 качих на 80 точки и пак нещо не е както трябва. Разбирам, че кода ми не е перфектен но ми се искаше да мога да избутам задачата сам и от там да надграждам в по-опростено решение.
Това е актуалния код, с 80 точки, ако някои забележи какво още се чупи ще се радвам да каже.
people = int(input()) array_wagons = [int(i) for i in input().split()] wagon_list = [] in_the_train = 0 MAX_PEOPLE = 4 flag = False for wagon in array_wagons: free_spaces = MAX_PEOPLE - wagon in_wagon = MAX_PEOPLE-free_spaces if wagon == 0: # Free Wagon if people >= 4: wagon_list.append(free_spaces) people -= free_spaces else: wagon_list.append(people) people -= people elif wagon != 0: if people + in_wagon >= 4: wagon_list.append(in_wagon + free_spaces) people -= 4 - in_wagon else: wagon_list.append(people) people -= 4 - in_wagon passengers = sum(wagon_list) max_capacity = len(wagon_list)*4 wagon_list = ' '.join(map(str, wagon_list)) if people > 0: print(f"There isn't enough space! {people} people in a queue!") print(wagon_list) elif max_capacity != passengers: print(f"The lift has empty spots!") print(wagon_list) else: print(wagon_list)Щом искате сам да се справиите със задачата, ето входни данни, с които решението не работи коректно:
Правилният отговор е:
Благодаря, за съдействието, но нещо пак не излиза. Оправих този вход който бяхте посочили, но продължавам да получавам 80/100. Вашия код изглежда много добре, но оператора |= не мога да му разбера съвсем действието.
Това е актуалната версия на моя код след поправката по входа, който ми дадохте.
people = int(input()) array_wagons = [int(i) for i in input().split()] wagon_list = [] in_the_train = 0 MAX_PEOPLE = 4 flag = False for wagon in array_wagons: free_spaces = MAX_PEOPLE - wagon in_wagon = MAX_PEOPLE-free_spaces if wagon == 0: # Free Wagon if people >= 4: wagon_list.append(free_spaces) people -= free_spaces else: wagon_list.append(people) people -= people elif wagon != 0: if people + in_wagon >= 4: wagon_list.append(in_wagon + free_spaces) people -= 4 - in_wagon else: wagon_list.append(people+in_wagon) people -= 4 - in_wagon passengers = sum(wagon_list) max_capacity = len(wagon_list)*4 wagon_list = ' '.join(map(str, wagon_list)) if people > 0: print(f"There isn't enough space! {people} people in a queue!") print(wagon_list) elif max_capacity != passengers: print(f"The lift has empty spots!") print(wagon_list) else: print(wagon_list)