Khi bạn tìm kiếm một cái gì đó trên Google , nó sẽ thuận tiện đưa ra một thông báo ở gần đầu trang nói điều gì đó như thế nào About 53,000,000 results (0.22 seconds)
. (Các con số thay đổi tùy thuộc vào những gì đã được tìm kiếm tất nhiên.)
Trong thử thách này, bạn sẽ viết một chương trình vẽ biểu đồ ASCII logarit về số lượng kết quả do Google đưa ra khi tất cả các tiền tố không trống của cụm từ tìm kiếm đã cho được tìm kiếm.
Một tìm kiếm cụm từ được định nghĩa là một hoặc nhiều chuỗi ký tự chữ và chữ thường, cách nhau bằng một không gian lẫn nhau. Trong Regex một cụm từ tìm kiếm là (?:[a-z0-9]+ )*[a-z0-9]+
.
Vì vậy im ok
, r
và 1a 2
tất cả đều tìm kiếm cụm từ, nhưng I'm OK
, R
, 1a 2
, và , thì không.
(Các hạn chế về ký tự được đặt ra vì Google hiếm khi đưa trường hợp hoặc ký hiệu đặc biệt vào tài khoản. Thoát các ký tự không phải là chữ và số trong URL cũng là một rắc rối.)
Thông số kỹ thuật
Chương trình của bạn phải sử dụng cụm từ tìm kiếm và số dấu phẩy động dương từ stdin hoặc dòng lệnh. (Bạn có thể cho rằng chúng hợp lệ và sẽ ổn nếu bạn cần trích dẫn hoặc nội dung nào đó xung quanh cụm từ tìm kiếm.)
Như một ví dụ hoạt động, giả sử cụm từ tìm kiếm là a car
và H = 0,75.
Bước 1:
Tập hợp các tiền tố không trống của cụm từ tìm kiếm của bạn và đặt chúng trong dấu ngoặc kép . Các trích dẫn đảm bảo rằng cụm từ chính xác sẽ được tìm kiếm, tránh mọi chuyển hướng 'ý bạn là ...' .
Loại trừ tất cả các tiền tố kết thúc trong một không gian như a[space]
.
Prefixes
"a"
"a c"
"a ca"
"a car"
Bước 2:
Tìm kiếm từng thuật ngữ chính xác như chúng xuất hiện bằng https://www.google.com và lưu ý số lượng kết quả trả về.
Search Term Message Results
"a" About 6,950,000,000 results (0.27 seconds) 6950000000
"a c" About 861,000,000 results (0.27 seconds) 861000000
"a ca" About 2,990,000 results (0.30 seconds) 2990000
"a car" About 53,900,000 results (0.39 seconds) 53900000
Nếu thuật ngữ tìm kiếm không khớp với bất kỳ tài liệu nào , hãy đặt 0 vào Results
cột.
Bước 3:
Tính toán y = floor(H * log10(r + 1))
cho mỗi hàng, trong đó r là Results
giá trị. H vẫn còn 0,75 ở đây.
Search Term Results y
"a" 6950000000 7
"a c" 861000000 6
"a ca" 2990000 4
"a car" 53900000 5
Bước 4:
Sắp xếp y
số lượng thanh dọc ( |
) phía trên ký tự cuối cùng của mỗi cụm từ tìm kiếm không được trích dẫn, sử dụng khoảng trắng để điền vào các vùng trống, trong một loại biểu đồ thanh.
|
| |
| | |
| |||
| |||
| |||
| |||
a car
Biểu đồ này là kết quả cuối cùng của chương trình của bạn và là thứ duy nhất nó cần để xuất ra. Nó nên đi đến stdout.
Chấm điểm
Đây là môn đánh gôn , vì vậy chương trình ngắn nhất tính bằng byte sẽ thắng.
Ghi chú
- Bạn có thể sử dụng các công cụ rút ngắn URL hoặc các công cụ tìm kiếm / API khác miễn là kết quả sẽ giống như tìm kiếm https://www.google.com .
- Tôi biết rằng trích dẫn kép không phải là một cách chắc chắn để loại trừ các chuyển hướng "ý bạn là ...". Thêm
&nfpr=1
vào URL không phải lúc nào cũng hoạt động . Đừng lo lắng về những điểm không chính xác này. Chỉ cần tìmAbout X results...
tin nhắn bất kể cái gì bật lên, hoặc đặtResults
thành 0 nếu không có. - Có một cột trống phía trên bất kỳ khoảng trắng nào trong cụm từ tìm kiếm trong biểu đồ.
- Biểu đồ không được rộng hơn hoặc cao hơn mức cần thiết (ví dụ với khoảng trắng).
- Sẽ ổn nếu chương trình của bạn có tác dụng phụ như mở trình duyệt web để các trang Google html / js khó hiểu có thể được đọc khi chúng được hiển thị.