Loading...
RStanimirov avatar RStanimirov 10 Точки

Paint Colours from Stacks-Queuse-Tuples-Sets-Exercise, Python Advanced Jan 2022

Здравейте, на пръв поглед лесна задача, но ме затрудни. Най-накрая стигнах до решение (https://pastebin.com/77W4tsCk), което изкарва верните отговори, но в Джъдж дава само 50 точки. Условието на задачата е https://judge.softuni.org/Contests/Compete/Index/3159#5.

Ще се радвам, ако някой предложи някое по-изчистено решение, и най вече работещо 100/100 :)

Поздрави,

 

0
Module: Python Advanced
icowwww avatar icowwww 2813 Точки

Здравей,

Реших да оправя твоето, а да не ти покажа работещо изчистено.

Промених 2 неща:

1. В while цикъла в else имаш грешка ред 35:

if left_str:
    raw_string.insert(len(right_str)//2, left_str)
if right_str:
    raw_string.insert(len(raw_string)//2, right_str)
Трябва да е raw_string

2. В цикъла накрая for x in all_colours:

Когато търсиш дали secondary colour има нужните цветове от главните трябва да промениш проверката на ред 52

if k in colours_secondary:

на

if k == x:

За да търсиш точно за този цвят, на който отговаря текущата итерация на масива с цветовете

https://pastebin.com/qvdhd0p3

 

 

 

0
RStanimirov avatar RStanimirov 10 Точки

Ами да, аз съм за бой, благодаря ти, че откри тези две грешки. Вчера така се бях омотал във формирането на съставните цветове (secondary colours)... исках да изведа решение за съставните цветове непременно с key, value от речника secondary_fromation_dict. Иначе, и по-опростена логика с булеви върши чудесна работа:

result = []

for x in all_colours:
    if x in colours_main:
        result.append(x)
    else:
        is_valid = True
        for y in secondary_formation_dict[x]:
            if y not in all_colours:
                is_valid = False
        if is_valid:
            result.append(x)

print(result)

 

0
icowwww avatar icowwww 2813 Точки

Да, има много възможни начини за опростяване. 

Аз бих използвал issubset за проверя дали елементите от единия масив се съдържат в другия и бих обединил условията, които извършват еднакво действие:

for x in all_colours:
    if x in colours_main or set(secondary_formation_dict[x]).issubset(set(all_colours)):
        result.append(x)

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