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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 Lisya, (Updated )

Комментарии (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 ...
    Ответить
      • Напоминило классику как питуха плавуна перевели строку, и нашли в ней точку, и после нее все удалили, чтобы петуха округлить
        Ответить
        • Тут недавно в эластиксерч-чате человек спрашивать как отбрасывать от числа Е и всё что дальше. Для какого-то дальнейшего процессинга этого числа.
          Ответить
          • В смысле до точки только ставить?
            Ответить
            • Не, до точки еще имеет смысл (это округление)
              А ему хотелось именно Е+Х откромсать, а остальное оставить и дальше какие-то операции над ним делать
              Ответить
              • А у джавушков нет чтоли функций для распидорашивания плавучего питуха на мантиссу и экспоненту?
                Ответить
                • У 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
            Ответить

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

Помни, guest, за тобой могут следить!

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


    8