
Gennady
16.02.2018
21:06:44

Alexander
16.02.2018
21:07:00
Какая разница, если ты не понимаешь суть программирования? Питон - это синтаксис и особенности подхода. Ты же говоришь, что ты вообще ничего не знаешь.

Denis
16.02.2018
21:09:39
Если есть какой-то опыт программирования, основы питона за две пары учатся

ノルズウルフ
16.02.2018
21:10:02
Check out "SoloLearn: Learn to Code for Free"
https://play.google.com/store/apps/details?id=com.sololearn

Google

ノルズウルフ
16.02.2018
21:10:09
Поможет
Да и на YouTube есть качественные каналы по изучению

Alexander
16.02.2018
21:11:11
Чот на хакатон захотелось...
?

Tigran
16.02.2018
21:12:08
Блэд, что я сделал
>>> ++++_++_++++++_-_++++_+_+-+_+_++++++_+-+_++-_+--+_-+--_-_++++_---_-+_--++--_
'HI.THERE.RUPYTHON!'

Nougatman
16.02.2018
21:12:20
А потом удивляются говнокоду пыхеров

Tigran
16.02.2018
21:12:47
>>> from morse import *
>>> _ = Morse()
>>> ++++_++_++++++_-_++++_+_+-+_+_++++++_+-+_++-_+--+_-+--_-_++++_---_-+_--++--_
'HI.THERE.RUPYTHON!'

Сонячний єнот
16.02.2018
21:13:27
Нужно будет сделать бота, который будет распознавать азбуку Морзе.
И наоборот.

Alexander
16.02.2018
21:14:55
пфффф
чо там делать-то? )

Сонячний єнот
16.02.2018
21:15:20

Alexander
16.02.2018
21:16:19
Там главное - словарь вручную заполнить

Google

Сонячний єнот
16.02.2018
21:21:27

Alexander
16.02.2018
21:21:54
Вон оно чо.

Tigran
16.02.2018
21:22:57
В общем, наслаждайтесь:
https://gist.github.com/Saluev/c07bef8ffa7290345b0c816fed2ca418

Alexander
16.02.2018
21:23:19
Откуда они плюсики взяли?

Сонячний єнот
16.02.2018
21:23:46

Tigran
16.02.2018
21:23:57
Я ж не про кодирование-декодирование, я про прикол с
++++_++_++++++_-_++++_+_+-+_+_++++++_+-+_++-_+--+_-+--_-_++++_---_-+_--++--_

Alexander
16.02.2018
21:24:53
А чем точки не понравились? )

Сонячний єнот
16.02.2018
21:25:23

Tigran
16.02.2018
21:25:37
Ну, с точками валидный код на Питоне не получится

Alexander
16.02.2018
21:26:52
Я передумал. Не буду писать бота. Лень.
Но вот
https://pastebin.com/dbTTQEMS

Tigran
16.02.2018
21:28:04
Теоретически можно замутить тьюринг-полное подмножество питона из трёх символов: +, - и _.
(При условии предварительного _ = SomeObject()).

Ibh
16.02.2018
21:31:01
а мне интересно, почему в питоне нет конструкции switch/case. в некоторых случаях было бы удобнее писать чем огороды городить со словарями или if/elif

Tigran
16.02.2018
21:31:55
В С/С++ она транслируется в очень быстрый jump по указателю из таблицы. В Питоне так оптимизировать не получится, так что и конструкция эта не нужна.

Сонячний єнот
16.02.2018
21:33:04

Tigran
16.02.2018
21:33:48
Словари? Это как?
Ну предложи конкретный кейс, и я покажу, как это на питоне переписать.

Ibh
16.02.2018
21:33:54
def f(x):
return {
'a': 1,
'b': 2
}.get(x, 9)

Google

Tigran
16.02.2018
21:34:07
Отличный пример, кстати.
Даже с дефолтом!

Artem
16.02.2018
21:34:20

Сонячний єнот
16.02.2018
21:34:28

Ibh
16.02.2018
21:34:32
https://simonwillison.net/2004/May/7/switch/

Tigran
16.02.2018
21:34:51

Сонячний єнот
16.02.2018
21:35:01

Ibh
16.02.2018
21:35:18

Tigran
16.02.2018
21:35:22
print({100: 100}.get(Var, deflt))

Artem
16.02.2018
21:35:55
if var == 100: print(100)
if var == 100: print(100)
if var == 100: print(100)
if var == 100: print(100)
if var == 100: print(100)
Достаточно много кейсов?

Сонячний єнот
16.02.2018
21:36:41
Баюсь, баюсь, пойду прасрусь

Ibh
16.02.2018
21:39:48
switch(mode)
case 0:
result = do_something1()
if result
mode = 1
else
mode = 2
break
case 1:
result = do_something2()
if result
mode = 2
else
mode = 3
break
case 2:
result = do_something3()
if result
mode = 3
else
mode = 0
break
default:
mode = 0
case 3,4,5... и так далее
с if/elif видуальная мешанина получается

Tigran
16.02.2018
21:41:03
а как же class State, вот это вот всё

Google

Ibh
16.02.2018
21:41:26
всё хуже. я сишник, микроконтроллерщик, драйверописатель. там это постоянно

Alexander
16.02.2018
21:41:32

Ibh
16.02.2018
21:41:44

Tigran
16.02.2018
21:41:53
в твоём случае элементарно:
{0: do_something1, 1: do_something2, 2: do_something3}[mode]() ...

Вова, Usopp
16.02.2018
21:42:06
но 1с же делает битрикс...

Tigran
16.02.2018
21:42:13
это полезно, да

Sadness
16.02.2018
21:43:32
у него тут оказываеться профессиональное сообщество..

Tigran
16.02.2018
21:44:05
?

Ibh
16.02.2018
21:44:06

Sadness
16.02.2018
21:44:18
господа. а есть ли среди вас те кто в настоящий момент проходит 3ий запуск Ml_open?

Ibh
16.02.2018
21:44:21
как-то привык к сишной простоте

Sadness
16.02.2018
21:44:57
?
да ты там вчера послал к нам одного..

Вова, Usopp
16.02.2018
21:45:16
тут же явно 123 и 230

Tigran
16.02.2018
21:45:56
к вам - это в бегиннерс, что ли? )

Sadness
16.02.2018
21:46:13

Tigran
16.02.2018
21:46:30

Sadness
16.02.2018
21:54:15
я смотрю профессиональное сообщество профессионально молчит. никто не хочет признаваться что в третий раз пытатьеся безуспешно попасть в рейтинг.

Google

Denis
16.02.2018
21:56:01

Sadness
16.02.2018
21:56:25
пишут бота телеграм

Tigran
16.02.2018
21:56:27
Я участвовал в CodeForces round и огорчён производительностью питона.

Denis
16.02.2018
21:56:47
Надо было на С++ писать

Ibh
16.02.2018
21:56:55
это полезно, да
ну в принципе красивее получается чем 100500 вложенных if-ов https://python-3-patterns-idioms-test.readthedocs.io/en/latest/StateMachine.html
хотя подозреваю что и памяти жрёт нормально


Tigran
16.02.2018
21:57:51
А ещё я постил лонгрид по результатам своих мучений на leetcode, но, кажется, его никто не стал читать
Дайте запилю кулстори. Я решаю задачки на leetcode и регулярно возникает потребность в сбалансированных деревьях (например, вот тут: https://leetcode.com/problems/the-skyline-problem/description/ - нужно быстро добавлять, удалять и находить максимум). Плюсовики хитро используют multiset, в питоне же деревьев с балансировкой нет, а реализовывать их ох как не хочется. Но обычно заранее известен перечень элементов, которые в это дерево надо будет засунуть. Поэтому я придумал такой лайфхак: я сортирую весь массив потенциальных элементов дерева и строю по нему сразу сбалансированное дерево (это тривиально):
def build_tree(array, l=None, r=None):
l = l or 0
r = r or len(array)
if r - l <= 0:
return None
if r - l == 1:
return Node(array[l])
m = (l + r) // 2
left = build_tree(array, l, m)
right = build_tree(array, m + 1, r)
return Node(array[m], left=left, right=right)
При этом я помечаю все элементы дерева как выключенные:
class Node(object):
def __init__(self, value, left=None, right=None):
self.value = value
self.enabled = False
self.has_enabled_successors = False
self.left = left
self.right = right
После этого остаётся вместо добавления элемента в дерево реализовать его включение (элементарная рекурсия), вместо удаления - выключение (тоже), и при других операциях (поиск элемента/поиск максимума/поиск минимума) учитывать включенность/выключенность. Вуаля, идеально сбалансированное дерево с log n операциями при миминуме умственного напряжения.
Может, у вас есть более вменяемые способы решать задачи на деревья без реализации балансировки?


Dmitriy
16.02.2018
22:01:23

Tigran
16.02.2018
22:01:47
не всегда...
Не всегда, но в задачках на codeforces, кажется, не стоит его использовать.
У меня было правильное решение с нужной асимптотикой, но после всех моих оптимизаций оно работало в три раза дольше лимита :(

Dmitriy
16.02.2018
22:02:21

Tigran
16.02.2018
22:02:43