Dengan bashing Python baru-baru ini , inilah upaya untuk menunjukkan kekuatan Python. Tantangan Anda adalah menulis sebuah program yang menghitung faktorial angka setinggi mungkin dalam 10 detik.n
Skor Anda akan (highest n for your program on your machine)/(highest n for my program on your machine)
Aturan
- Anda harus menghitung solusi integer yang tepat. Karena faktorial akan jauh lebih tinggi daripada apa yang dapat ditampung dalam integer 64 bit yang tidak ditandatangani, Anda dapat menggunakan string jika bahasa Anda tidak mendukung bilangan bulat besar
- Celah standar dilarang. Khususnya, Anda tidak dapat menggunakan sumber daya eksternal apa pun.
- Hanya bagian perhitungan (ini termasuk waktu untuk setiap penyelesaian masalah menggunakan string) menambah total waktu yang seharusnya di bawah 10 detik rata-rata.
- Hanya program berulir tunggal.
- Anda harus menyimpan output dalam bentuk yang mudah dicetak (karena pencetakan membutuhkan waktu) (lihat program saya di bawah), string, variabel, array karakter, dll.
EDIT:
- Program Anda harus memberikan hasil yang benar untuk semua
n
:1 <= n <= (your highest n)
EDIT2:
- Saya benci mengatakan ini secara eksplisit tetapi menggunakan fungsi faktorial bawaan bahasa Anda berada di bawah celah standar http://meta.codegolf.stackexchange.com/a/1078/8766 Maaf, Mathematica and Sage Maaf
Program saya
from __future__ import print_function
import time
def factorial( n ):
return reduce( ( lambda x , y : x * y ) , xrange( 1 , n + 1 ) , 1 )
start = time.clock()
answer = factorial( 90000 )
end = time.clock()
print ( answer )
print ( "Time:" , end - start , "sec" )
Kemenangan skor tertinggi. Sebagai catatan, kode saya dapat mengatur n = 90000
dalam beberapa 9.89
detik pada Pentium 4 3,0 GHz
EDIT: Can semua orang silahkan menambahkan skor bukan hanya tertinggi n . Hanya yang tertinggi n
tidak memiliki arti karena tergantung pada perangkat keras Anda. Tidak mungkin memiliki kriteria kemenangan yang obyektif sebaliknya. Jawaban ali0sha melakukan ini dengan benar.
Kami punya pemenang. Saya tidak menerima jawaban java /codegolf//a/26974/8766 karena semacam rok dekat dengan http://meta.codegolf.stackexchange.com/a/1080/8766
factorial(Inf)
:, kembali Inf
dalam sepersekian detik.
operator.mul
fungsi lambda