# оригинальное тестовое задание
От: мыщъх США http://nezumi-lab.org
Дата: 07.08.12 04:27
Оценка: 17 (4) +2
просьба ногами не бить, а если и бить, то не больно. и не всем сразу, а по очереди.

знаю, что вы мы ищем тестовые задания, которые можно написать минут за полчаса и которые определяют профпригодность кандидата, причем покрывают широкий профиль общих вопросов и при этом не приводятся в качестве примеров наглядной агитации в каждом втором букваре.

вот тут жизнь подкинула интересную тему, сносящую крышу и отсутствующую в гугле. захотелось найти средство для замены пробелов в скриптах на питоне на символы табуляции. вопрос задавался 100500 раз, но каждый раз на него давались ответы в стиле "emacs это не только ценный мех" или "в vim'е это делается одним жестом руки" и предлагалось заменять четыре (!) пробела одним символом табуляции.

что за бред?! в питоне не настолько жестко специфицированная система отступов. не обязательно четыре. если текущий уровень вложенности имеет M отступов, то следующий уровень вложенности N, где M < N, а вот для выхода из N нужно отступить на M пробелов. кстати, в руководстве на питон это доходчиво описано и даже даются подсказки как реализовать парсер.

впрочем, тут не обходится без подводных камней, на которых обламывается даже плагин colorer для FAR'а, который воспринимает """ xxxx \"""" как комментарий, забывая о том, что '\"' обрабатывается особым образом.

короче, предлагаю кандидату (особенно на роль сеньора) написать скрипт, заменяющий пробелы символами табуляции (и, в качестве бонуса, обрабатывающий скрипты где есть и то, и другое), а затем проверить его программу на следующем примере. если она не развалится, то смело можно брать:


# http://docs.python.org/reference/lexical_analysis.html
def perm(l):
        # Compute the list of all permutations of l
    if len(l) <= 1:
                  return [l]
    r = []
    for i in range(len(l)):
             s = l[:i] + l[i + 1:]
             p = perm(s)
             """ hello, world !
                     of rasta/ \"""
             """
             for x in p:
              r.append(l[i : i + 1] + x)
              if 1 == 1:
                       if  6  == 999:
                         if 9 == 666: pass
    return r
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.