121

Re: Потрібна допомога

Правда ваша. Ну що ж, всі помиляються, я не виняток. А що саме не зрозуміло?

122

Re: Потрібна допомога

koala написав:

Правда ваша. Ну що ж, всі помиляються, я не виняток. А що саме не зрозуміло?

Буває ;)
Мені трохи незрозумілий ось цей рядок

print(1 if abs(a-b)<c<a+b else 0, end=' ')

Я просто до цього ні разу не бачив функцій if, else в одному рядку (окрім як в ваших повідомленнях :) ), тому трохи не ясно я воно працює.

123

Re: Потрібна допомога

В Python є пара зручних скорочень. Якщо треба зробити

if умова:
  variable = значення1
else:
  variable = значення2

то можна написати просто

variable = значення1 if умова else значення2

Трохи змінюється послідовність виразів (значення1 іде перед if), зате дуже схоже на математичний запис.
У циклів є дещо схожа конструкція - генераторний вираз

(щось for змінна in ітератор)

Така конструкція дозволяє одразу створювати списки:

arr = int(x) for x in input().split()

Якщо якісь значення в генераторному виразі треба відфільтрувати, то треба додати if:

arr = int(x) for x in input().split() if int(x)%2==0

залишить лише парні значення.
Ну і нарешті треба сказати про деконструкцію:

[a,b,c]=arr

каже, що список arr треба розкласти на значення a,b і c (якщо в arr не 3 значення, буде помилка).
Іменований параметр end функції print задає символ, який треба виводити наприкінці, замість нового рядку.

Подякували: Eff1c, leofun012

124

Re: Потрібна допомога

Дуже дякую

125

Re: Потрібна допомога

koala написав:
triangles = int(input())
for _ in range(triangles): #нам не потрібен номер ітерації
    [a,b,c] = int(x) for x in input().split()
    print(1 if abs(a-b)<c<a+b else 0, end=' ')

Ось що вибиває  :)   

File "solution.py", line 4    [a,b,c] = int(x) for x in input().split()                       ^SyntaxError: invalid syntax

126

Re: Потрібна допомога

Так, вибачте.

[a,b,c] = [int(x) for x in input().split()]

чи навіть

a,b,c = [int(x) for x in input().split()]

Праворуч має бути список чи кортеж.

Подякували: Eff1c, leofun012

127

Re: Потрібна допомога

Дякую. Нарешті все запрацювало. А то більше години просидів, шукаючи свою помилку.

128

Re: Потрібна допомога

Почав вивчати Python і мені потрібна допомога
створити програму обчислення коренів квадратного рівняння. задачу виконати у вигляді діалогу з уведеням набору коефіцієнтів за допомогою клавіатури

129

Re: Потрібна допомога

vovaf14062000 написав:

Почав вивчати Python і мені потрібна допомога
створити програму обчислення коренів квадратного рівняння. задачу виконати у вигляді діалогу з уведеням набору коефіцієнтів за допомогою клавіатури

Краще б українську вивчили і правила прочитали.

130 Востаннє редагувалося Eff1c (20.09.2018 20:38:53)

Re: Потрібна допомога

Ну що ж, всім привіт :)  Давненько мене тут не було...
І в мене знов проблеми))
В даному випадку з розв'язком цієї задачі - https://www.e-olymp.com/uk/problems/2
Ось мій код

print(len(input()))


Проблема в тому, що для перевірки коду сайт дає кілька різних варіантів вхідних даних (в даному випадку 8 )
І 6 із 8 спроб закінчились успіхом, але інші 2...
В мене тільки одне припущення чому може бути помилка: в умові задачі вказано, що в вхідних даних "Одне ціле невід'ємне число n (0 ≤ n ≤ 2 ∙10^9)" і можливо, що ті 2 варіанта - дуже великі числа, які не можуть вміститися в максимальну довжину строки...Але це тільки припущення.
Цікаво почути ваші припущення на рахунок того, у чому може бути помилка і як її виправити.
Буду дуже вдячний ;)

131

Re: Потрібна допомога

>>> a="11 "
>>> int(a)
11
>>> len(a)
3

Не будьте розумнішими за умову. Сказано, що вводиться число - значить вводьте число.

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

132

Re: Потрібна допомога

До речі, ось вам ще одна задача: написати функцію, що приймає ціле число та повертає кількість символів у ньому без перетворення на стрічку.

133 Востаннє редагувалося ping (20.09.2018 21:41:12)

Re: Потрібна допомога

В мене тільки одне припущення чому може бути помилка: в умові задачі вказано, що в вхідних даних "Одне ціле невід'ємне число n (0 ≤ n ≤ 2 ∙10^9)" і можливо, що ті 2 варіанта - дуже великі числа, які не можуть вміститися в максимальну довжину строки...Але це тільки припущення.

все простіше.
https://i.imgur.com/8fWad0Ql.png

134

Re: Потрібна допомога

koala написав:
>>> a="11 "
>>> int(a)
11
>>> len(a)
3

Не будьте розумнішими за умову. Сказано, що вводиться число - значить вводьте число.

Дякую, виправив і все працює)

135

Re: Потрібна допомога

Наступна задача і знов проблеми...
https://www.e-olymp.com/uk/problems/3

n = int(input())
o = 12
for i in range(1, n):
    o = o + 8
print(o)

В чому може бути проблема?
З 13 перевірок - 2 правильні.

136 Востаннє редагувалося koala (22.09.2018 13:30:52)

Re: Потрібна допомога

Проблема в тому, що для 4 кубів потрібно 33 сірники.
Підозрюю, що треба зробити найближчий до N куб із сірників і доповнювати грані.

Прихований текст

Що там за малороси перекладали? Не вистачає фантазії - то вже писали б Саморобко чи Саморобок, а не "Самадєлкін".

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

137

Re: Потрібна допомога

koala написав:

Проблема в тому, що для 4 кубів потрібно 33 сірники.
Підозрюю, що треба зробити найближчий до N куб із сірників і доповнювати грані.

Прихований текст

Що там за малороси перекладали? Не вистачає фантазії - то вже писали б Саморобко чи Саморобок, а не "Самадєлкін".

Тобто 4 куба складаються, в квадратній формі, а не в пряму лінію?
Напряжно получається... Ну, буду думати...

138

Re: Потрібна допомога

Поки що підкажу лише, що операція

o = 12
for i in range(1, n):
    o = o + 8

настільки часто використовується в Python (та й в математиці взагалі), що отримала окрему назву і коротке позначення:

o=4+n*8
Подякували: Eff1c1

139 Востаннє редагувалося koala (22.09.2018 21:47:00)

Re: Потрібна допомога

не зазирати, правильна програма
def parallelogram_matches(x,y,z):
    return x*(y+1)*(z+1)+(x+1)*y*(z+1)+(x+1)*(y+1)*z

def side_matches(n):
    side = int(n**.5)
    if (side+1)**2==n:
        side += 1
    square_matches = 2*side*(side+1)+(side+1)**2
    if side**2==n:
        return square_matches
    if n-side**2<=side:
        return square_matches + 5 + 3*(n-side**2-1)
    else:
        return square_matches + 5 + 3*(side-1) + 5 + 3*(n-side**2-side-1)

def cube_matches(n):
    side = int(n**(1/3))
    if (side+1)**3==n:
        side+=1
    if side**3==n:
        return parallelogram_matches(side,side,side)
    if n <= side*side*(side+1):
        return parallelogram_matches(side,side,side)+side_matches(n - side**3)
    elif n<= side*(side+1)*(side+1):
        return parallelogram_matches(side,side,side+1)+side_matches(n - (side+1)*side**2)
    else:
        return parallelogram_matches(side,side+1,side+1)+side_matches(n - side*(side+1)**2)

код, швидше за все, можна скоротити в рази, але мені ліньки

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

140 Востаннє редагувалося /KIT\ (01.01.2022 01:18:09)

Re: Потрібна допомога

koala написав:

код, швидше за все, можна скоротити в рази, але мені ліньки

Challenge accepted (437 bytes)
pm=lambda x,y,z:x*(y+1)*(z+1)+(x+1)*y*(z+1)+(x+1)*(y+1)*z
def sm(n):s=int(n**.5);s+=1if(s+1)**2==n else 0;sq=2*s*(s+1)+(s+1)**2;return sq if s**2==n else(sq+5+3*(n-s**2-1)if n-s**2<=s else sq+5+3*(s-1)+5+3*(n-s**2-s-1))
def cube_matches(n):s=int(n**(1/3));s+=1if(s+1)**3==n else 0;return pm(s,s,s)if s**3==n else(pm(s,s,s)+sm(n-s**3)if n<=s*s*(s+1)else(pm(s,s,s+1)+sm(n-(s+1)*s**2)if n<=s*(s+1)*(s+1)else pm(s,s+1,s+1)+sm(n-s*(s+1)**2)))
Подякували: ostap34PHP, Eff1c2