Thử thách:
Thách thức của bạn (nếu bạn chọn chấp nhận nó) là nén và giải nén " Tác phẩm hoàn chỉnh của William Shakespeare " 5 MB như được tìm thấy ở đây: http://www.gutenberg.org/cache/epub/100/pg100.txt
(MD5 a810f89e9f8e213aebd06b9f8c5157d8
:)
Quy tắc:
- Bạn phải nhận đầu vào qua
STDIN
và đầu ra quaSTDOUT
... - ... Và bạn phải cung cấp kết quả giải nén giống hệt cho đầu vào.
- (Điều này là để nói rằng bạn phải có khả năng
cat inpt.txt | ./cmprss | ./dcmpress | md5
và nhận được cùng một MD5 như trên.) - (Bất cứ điều gì thông qua
STDERR
sẽ được loại bỏ.)
- (Điều này là để nói rằng bạn phải có khả năng
Bạn phải sử dụng ít hơn 2048 ký tự cho tổng mã nguồn của mình.- (Đây là không mã golf. Bạn không được tính điểm dựa trên độ dài của mã nguồn. Đây
làchỉ là một quy tắc để giữ cho mọi thứ hữu hạn.) (Lấy độ dài nối của tất cả các mã nguồn nếu bạn đã tách nó ra.)
- (Đây là không mã golf. Bạn không được tính điểm dựa trên độ dài của mã nguồn. Đây
- Bạn cũng phải có khả năng (về mặt lý thuyết) xử lý các đầu vào văn bản đơn giản tương tự.
- (ví dụ: mã hóa cứng một cơ chế chỉ có khả năng xuất ra đầu vào Shakespeare được cung cấp là không thể chấp nhận được.)
- (Kích thước nén của các tài liệu khác là không liên quan - miễn là kết quả giải nén giống hệt với đầu vào thay thế.)
- Bạn có thể sử dụng bất kỳ lựa chọn ngôn ngữ nào.
- (ví dụ: thoải mái nén bằng cách sử dụng
awk
và giải nén bằng cách sử dụngjava
)
- (ví dụ: thoải mái nén bằng cách sử dụng
- Bạn có thể viết hai chương trình riêng biệt hoặc kết hợp chúng với một số hình thức "chuyển đổi" nếu muốn.
- (Phải có trình diễn rõ ràng về cách gọi cả chế độ nén và giải nén)
- Bạn không được sử dụng bất kỳ lệnh bên ngoài nào (ví dụ thông qua
exec()
).- (Nếu bạn đang sử dụng ngôn ngữ shell - xin lỗi. Bạn sẽ phải thực hiện với phần mềm tích hợp. Bạn có thể đăng câu trả lời "không thể chấp nhận" để chia sẻ và thưởng thức - nhưng nó sẽ không bị đánh giá! )
- Bạn không được sử dụng bất kỳ chức năng tích hợp hoặc thư viện nào được cung cấp với mục đích đã nêu là để nén dữ liệu (như
gz
, v.v.)- (Thay đổi mã hóa không được coi là nén trong ngữ cảnh này. Một số quyết định có thể được áp dụng ở đây. Vui lòng tranh luận về sự chấp nhận của giải pháp của bạn trong bài nộp.)
- Hãy cố gắng vui vẻ nếu chọn tham gia!
Tất cả các cuộc thi tốt có một định nghĩa khách quan về chiến thắng; ergo:
- Với tất cả các quy tắc được tuân thủ, đầu ra được nén nhỏ nhất (tính bằng
STDOUT
byte) sẽ thắng.- (Báo cáo đầu ra của bạn xin vui lòng thông qua
./cmprss | wc -c
)
- (Báo cáo đầu ra của bạn xin vui lòng thông qua
- Trong trường hợp bốc thăm (kích thước đầu ra giống hệt nhau), cộng đồng được bầu chọn nhiều nhất.
- Trong trường hợp bốc thăm lần thứ hai (phiếu bầu cộng đồng giống hệt nhau), tôi sẽ chọn một người chiến thắng dựa trên kiểm tra hoàn toàn chủ quan về sự thanh lịch và thiên tài thuần túy.
;-)
Cách nộp:
Vui lòng định dạng mục nhập của bạn bằng cách sử dụng mẫu này:
<language>, <compressed_size>
-----------------------------
<description> (Detail is encouraged!)
<CODE...
...>
<run instructions>
Tôi sẽ khuyến khích độc giả và người gửi trò chuyện qua các bình luận - Tôi tin rằng có cơ hội thực sự để mọi người học hỏi và trở thành lập trình viên tốt hơn thông qua codegolf.stack.
Chiến thắng:
Tôi sẽ đi nghỉ sớm: Tôi có thể (hoặc không) theo dõi các bài nộp trong vài tuần tới và sẽ rút ra thách thức vào ngày 19 tháng 9. Tôi hy vọng điều này mang đến một cơ hội tốt để mọi người suy nghĩ và gửi - và để chia sẻ tích cực về các kỹ thuật và ý tưởng.
Nếu bạn đã học được điều gì mới từ việc tham gia (với tư cách là người đọc hoặc người gửi), vui lòng để lại nhận xét khuyến khích.
code-challenge
.