Змея / Говнокод #28360 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
def decode_flag(event_states: str) -> bool:
    flag = 1 if int(event_states, 16) & 10_000_000_000_000_000 else 0
    return bool(flag)

Кусок из реального коммерческого проекта
Есть стринга из 8 символов - флагов (0 или 1), но нас интересует только 4 символ в ней

Запостил: lpjakewolfskin lpjakewolfskin, (Updated )

Комментарии (12) RSS

  • Стоять, но это же 5й символ (он же элемент с индексом 4)!

    Мне нравится, как типы проаннотировали, а внутри полную хуйню написали.
    Ответить
  • Зачем хранить число в строке?
    Ответить
      • Я знаю.
        Чтобы проще было кококонкатенировать с другими строками.
        Ответить
  • Функция всегда возвращает 0 т.к. константа справа всяко больше, чем 16**8?

    А нет, если константу перевести в хекс, то её хвост будет 0x6FC10000. Нечётные цифры стоят в позициях 2 и 4, т.е. эта штука проверяет event_states[1] or event_states[3].
    Ответить
    • Можно развить идею, подобрав константы для каждого бита:

      event_states[0] - 1_000_000_000_000_000_000_000
      event_states[1] - 10_000_000_000_000_000_000
      event_states[2] - 10_000_000_000_000
      event_states[3] - 1_000_000
      event_states[4] - 100_000
      event_states[5] - 1_000
      event_states[6] - ?
      event_states[7] - 1
      Ответить
      • Поздравляю. Ты только что сделал за процессор его работу.
        Ответить
    • Заметь, что строку парсят, как шестнадцатеричное число.
      То есть 4 бита на символ, установлен может быть только первый из каждой четвёрки.
      Если посмотреть на константу, то проверит она [4] и [6]. Блядь, я с конца строки считаю. Всё правильно написано.
      Ответить
      • Кстати, а [4] и [6] выделить таким образом не получается (про 100_000 у меня выше бага, это [3]).

        Интересно, можно ли ма-те-ма-тически доказать, что не существует такого n, что (10**n) & 0x11111111 == 0x00001000?
        Ответить
  • короче, кто-то прогуливал скучное битоебство (которое устарело и не нужно) и сразу выучил питон
    Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8