Mục tiêu
Viết một thói quen chấp nhận một chuỗi các ký tự ASCII có thể in, s và trả về một chuỗi chứa các ký tự giống như s , được sắp xếp lại để không có chuỗi con hai ký tự xuất hiện nhiều hơn một lần. Chương trình phải xử lý tất cả các chuỗi điểm chuẩn (xem bên dưới) trong mỗi phút dưới một máy tính hiện đại . Tôi cũng sẽ trao phần thưởng đặc biệt là 50 đại diện cho câu trả lời cho điểm thấp nhất xử lý bất kỳ chuỗi 30 ký tự hợp lệ nào trong vòng một phút.
Ví dụ, với đầu vào Mississippi
, đầu ra hợp lệ sẽ là issiMspiips
(không có chuỗi con hai ký tự xuất hiện hai lần), trong khi đầu ra không hợp lệ sẽ là ipMsispiiss
(vì chuỗi con is
xuất hiện hai lần).
Các thói quen có thể có hình thức:
- một chương trình hoàn chỉnh đọc từ
stdin
(hoặc tương đương) hoặc dòng lệnh và xuất rastdout
(hoặc tương đương) - một hàm chấp nhận một đối số chuỗi đơn và trả về một chuỗi
Bạn có thể cho rằng chuỗi đầu vào luôn thừa nhận ít nhất một đầu ra hợp lệ.
Các thách thức
Thói quen của bạn phải bao gồm 5 dòng mã trở lên được phân tách bằng dòng mới. Các dòng trống (chỉ bao gồm các dòng chỉ chứa khoảng trắng) được bỏ qua trong tất cả các ngữ cảnh và không được tính vào tổng số dòng.
Hoán đổi bất kỳ hai dòng trong mã nguồn của bạn phải tạo ra một lỗi nghiêm trọng. Theo "lỗi nghiêm trọng", chúng tôi đề cập đến bất kỳ điều kiện nào sau đây:
- mã nguồn không biên dịch được, với trình biên dịch / trình thông dịch khai báo lỗi nghiêm trọng
- thường trình hủy bỏ với lỗi nghiêm trọng trong thời gian chạy hoặc ngoại lệ thời gian chạy chưa xử lý
- thói quen bị buộc phải chấm dứt chương trình đột ngột, bất thường không tạo ra bất kỳ đầu ra nào ngoại trừ thông báo lỗi có thể và / hoặc kết xuất ngăn xếp
Ngoài ra , các khối mã liền kề không chứa ký tự dòng mới có thể được sử dụng thay cho các dòng. Mỗi khối này phải được hiển thị trên dòng riêng của chúng trong tệp nguồn, với sự hiểu rằng các dòng mới bị loại bỏ trước khi mã nguồn được biên dịch / giải thích.
Ví dụ: mã
aaaa
bbbb
cccc
sẽ ngưng tụ để
aaaabbbbcccc
trước khi được đánh giá.
Trong chế độ này, điều kiện lỗi nghiêm trọng áp dụng cho việc hoán đổi bất kỳ hai khối mã nào (và do đó để hoán đổi các dòng trong mã nguồn trước khi các dòng mới bị loại bỏ). Do đó, trong ví dụ trên, các thói quen aaaaccccbbbb
, bbbbaaaacccc
và ccccbbbbaaaa
tất cả phải tạo ra các lỗi nghiêm trọng, tại thời điểm tính toán hoặc thời gian chạy.
Đệ trình sử dụng chế độ thay thế này sẽ tuyên bố việc sử dụng nó.
Chấm điểm
Đặt n là số lượng dòng văn bản không trống trong tệp nguồn của bạn, với n ≥ 5. Gọi c là số byte được bao gồm bởi dòng văn bản dài nhất (theo độ dài byte) trong tệp nguồn của bạn, không tính bất kỳ dòng mới nào.
Điểm của bài nộp được đưa ra bởi c ( n + 10).
Bài nộp với số điểm thấp nhất là người chiến thắng.
May mắn nhất. ;)
Chuỗi điểm chuẩn
Abracadabra Alacazam
Is Miss. Mississauga Missing?
Ask Alaska's Alaskans
GGGGAAAATTTTCCCCgggaaatttccc
A Man A Plan A Canal Panama
Mspiisiipss
hợp lệ vì sự lặp lại duy nhất ii
không xảy ra trong Mississippi
?
CooliO
, đầu raoOoCli
?