1. Python / Говнокод #27947

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    def foo(n):
        f = True
        k = n % 10
        while n > k:
            n //= 10
            if n % 10 != k:
                f = False
                break
        return f
    
    array = [
        [22, 14, 8, 14],
        [22, 13, 70, 95],
        [22, 12, 51, 10], # Для тестирования
        [20, 11, 51, 56],
        [49, 10, 36, 85]
    ]
    
    f2 = True
    for i in range(len(array[0])):
        c = 0
        for j in range(len(array)):
            if foo(array[j][i]):
                c += 1
        if c > 3:
            f2 = False
            break
    print("True" if f2 else "False")

    Запостил: Lisya, 12 Января 2022

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

    • def foo(n):
          f = True
          k = n % 10
          while n > k:
              n //= 10
              if n % 10 != k:
                  f = False
                  break
          return f

      Проверка, состоит ли число из одной и той же цифры? Можно эффективней

      k = n % 10 // например если 44444 то берем последнюю цифру (4)
      
      if (k == 0) // эта хуйня нужна чтоб проверять особые корнер-кейсы
      {
        if(n != 0)
          return false;
        else
          return true;
      }
      
      n2 = n - n / 10; // например если 44444 - 4444 то будет 40000
      
      if (n2 % k != 0)
        return false; // проверяем 40000 делится на 4
      
      return is_pow_of_ten(n2 / k); // проверяем что 40000/4 это что-то из серии 1, 10, 100, 1000, 10000 ...
      Ответить
      • Укоротил
        def foo(n):
            n = str(n)
            return n == len(n) * n[0]
        Ответить
        • Напоминило классику как питуха плавуна перевели строку, и нашли в ней точку, и после нее все удалили, чтобы петуха округлить
          Ответить
          • Тут недавно в эластиксерч-чате человек спрашивать как отбрасывать от числа Е и всё что дальше. Для какого-то дальнейшего процессинга этого числа.
            Ответить
            • В смысле до точки только ставить?
              Ответить
              • Не, до точки еще имеет смысл (это округление)
                А ему хотелось именно Е+Х откромсать, а остальное оставить и дальше какие-то операции над ним делать
                Ответить
                • А у джавушков нет чтоли функций для распидорашивания плавучего питуха на мантиссу и экспоненту?
                  Ответить
                  • У PHP есть регулярное выражение
                    Именно по этому я
                    Ответить
      • def f(n):
            from math import log, floor
            if n < 0:
                return False
            d = n % 10
            if d == 0:
                return n == 0
            x = (n - n // 10) // d
            return x == 10 ** floor(log(x, 10))
        Ответить
        • Почему у вас логирование в математике?
          Ответить
        • > return x == 10 ** floor(log(x, 10))

          Нужен особый логарифм для бигинтов, а не эта хуита:
          >>> 10000000000000000000 == 10 ** log(10000000000000000001, 10)
          True
          Ответить
          • У меня ещё не на столько разработано.
            Ответить
            • И вообще, тут баг:
              >>> f(11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111)
              True
              >>> f(111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111)
              False
              Ответить
          • Логарифм тормоззит, нужно последний шаг по-другому делать
            Ответить
    • foo=:[:(*./@:={.)(10&#.^:_1)
      Ответить

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