1

Тема: задача 8619 з e-olymp

Задача - https://www.e-olymp.com/uk/problems/8619
Мій код:

n = str(abs(int(input())))
if n == sorted(n):
    print("YES")
else:
    print("NO")

Проблема в тому, що проходить тільки на 90%.

2

Re: задача 8619 з e-olymp

А при яких даних цей код узагалі може вивести "YES"?

3

Re: задача 8619 з e-olymp

При будь-якому числу, цифри якого ідуть в порядку зростання

4 Востаннє редагувалося koala (16.08.2019 20:10:25)

Re: задача 8619 з e-olymp

Нащо ви так тупо брешете? Ви взагалі цей код запускали?

5

Re: задача 8619 з e-olymp

koala написав:

Нащо ви так тупо брешете?

Я не брешу

koala написав:

Ви взагалі цей код запускали?

Запускав. Спробував багато варіантів і все працює

6

Re: задача 8619 з e-olymp

Вибачте
Щось пішло не так і я скінув код без list-a
Чесно - не знаю як так вийшло
Моя програма виглядає так:

n = list(str(abs(int(input()))))
if n == sorted(n):
    print("YES")
else:
    print("NO")

Тому і здивувався коли в вас не працювало, а в мене все було нормально

7

Re: задача 8619 з e-olymp

І ви вибачте. Вчора реально поганий настрій мав.
Проблема та сама, що й в попередньому питанні - там зростання, а не неспадання. Перевіряйте ще, що немає однакових знаків.

8 Востаннє редагувалося koala (19.08.2019 12:47:23)

Re: задача 8619 з e-olymp

Мінімальне виправлення вашого коду:

-if n == sorted(n):
+if n == sorted(n) and len(n)==len(set(n)):

А серйозніше - то

n = list(map(int,input()))
if any( a>=b for a,b in zip(n,n[1:]) ):
    print("NO")
else:
    print("YES")
Подякували: leofun01, /KIT\, Eff1c3

9 Востаннє редагувалося koala (19.08.2019 13:35:49)

Re: задача 8619 з e-olymp

Ну і взагалі раджу вам взяти за правило обгортати розв'язок в окрему функцію, на кшталт

def digits_increasing(array: list) -> bool:
    return all( a<b for a,b in zip(array, array[1:]) )

a = list(map(int, str(abs(int(input())))))
print("YES" if digits_increasing(a) else "NO")

Просто для порядку.

Подякували: Eff1c1

10

Re: задача 8619 з e-olymp

koala написав:

Ну і взагалі раджу вам взяти за правило обгортати розв'язок в окрему функцію, на кшталт

def solve(array: list) -> str:
    return all( a<b for a,b in zip(array, array[1:]) ):

a = list(map(int, str(abs(int(input())))))
print("YES" if solve(a) else "NO")

Просто для порядку.

хмм. хіба solve повертає тип str?

Подякували: leofun01, koala, Eff1c3

11 Востаннє редагувалося koala (19.08.2019 13:35:15)

Re: задача 8619 з e-olymp

Дякую,  що помітили. Редагував на ходу — він спершу YES чи NO повертав, але це некрасиво. Ще й двокрапку не прибрав.

12

Re: задача 8619 з e-olymp

koala написав:
-if n == sorted(n):
+if n == sorted(n) and len(n)==len(set(n)):
n = list(map(int,input()))
if any( a>=b for a,b in zip(n,n[1:]) ):
    print("NO")
else:
    print("YES")

Спробував обидва варіанта
Обидвоє видають 10% правильних відповідей (решта 90% - помилки)

def digits_increasing(array: list) -> bool:
    return all( a<b for a,b in zip(array, array[1:]) )

a = list(map(int, str(abs(int(input())))))
print("YES" if digits_increasing(a) else "NO")

Запрацював лише цей код.
Дуже дякую  :)
P's. Поясніть будь ласка що робить "-> bool"

13 Востаннє редагувалося koala (19.08.2019 17:33:19)

Re: задача 8619 з e-olymp

Перше:

n = list(str(abs(int(input()))))
if n == sorted(n) and len(n)==len(set(n)):
    print("YES")
else:
    print("NO")

100%
Друге:

n = list(map(int,str(abs(int(input())))))
if any( a>=b for a,b in zip(n,n[1:]) ):
    print("NO")
else:
    print("YES")

100%
Я мав на увазі, щоб ви ідею глянули, а ці загони із від'ємними числами на сайті не враховував.

def digits_increasing(array: list) -> bool:
Це підказки типів, type hints. Вони дозволяють програмісту, а також різним додатковим засобам виявляти помилки (наприклад, спробу запхати в функцію стрічку замість списку), але не впливають на виконання програми. Тут позначено, що функція приймає параметром list, а повертає bool.

Подякували: Eff1c1