1

Тема: Красивий код...

Останнім часом задумався над тим чи правильно я пишу код.
Просто побачив код koala, чи схожий код /KIT\ -та і порівнявши з своїм, зрозумів, що різниця надзвичайно велика.
Ось приклад коду  koala:

input();print(' '.join(str(x[0]) for x in sorted(enumerate(map(int,input().split()),1),key=lambda x:x[1])))

Ось приклад мого коду до схожої задачки (задачка не та ж сама, але схожа):

def min(el_1, el_2):
    if el_1 <= el_2:
        return 0
    else:
        return 1

def do(n, inp, lich_2):
    for i in range(n - 1):
        if min(inp[i], inp[i+1]) == 1:
            t = inp[i]
            inp[i] = inp[i+1]
            inp[i+1] = t
            lich_2 += 1
    return inp, lich_2

n = int(input())
lich_1, lich_2 = 1, 0
inp = list(map(int,input().split()))
x_list = sorted(inp)
while inp != x_list:
    inp, lich_2 = do(n, inp, lich_2)
    lich_1 += 1
print(lich_1, lich_2)

Тут я думаю, або мені писати код так як і зараз пишу, а те все прийде з часом і досвідом, або зараз потрібно перестати розв'язувати задачки,навчитись так кодити і тільки тоді продовжити.
Цікава ваша думка.
Якщо потрібно ось посилання на задачки:
koala - https://www.codeabbey.com/index/task_vi … ndexes--ru
Моя - https://www.codeabbey.com/index/task_vi … e-sort--ru
(Ще раз скажу, що вони дуже схожі)

2

Re: Красивий код...

Писати, звісно! Немає іншого способу навчитися щось робити, окрім як робити це (ну і читати розумні книжки корисно).
І ви дарма на цей мій код як на взірець дивитеся. Конкретно це - дуже неправильний код; хіба що компактний.

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

3

Re: Красивий код...

Ніколи не розумів категорії краса відносно кода. Що це таке краса, це зручність читання? Чи може швидкість роботи коду? Чи може якісь пєрєподвиподвєрти? Хотілось би побачити відповіді на ці питання не тільки від ТС а й від пана Коали.

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

4 Востаннє редагувалося ping (28.12.2018 10:05:07)

Re: Красивий код...

однозначно - писати.
на тому ж www.codeabbey.com можна підглянути - як рішили інші.
писати своє, тоді підглядати рішення інших i переймати кращі / красивіші / ефективніші методи.
допоки дійдете до сертифіката - здається 126 задач- код стане невпізнанним від нинішнього )))

ось так виглядало моє рішення кілька років тому:

s='100 309 709 157 513 357 872 761 817 469 603 554 208 262 55 415 651'
r=s.split(' ')
o=s.split(' ')

i=0
while i+1<len(r):
    if int(r[i])>int(r[i+1]):
        r[i], r[i+1]=r[i+1], r[i]
        i=0
    else:
        i+=1
for i in r:
    print(o.index(i)+1, end=' ')
Подякували: Eff1c1

5

Re: Красивий код...

Всім дуже дякую   :)
Було дуже важливо почути вашу думку  ;)

6

Re: Красивий код...

Писати код треба так щоб він працював і щоб в ньому можна було легко розібратись )

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

7

Re: Красивий код...

В широкому розумінні красивий код для мене це такий, який максимально легко читається та розуміється.
Рідше так можна назвати якесь елегантне неочевидне рішення.

Супер оптимізаця найчастіше получається прямо протилежна красі, але тому і оптимізувати треба вже по потребі

8

Re: Красивий код...

sensei написав:

Супер оптимізаця найчастіше получається прямо протилежна красі, але тому і оптимізувати треба вже по потребі

Ну чому ж, з вербозності далеко не завжди випливає читабельність. Краще коротко і влучно, ніж довго і з багатослівним розжовуванням самоочевидних речей. Ідеал — це коли код і короткий, і зрозумілий — дуже часто з цього ж випливає і його оптимальність.

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

9

Re: Красивий код...

Так я з вами і згідний. Код має бути максимально коротким не втрачаючи простоти сприйняття.
Щоб не кидатись з крайності в крайність від надлишкового розжовування до однострічкових рішень