Pull to refresh

Comments 26

Мангусты ему не страшны
Здорово! Как раз задачу для собеседования искал)
И какую задачу решает решающий эту задачу?
Решающий ничего не решит, но может продемонстрировать нетривиальные знания языка и умение разбираться в чужом коде. Можете минусовать.
Ого. Да я бы сказал, что вообще не поняли) Не думал сарказм настолько неуловимый.
Ну два плюса то вам поставили, значит кто-то кроме меня понял шутку =)
Она как-раз в тему про «невозможные вопросы на собеседованиях»
Но больше тех, кто получил психологическую травму на собеседованиях)
Дальше можно не разбираться, ибо модуль «os» имеет только один метод, начинающийся на «wr» и это, очевидно, write

А напрасно, как раз в этом месте ломается совместимость программки. Можно было бы сделать её немного хитрее, чтобы она работала и в python2 и в python3. Разница в названии класса:
# python2
In [4]: ().__iter__().__class__.__name__
Out[4]: 'tupleiterator'

# python3
In [4]: ().__iter__().__class__.__name__
Out[4]: 'tuple_iterator'

Да, и в python3 помимо os.write() есть os.writev().

Спасибо за статью, познавательная. Пытался разгадывать параллельно, но застрял на лямбдах.
Добавил примечание о версиях, благодарю.
Некст левел:
`[`'%\xcb'`[{}<[]::~(~({}<[])<<({}<[]))]%(((~(~(~(~(({}<[])<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))),`'%\xcb'`[{}<[]::~(~({}<[])<<({}<[]))]%((((~(~(~(~({}<[])<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))),`'%\xcb'`[{}<[]::~(~({}<[])<<({}<[]))]%(~(~(~(~((~(~({}<[])<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))),`'%\xcb'`[{}<[]::~(~({}<[])<<({}<[]))]%((((((({}<[])<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))),`'%\xcb'`[{}<[]::~(~({}<[])<<({}<[]))]%(~(((~((~(~({}<[])<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))),`'%\xcb'`[{}<[]::~(~({}<[])<<({}<[]))]%(~(~((((~(~({}<[])<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))),`'%\xcb'`[{}<[]::~(~({}<[])<<({}<[]))]%(~(~(~((~(~(~({}<[])<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))),`'%\xcb'`[{}<[]::~(~({}<[])<<({}<[]))]%(~(~(~(~((~(~({}<[])<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))),`'%\xcb'`[{}<[]::~(~({}<[])<<({}<[]))]%((((((({}<[])<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))),`'%\xcb'`[{}<[]::~(~({}<[])<<({}<[]))]%(~(~((~(~(~(~({}<[])<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))),`'%\xcb'`[{}<[]::~(~({}<[])<<({}<[]))]%(~((~((~((~({}<[])<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))),`'%\xcb'`[{}<[]::~(~({}<[])<<({}<[]))]%((((((({}<[])<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))),`'%\xcb'`[{}<[]::~(~({}<[])<<({}<[]))]%(~((((~(~(~({}<[])<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))),`'%\xcb'`[{}<[]::~(~({}<[])<<({}<[]))]%((~(((~(~(~({}<[])<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))),`'%\xcb'`[{}<[]::~(~({}<[])<<({}<[]))]%((~(((~(({}<[])<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[]))<<({}<[])))]`[(({}<[])<<({}<[]))::~(~(({}<[])<<({}<[]))<<({}<[]))]

(взято отсюда). Ну или здесь попроще :)
А я недавно на checkio решал одно из заданий и написал писал такую штуку (вдохновлялся похожей идеей, реализованной на Perl, плюс стрельнул у одного чувака часть кода, которая регистрирует название функции). Писал на Python 3.

(lambda _: globals().__setitem__(_.lower().translate(dict(enumerate(('_', None),
1<<5))), lambda: _))((lambda _: ''.join([chr(int(''.join([len(s).__str__() for s
in''.join(_.split()).split('O')][i:i+15:5]))-111)for i in range(4,210,15)]))("""
                0O0O0O0O0O0O0O0O0      O000         00000O0O0O
               0O0O0000O0O0O0O0O0     O0O0O0        O0O0000O0O0
               O0O0      O00         0O0  O0O       0O0     O00
                O0O0     O0O        0O0    O0O      0O0O0O0000
                 0000    0O0       O0O0O0O00O0O     0O0  O0O0
        0O0O0O0O0O00     O0O      0O0O0O00O0O0O0    O0O   00O0O0O0O0O0
        00000000O0O      0O0     O0O0        0O0O   0O0    O0O0O0O0O0O
​
        0O00O   OO0O   0O0O0   O0O0         O0O0000O0O      OO0O000O0O
         0O0O0 O0O0O0 O0O0O   000000        000O0OO0O0O    0O0O0O0O0O0
          0O0O0O0O0O000O0O   OO0  O00       O0O     0O0    O0O00
           O0O0O0OO00O0O0   O0O    O00      00000O0O0O      0O0O0
            0O0O0  O0O0O   0O0O0O0O0O00     000  O0O0        O0O0O
             00O    OOO   O00OO0OO0O00OO    OOO   00O0OOOO00OOOOO0
              O      O   OOO0        OOOO   O00    00OO0O0O0O0000
"""))

Это получается для python 3.4 можно написать вот так:

def recursive_print(number):
    if number:
        print(chr(number % 256), end="")
        recursive_print(number // 256)
    else:
        return

recursive_print(882504235958091178581291885595786461602115)


?
Да, а что вас смущает? Вообще else: return здесь лишнее. Да и лучше делать без рекурсии:

while number:
    print(chr(number % 256), end="")
    number //= 256


А вообще, на python2 это можно сконвертировать совсем просто:
print ("0%x" % 882504235958091178581291885595786461602115).decode("hex")[::-1]


Спасибо!
Я просто сразу не понял, думал, что есть некий сакральный смысл в подключении модуля «from os import write».

P.S. И красивое у вас решение.
Sign up to leave a comment.

Articles