Các thách thức:
Xây dựng biểu đồ ASCII của các từ được sử dụng phổ biến nhất trong một văn bản nhất định.
Những quy định:
- Chỉ chấp nhận
a-z
vàA-Z
(ký tự chữ cái) là một phần của một từ. - Bỏ qua vỏ (
She
==she
cho mục đích của chúng tôi). - Bỏ qua những từ sau (khá đơn giản, tôi biết):
the, and, of, to, a, i, it, in, or, is
Làm rõ: xem xét
don't
: điều này sẽ được coi là 2 'từ' khác nhau trong phạm via-z
vàA-Z
: (don
vàt
).Tùy chọn (bây giờ đã quá muộn để thay đổi chính thức các thông số kỹ thuật), bạn có thể chọn bỏ tất cả các chữ cái 'từ' (điều này có khả năng cũng có thể rút ngắn danh sách bỏ qua).
Phân tích cú pháp đã cho text
(đọc một tệp được chỉ định thông qua các đối số dòng lệnh hoặc được đặt trong; giả định us-ascii
) và xây dựng cho chúng ta một word frequency chart
đặc điểm sau:
- Hiển thị biểu đồ (cũng xem ví dụ bên dưới) cho 22 từ phổ biến nhất (được sắp xếp theo tần số giảm dần).
- Thanh
width
đại diện cho số lần xuất hiện (tần số) của từ (tỷ lệ). Nối một khoảng trắng và in từ. - Đảm bảo các thanh này (cộng với dấu cách-không gian-từ) luôn luôn vừa vặn :
bar
+[space]
+word
+[space]
phải luôn luôn <=80
ký tự (đảm bảo bạn tính đến độ dài thanh và từ khác nhau có thể có: vd: từ phổ biến thứ hai có thể dài hơn rất nhiều sau đó đầu tiên trong khi không khác nhau rất nhiều về tần số). Tối đa hóa chiều rộng thanh trong các ràng buộc này và chia tỷ lệ các thanh một cách thích hợp (theo tần số mà chúng đại diện).
Một ví dụ:
Văn bản cho ví dụ có thể được tìm thấy ở đây ( Cuộc phiêu lưu của Alice ở xứ sở thần tiên, của Lewis Carroll ).
Văn bản cụ thể này sẽ mang lại biểu đồ sau:
Giới thiệu | _________________________________________________________________________ | bà ấy | _____________________________________________________________ | bạn | ____________________________________________________________ | nói | ____________________________________________________ | alice | ____________________________________________ | là | cái đó | như | cô ấy | với | tại | S | t | trên | tất cả | điều này | cho | đã có | nhưng | là | không phải | họ | vì thế
Để biết thông tin của bạn: đây là các tần số mà biểu đồ trên được xây dựng dựa trên:
[('Cô', 553), ('bạn', 481), ('đã nói', 462), ('alice', 403), ('là', 358), ('đó ', 330), (' như ', 274), (' cô ấy ', 248), (' với ', 227), (' tại ', 227), (' s ', 219), (' t ' , 218), ('trên', 204), ('tất cả', 200), ('này', 181), ('cho', 179), ('đã', 178), (' nhưng ', 175), (' được ', 167), (' không ', 166), (' họ ', 155), (' vì vậy ', 152)]
Một ví dụ thứ hai (để kiểm tra xem bạn đã triển khai thông số kỹ thuật hoàn chỉnh chưa):
Thay thế mọi lần xuất hiện trong tệp Alice in Wonderlandyou
được liên kết bằng :superlongstringstring
Giới thiệu | ______________________________________________________________ | bà ấy | _____________________________________________________ | siêu dây | ___________________________________________________ | nói | ____________________________________________ | alice | ______________________________________ | là | cái đó | như | cô ấy | với | tại | _______________ | S | _______________ | t | trên | tất cả | điều này | cho | đã có | nhưng | là | không phải | ______________ | họ | ______________ | vì thế
Người chiến thắng:
Giải pháp ngắn nhất (theo số lượng ký tự, mỗi ngôn ngữ). Chúc vui vẻ!
Chỉnh sửa : Bảng tóm tắt kết quả cho đến nay (2012 / 02-15) (ban đầu được thêm bởi người dùng Nas Banov):
Ngôn ngữ thư giãn nghiêm ngặt ========= ======= ====== GolfScript 130 143 Perl 185 Windows PowerShell 148 199 Toán học 199 Hồng ngọc 185 205 Unix Toolchain 194 228 Con trăn 183 243 Clojure 282 Scala 311 Haskell 333 Awk 336 R 298 Javascript 304 354 Groovy 321 Matlab 404 C # 422 Smalltalk 386 PHP 450 F # 452 TSQL 483 507
Các con số biểu thị độ dài của giải pháp ngắn nhất trong một ngôn ngữ cụ thể. "Nghiêm" đề cập đến một giải pháp thực hiện hoàn toàn thông số kỹ thuật (vẽ |____|
các thanh, đóng thanh đầu tiên trên đầu bằng một ____
dòng, tính đến khả năng các từ dài có tần số cao, v.v.). "Thư giãn" có nghĩa là một số quyền tự do đã được thực hiện để rút ngắn giải pháp.
Chỉ có các giải pháp ngắn hơn 500 ký tự được bao gồm. Danh sách các ngôn ngữ được sắp xếp theo độ dài của giải pháp 'nghiêm ngặt'. 'Unix Toolchain' được sử dụng để biểu thị các giải pháp khác nhau sử dụng shell * nix truyền thống cộng với hỗn hợp các công cụ (như grep, tr, sort, uniq, head, perl, awk).
s
và t
được đại diện.