Nhiệm vụ của bạn hôm nay là phát minh ra một máy nén văn bản.
Bài tập
Bạn sẽ viết hai chức năng:
Trình đóng gói là một hàm chấp nhận một chuỗi các ký tự ASCII (U + 0000 đến U + 007F) và xuất ra một chuỗi Unicode (U + 0000 đến U + 10FFFF), chứa ít ký tự nhất có thể.
Trình giải nén là một hàm chấp nhận chuỗi Unicode được mã hóa và xuất ra chính xác chuỗi ASCII gốc.
Đầu vào
Đầu vào được ủy quyền duy nhất là chuỗi ASCII (đối với trình đóng gói) và chuỗi Unicode được đóng gói (đối với trình giải nén). Không có đầu vào của người dùng, không có kết nối internet, không sử dụng hệ thống tập tin.
Chức năng của bạn có thể có quyền truy cập vào danh sách các từ tiếng Anh này . Bạn có thể sử dụng danh sách này dưới dạng tệp txt cục bộ hoặc sao chép nội dung của nó trong mã nguồn của bạn dưới dạng một chuỗi hoặc một chuỗi các chuỗi .
Bạn không thể mã hóa các đoạn mã dưới đây trong các chức năng của mình.
Đầu ra
Đầu ra được ủy quyền duy nhất cho cả hai chức năng là một chuỗi.
Đầu ra của trình giải nén phải chứa chính xác các ký tự giống như đầu vào của trình đóng gói.
Đầu vào và đầu ra của bạn có thể sử dụng bất kỳ mã hóa ký tự nào hỗ trợ tất cả Unicode (UTF-8/16/32, GB18030, ...), vì điểm của bạn sẽ chỉ phụ thuộc vào số lượng ký tự Unicode trong đầu ra. Vui lòng chính xác mã hóa bạn đang sử dụng, mặc dù.
Để đếm số lượng ký tự Unicode trong đầu ra của bạn, bạn có thể sử dụng công cụ này: http://otherseff.in/byte-count
Chấm điểm
Mục nhập của bạn phải có thể đóng gói và giải nén 10 đoạn văn bản sau (mà tôi đã lấy trên diễn đàn này).
Điểm của bạn sẽ là tổng kích thước của 10 chuỗi được đóng gói của bạn (bằng ký tự Unicode) + kích thước của hai hàm của bạn (cũng bằng ký tự Unicode)
Đừng đếm kích thước của từ điển nếu bạn sử dụng nó.
Vui lòng bao gồm trong các mục của bạn "điểm số" của từng đoạn và phiên bản đóng gói của chúng.
Điểm số thấp nhất chiến thắng.
Dữ liệu
Dưới đây là các đoạn mã hóa để tính điểm của bạn:
1: Lời bài hát của Rick Roll (1870b): Chúng ta không xa lạ gì với môn đánh gôn, bạn biết luật chơi, và tôi cũng vậy
Chúng ta không xa lạ gì với tình yêu Bạn biết các quy tắc và tôi cũng vậy Một cam kết đầy đủ là những gì tôi nghĩ về Bạn sẽ không nhận được điều này từ bất kỳ chàng trai khác Tôi chỉ muốn nói cho bạn biết tôi đang cảm thấy như thế nào Phải làm cho bạn hiểu Tôi không đời nào bỏ cậu đâu Không bao giờ làm bạn thất vọng Sẽ không bao giờ chạy xung quanh và bỏ rơi bạn Sẽ không bao giờ làm bạn khóc Sẽ không bao giờ nói tạm biệt Sẽ không bao giờ nói dối và làm tổn thương bạn Chúng tôi đã biết nhau rất lâu Trái tim bạn đang đau nhưng Bạn quá ngại nói Bên trong cả hai chúng tôi đều biết chuyện gì đang xảy ra Chúng tôi biết trò chơi và chúng tôi sẽ chơi nó Và nếu bạn hỏi tôi cảm thấy thế nào Đừng nói với tôi là bạn quá mù để xem Tôi không đời nào bỏ cậu đâu Không bao giờ làm bạn thất vọng Sẽ không bao giờ chạy xung quanh và bỏ rơi bạn Sẽ không bao giờ làm bạn khóc Sẽ không bao giờ nói tạm biệt Sẽ không bao giờ nói dối và làm tổn thương bạn Tôi không đời nào bỏ cậu đâu Không bao giờ làm bạn thất vọng Sẽ không bao giờ chạy xung quanh và bỏ rơi bạn Sẽ không bao giờ làm bạn khóc Sẽ không bao giờ nói tạm biệt Sẽ không bao giờ nói dối và làm tổn thương bạn (Ồ, từ bỏ bạn) (Ồ, từ bỏ bạn) (Ôi) Sẽ không bao giờ cho, sẽ không bao giờ cho (Cho bạn lên) (Ôi) Sẽ không bao giờ cho, sẽ không bao giờ cho (Cho bạn lên) Chúng ta đã biết nhau rất lâu Trái tim bạn đang đau nhưng Bạn quá ngại nói Bên trong cả hai chúng tôi đều biết chuyện gì đang xảy ra Chúng tôi biết trò chơi và chúng tôi sẽ chơi nó Tôi chỉ muốn nói cho bạn biết tôi đang cảm thấy như thế nào Phải làm cho bạn hiểu Tôi không đời nào bỏ cậu đâu Không bao giờ làm bạn thất vọng Sẽ không bao giờ chạy xung quanh và bỏ rơi bạn Sẽ không bao giờ làm bạn khóc Sẽ không bao giờ nói tạm biệt Sẽ không bao giờ nói dối và làm tổn thương bạn Tôi không đời nào bỏ cậu đâu Không bao giờ làm bạn thất vọng Sẽ không bao giờ chạy xung quanh và bỏ rơi bạn Sẽ không bao giờ làm bạn khóc Sẽ không bao giờ nói tạm biệt Sẽ không bao giờ nói dối và làm tổn thương bạn Tôi không đời nào bỏ cậu đâu Không bao giờ làm bạn thất vọng Sẽ không bao giờ chạy xung quanh và bỏ rơi bạn Sẽ không bao giờ làm bạn khóc Sẽ không bao giờ nói tạm biệt Sẽ không bao giờ nói dối và làm tổn thương bạn
2: Golfer (412b): Chơi gôn nghệ thuật ASCII
'\. . |> 18 >> \. '. | Ô >>. 'o | \. | / \. | / /. ' | js ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
3: số kim cương (233b): In viên kim cương này
1 121 12321 1234321 123454321 12345654321 1234567654321 123456787654321 12345678987654321 123456787654321 1234567654321 12345654321 123454321 1234321 12321 121 1
4: bảng chữ cái bốn lần (107b): In bảng chữ cái bốn lần
abcdefghijklmnopqrstuvwxyz qwertyuiopasdfghjklzxcvbnm pyfgcrlaoeuidhtnsqjkxbmwvz zyxwvutsrqponmlkjihgfedcba
5: Lời bài hát của Old McDonald (203b): Chức năng MacDonald cũ
MacDonald cũ có một trang trại, EIEIO, Và trong trang trại đó, anh ta có một con bò, EIEIO, Với một moo moo ở đây và một moo moo ở đó, Ở đây một moo, có một moo, ở khắp mọi nơi một moo moo, MacDonald cũ đã có một trang trại, EIEIO!
6: Rock xung quanh lời bài hát đồng hồ (144b): Rock quanh đồng hồ
1, 2, 3 giờ, đá 4 giờ, 5, 6, 7 giờ, đá 8 giờ, 9, 10, 11 giờ, đá 12 giờ, Chúng ta sẽ đá xung quanh đồng hồ tối nay.
7: Hello World (296b): Nói "Xin chào" với thế giới trong nghệ thuật ASCII
_ _ _ _ _ _ _ | | | | ___ | | | ___ __ _____ _ __ | | __ | | | | | _ | | / _ \ | | / _ \ \ \ / \ / / _ \ | '__ | | / _` | | | _ | __ / | | (_) | \ VV / (_) | | | | (_ | | _ | | _ | | _ | \ ___ | _ | _ | \ ___ () \ _ / \ _ / \ ___ / | _ | | _ | \ __, _ (_) | /
8: Phước lành Ailen (210b): Một phước lành Ailen cổ
Có thể con đường đi lên để gặp bạn Có thể gió luôn luôn ở phía sau của bạn Có mặt trời tỏa sáng ấm áp trên khuôn mặt của bạn Những cơn mưa rơi nhẹ trên cánh đồng của bạn Và cho đến khi chúng ta gặp lại Chúa có thể giữ bạn trong lòng bàn tay của Ngài
9: Có một lời bài hát của bà già (1208b): Có một bà già
Có một bà già nuốt một con ruồi. Tôi không biết tại sao cô ấy nuốt con ruồi đó, Có lẽ cô ấy sẽ chết. Có một bà già nuốt một con nhện, Điều đó quằn quại và vặn vẹo và cười khúc khích trong cô. Cô nuốt con nhện để bắt ruồi, Tôi không biết tại sao cô ấy nuốt con ruồi đó, Có lẽ cô ấy sẽ chết. Có một bà già nuốt một con chim, Thật vô lý khi nuốt một con chim. Cô nuốt con chim để bắt con nhện, Cô nuốt con nhện để bắt ruồi, Tôi không biết tại sao cô ấy nuốt con ruồi đó, Có lẽ cô ấy sẽ chết. Có một bà già nuốt một con mèo, Hãy tưởng tượng rằng để nuốt một con mèo. Cô nuốt con mèo để bắt con chim, Cô nuốt con chim để bắt con nhện, Cô nuốt con nhện để bắt ruồi, Tôi không biết tại sao cô ấy nuốt con ruồi đó, Có lẽ cô ấy sẽ chết. Có một bà già nuốt một con chó, Thật là một con heo để nuốt một con chó. Cô nuốt con chó để bắt con mèo, Cô nuốt con mèo để bắt con chim, Cô nuốt con chim để bắt con nhện, Cô nuốt con nhện để bắt ruồi, Tôi không biết tại sao cô ấy nuốt con ruồi đó, Có lẽ cô ấy sẽ chết. Có một bà già nuốt một con ngựa, Cô ấy chết tất nhiên.
10: địa chỉ gettysburg (1452b): Địa chỉ Gettysburg ngẫu nhiên như thế nào
Bốn điểm và bảy năm trước, cha chúng ta đã mang đến cho lục địa này một quốc gia mới, được hình thành trong tự do và dành riêng cho đề xuất rằng tất cả mọi người đều được tạo ra như nhau. Bây giờ chúng tôi đang tham gia vào một cuộc nội chiến lớn, kiểm tra xem quốc gia đó, hay bất kỳ quốc gia nào được quan niệm và tận tâm như vậy, có thể chịu đựng được lâu dài. Chúng tôi được gặp trên một chiến trường vĩ đại của cuộc chiến đó. Chúng tôi đã đến để dành một phần của lĩnh vực đó, như một nơi an nghỉ cuối cùng cho những người ở đây đã cho cuộc sống của họ rằng quốc gia đó có thể sống. Hoàn toàn phù hợp và đúng đắn mà chúng ta nên làm điều này. Nhưng, trong một ý nghĩa lớn hơn, chúng ta không thể cống hiến, chúng ta không thể tận hiến, chúng ta không thể thần thánh mặt đất này. Những người đàn ông dũng cảm, sống và chết, đã vật lộn ở đây, đã tận hiến nó, vượt xa sức mạnh kém cỏi của chúng ta để thêm hoặc gièm pha. Thế giới sẽ ít lưu ý, cũng không nhớ những gì chúng ta nói ở đây, nhưng nó không bao giờ có thể quên những gì họ đã làm ở đây. Thay vào đó, đối với chúng tôi, người sống được dành riêng cho công việc còn dang dở mà họ đã chiến đấu ở đây đã tiến bộ rất cao. Đúng hơn là chúng ta ở đây dành riêng cho nhiệm vụ lớn lao còn lại trước chúng ta - rằng từ những người chết được tôn vinh này, chúng ta đã hết lòng vì lý do mà họ đã đưa ra biện pháp tận tâm cuối cùng - rằng chúng ta ở đây quyết tâm cao rằng những người chết này sẽ không đã chết trong vô vọng - rằng quốc gia này, dưới Thiên Chúa, sẽ có một sự tự do mới - và chính phủ của nhân dân, bởi nhân dân, vì nhân dân, sẽ không bị diệt vong khỏi trái đất.
Tổng cộng (không nén): 6135 ký tự / byte.
Chúc vui vẻ!
private static final String RICK_ROLL_RETURN = "We're no strangers to love...