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

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
x = str(x)                                            # x == '987.654'
dot = x.find('.')                                  # dot == 3
whole = x[:dot]                                 # whole == '987'
nums = '0123456789'                     # 
tenths = x[(dot + 1):(dot + 2)]         # tenths == '6'
max_digits = 6                                  # Directions say x is not > 100,000
filler = max_digits - dot                   # filler == 3 (dot is equal to the number of digits in whole)
big_num = ('0' * filler) + whole       # big_num == '000987'

e5 = (nums.find(big_num[0:1])) * 100000   # e5 == 0
e4 = (nums.find(big_num[1:2])) * 10000     # e4 == 0
e3 = (nums.find(big_num[2:3])) * 1000       # e3 == 0
e2 = (nums.find(big_num[3:4])) * 100         # e2 == 900
e1 = (nums.find(big_num[4:5])) * 10           # e1 == 80
e0 = (nums.find(big_num[5:6]))                   # e0 == 7

the_decider = '9'.find(tenths) + '8'.find(tenths) + '7'.find(tenths) + '6'.find(tenths) + '5'.find(tenths) + 5

rounded = (e5 + e4 + e3 + e2 + e1 + e0) + the_decider
print rounded

Эта, кхм, программа предназначается для округления положительных натуральных чисел величиной до 100000.

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

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

  • По заданию функцией round нельзя было пользоваться.
    Ответить
    • А даже если нельзя...

      r = math.fmod(x, 1) #операция деления с остатком определена для дробных чисел. Можно и обычное % использовать.
      res = x - r + (0 if r<0.5 else 1)

      Ну или если охота поизвращаться со строками,
      i, sep, r = str(x).partition('.') #зависимость от разделителя, ага.
      if sep is None:
      r = '0'
      res = int(i) + (1 if r[0] in '56789' else 0)
      Ответить
      • Ну, писал не я 🙂
        Для округления достаточно добавить к любому числу 0.5 и от результата отбросить дробную часть.
        Ответить
          • > вечно забываю про этот трюк.
            видимо сказывается очень далеко отброшенная дробная часть
            Ответить
    • Нахер такие задания, где нельзя пользоваться встроенными средствами языка. И задающих такие задания - в биореактор.
      Ответить
  • Это зародыш не обычного индуса, а как минимум факира.
    Ответить

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

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

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


    8