Với lần bash Python gần đây , đây là một nỗ lực để thể hiện sức mạnh của Python. Thử thách của bạn là viết một chương trình tính giai thừa số càng cao càng tốt trong vòng 10 giây.n
Điểm của bạn sẽ là (highest n for your program on your machine)/(highest n for my program on your machine)
Quy tắc
- Bạn phải tính toán một giải pháp số nguyên chính xác. Vì giai thừa sẽ cao hơn nhiều so với số nguyên không dấu 64 bit, nên bạn có thể sử dụng chuỗi nếu ngôn ngữ của bạn không hỗ trợ số nguyên lớn
- Sơ hở tiêu chuẩn bị cấm. Đặc biệt, bạn không thể sử dụng bất kỳ tài nguyên bên ngoài.
- Chỉ phần tính toán (phần này bao gồm thời gian cho bất kỳ cách giải quyết nào bằng cách sử dụng chuỗi) thêm vào tổng thời gian trung bình dưới 10 giây.
- Chương trình đơn luồng duy nhất.
- Bạn phải lưu trữ đầu ra ở dạng dễ in (vì việc in mất thời gian) (xem chương trình của tôi bên dưới), chuỗi, biến, mảng ký tự, v.v.
BIÊN TẬP:
- Chương trình của bạn phải cung cấp đầu ra chính xác cho tất cả
n
:1 <= n <= (your highest n)
EDIT2:
- Tôi ghét phải nói điều này một cách rõ ràng nhưng sử dụng các chức năng giai thừa tích hợp trong ngôn ngữ của bạn nằm trong các lỗ hổng tiêu chuẩn http://meta.codegolf.stackexchange.com/a/1078/8766 Xin lỗi Mathicala và Sage
Chương trình của tôi
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" )
Điểm số cao nhất chiến thắng. Đối với bản ghi, mã của tôi có thể quản lý n = 90000
trong khoảng 9.89
vài giây trên Pentium 4 3.0 GHz
EDIT: Mọi người có thể vui lòng thêm điểm thay vì chỉ n cao nhất . Chỉ cao nhất n
không có ý nghĩa gì vì nó phụ thuộc vào phần cứng của bạn. Không thể có một tiêu chí chiến thắng khách quan nào khác. anwer của ali0sha làm điều này một cách chính xác.
Chúng ta có một người chiến thắng. Tôi đã không chấp nhận câu trả lời java /codegolf//a/26974/8766 vì đây là loại váy gần với http://meta.codegolf.stackexchange.com/a/1080/8766
factorial(Inf)
, trả về Inf
trong một phần của giây.
operator.mul
thay cho chức năng lambda