Cập nhật: Giới hạn thời gian loại bỏ. Bạn phải có thể mô tả đầu ra - xem quy tắc mới.
Một pangram là một câu sử dụng mỗi chữ cái trong bảng chữ cái ít nhất một lần, chẳng hạn như:
Một pangram hoàn hảo sử dụng mỗi chữ cái chính xác một lần.
Hãy xem xét việc viết một chương trình là một pangram hoàn hảo, sử dụng 95 ký tự ASCII có thể in (mã hex 20 đến 7E) làm bảng chữ cái:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Một chương trình như vậy phải chứa chính xác 95 ký tự, với mỗi ký tự ASCII có thể in được xảy ra chính xác một lần, nhưng theo bất kỳ thứ tự nào. (Như vậy, có 95! = 1.03 × 10 148 khả năng.)
Nhiệm vụ của bạn là viết chương trình này sao cho số lượng ký tự ASCII có thể in được in ra thiết bị xuất chuẩn càng cao càng tốt (tức là sinh sôi nảy nở).
Điểm của bạn là số ký tự ASCII có thể in được mà chương trình của bạn xuất ra ( tổng số tiền, không phải số lượng riêng biệt : AABC
điểm 4 trong khi ABC
điểm 3) . Điểm cao nhất sẽ thắng.
Chi tiết
- Đầu ra có thể chứa bất kỳ ký tự nào (bao gồm cả các bản sao) nhưng chỉ các phiên bản của 95 ký tự ASCII có thể in được tính vào điểm số của bạn.
- Bạn có thể sử dụng JSFiddle này để đếm số lượng ký tự ASCII có thể in trong bất kỳ chuỗi nào.
- Nếu ngôn ngữ của bạn không có thiết bị xuất chuẩn, hãy sử dụng giải pháp thay thế phù hợp nhất.
- Chương trình của bạn ...
- phải có thời gian chạy hữu hạn (giới hạn thời gian đã được gỡ bỏ)
- phải có đầu ra hữu hạn
- có thể chứa ý kiến
- phải biên dịch và chạy mà không có (chưa) lỗi
- không được nhắc hoặc yêu cầu đầu vào
- phải bất biến thời gian và xác định
- không được sử dụng các thư viện bên ngoài
- không được yêu cầu kết nối mạng
- không được sử dụng các tập tin bên ngoài
- (bạn có thể sử dụng chính tệp chương trình miễn là thay đổi tên tệp không làm thay đổi hành vi của chương trình)
- Nếu nhiệm vụ này là không thể thì một số ngôn ngữ quá tệ.
- Bạn phải cung cấp đầu ra chính xác của bạn hoặc mô tả chính xác nếu nó quá lớn để phù hợp với bài viết . Bạn không thực sự phải chạy chương trình của bạn. Miễn là nó sẽ chạy trong một khoảng thời gian hữu hạn trên một máy tính có dung lượng bộ nhớ không giới hạn, nó là hợp lệ.
Thí dụ
Chương trình Python 2 đơn giản này là một giải pháp khả thi:
print 9876543210#!"$%&'()*+,-./:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjklmoqsuvwxyz{|}~
Nó xuất ra 9876543210
10 ký tự ASCII có thể in, do đó đạt 10 điểm.
a
sáu triệu triệu lần, trong đó thậm chí không thể đạt được giới hạn trên chính xác số lượng nhân vật. Dù sao, tôi vẫn tự hào về 95 của mình, ngay cả khi nó là loại nhỏ. Kích thước không phải là tất cả mọi thứ, bạn biết.