Несколько вариантов вычисления факториала на питоне

Тема в разделе "WASM.HEAP", создана пользователем not1, 27 янв 2011.

  1. not1

    not1 Member

    Публикаций:
    0
    Регистрация:
    6 окт 2009
    Сообщения:
    137
    #Lazy Python programmer
    def fact(x):
    return x > 1 and x * fact(x - 1) or 1
    print fact(6)


    #Lazier Python programmer
    f = lambda x: x and x * f(x - 1) or 1
    print f(6)


    #Python expert programmer
    import operator as op
    import functional as f
    fact = lambda x: f.foldl(op.mul, 1, xrange(2, x + 1))
    print fact(6)


    #Python hacker

    import sys
    @tailcall
    def fact(x, acc=1):
    if x: return fact(x.__sub__(1), acc.__mul__(x))
    return acc
    sys.stdout.write(str(fact(6)) + '\n')


    #EXPERT PROGRAMMER
    import c_math
    fact = c_math.fact
    print fact(6)


    #ENGLISH EXPERT PROGRAMMER

    import c_maths
    fact = c_maths.fact
    print fact(6)


    #Web designer

    def factorial(x):
    #-------------------------------------------------
    #--- Code snippet from The Math Vault ---
    #--- Calculate factorial (C) Arthur Smith 1999 ---
    #-------------------------------------------------
    result = str(1)
    i = 1 #Thanks Adam
    while i <= x:
    #result = result * i #It's faster to use *=
    #result = str(result * result + i)
    #result = int(result *= i) #??????
    result str(int(result) * i)
    #result = int(str(result) * i)
    i = i + 1
    return result
    print factorial(6)


    #Unix programmer

    import os
    def fact(x):
    os.system('factorial ' + str(x))
    fact(6)


    #Windows programmer
    NULL = None
    def CalculateAndPrintFactorialEx(dwNumber,
    hOutputDevice,
    lpLparam,
    lpWparam,
    lpsscSecurity,
    *dwReserved):
    if lpsscSecurity != NULL:
    return NULL #Not implemented
    dwResult = dwCounter = 1
    while dwCounter <= dwNumber:
    dwResult *= dwCounter
    dwCounter += 1
    hOutputDevice.write(str(dwResult))
    hOutputDevice.write('\n')
    return 1
    import sys
    CalculateAndPrintFactorialEx(6, sys.stdout, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
     
  2. dcLout

    dcLout New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2010
    Сообщения:
    47
    Лольно...
    почти...
    было бы...
    ...если бы это был форум по кодингу на питоне.
     
  3. Sekretarsha

    Sekretarsha New Member

    Публикаций:
    0
    Регистрация:
    30 сен 2008
    Сообщения:
    176
    not1
    забавно, спс)

    dcLout
    вы не правы
     
  4. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Больше подошло бы для iPhone SDK.
     
  5. blacktelecom

    blacktelecom New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2010
    Сообщения:
    235
    > NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL....
    Это как раз в стиле winapi
     
  6. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    Ну я бы напейсал для начала:

    Код (Text):
    1. int fact(int x)
    2. {
    3.   if ( x > 12 ) halt("your mouth write a check that your ass can't cash");
     
  7. NeuronViking

    NeuronViking New Member

    Публикаций:
    0
    Регистрация:
    29 окт 2004
    Сообщения:
    476
    Адрес:
    где-то в Сиднее
    PSR1257
    вы жгёте =)