Тема: задача 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%.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Python → задача 8619 з e-olymp
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Задача - https://www.e-olymp.com/uk/problems/8619
Мій код:
n = str(abs(int(input())))
if n == sorted(n):
print("YES")
else:
print("NO")
Проблема в тому, що проходить тільки на 90%.
А при яких даних цей код узагалі може вивести "YES"?
При будь-якому числу, цифри якого ідуть в порядку зростання
Нащо ви так тупо брешете? Ви взагалі цей код запускали?
Нащо ви так тупо брешете?
Я не брешу
Ви взагалі цей код запускали?
Запускав. Спробував багато варіантів і все працює
Вибачте
Щось пішло не так і я скінув код без list-a
Чесно - не знаю як так вийшло
Моя програма виглядає так:
n = list(str(abs(int(input()))))
if n == sorted(n):
print("YES")
else:
print("NO")
Тому і здивувався коли в вас не працювало, а в мене все було нормально
І ви вибачте. Вчора реально поганий настрій мав.
Проблема та сама, що й в попередньому питанні - там зростання, а не неспадання. Перевіряйте ще, що немає однакових знаків.
Ну і взагалі раджу вам взяти за правило обгортати розв'язок в окрему функцію, на кшталт
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")
Просто для порядку.
Ну і взагалі раджу вам взяти за правило обгортати розв'язок в окрему функцію, на кшталт
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?
Дякую, що помітили. Редагував на ходу — він спершу YES чи NO повертав, але це некрасиво. Ще й двокрапку не прибрав.
-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"
Перше:
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.
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися