Với mục đích của thử thách này, chúng tôi sẽ xác định khoảng trắng là chỉ các nguồn cấp dữ liệu (0x0A) và khoảng trắng (0x20). Lưu ý rằng hầu hết các ngôn ngữ và hương vị regex đều coi nhiều ký tự khác là khoảng trắng, cả bên trong và bên ngoài phạm vi ASCII, do đó bạn có thể không sử dụng được các phần tử tương ứng.
Thử thách của cảnh sát
Bạn nên viết một chương trình hoặc hàm bằng ngôn ngữ bạn chọn, lấy một chuỗi, bao gồm các ký tự ASCII (trừ NUL), làm đầu vào và xuất nó với tất cả khoảng trắng được loại bỏ. Ví dụ: nếu bạn nhận được đầu vào sau:
H e l l o,
W o r l d!
Bạn nên xuất
Hello,World!
Việc gửi của bạn sau đó sẽ là mã nguồn của bạn với tất cả khoảng trắng được loại bỏ (quá trình tương tự như chuyển giải pháp của bạn làm đầu vào cho chính nó, mặc dù giải pháp của bạn cũng có thể chứa các ký tự bên ngoài phạm vi ASCII). Mục tiêu của bạn là làm cho nó càng khó càng tốt để tìm ra nơi cần chèn khoảng trắng để khôi phục một giải pháp hợp lệ trong ngôn ngữ bạn chọn. Lưu ý rằng những tên cướp có thể chèn ít khoảng trắng hơn bạn đã xóa, nhưng không nhiều hơn. Cũng nên nhớ rằng những tên cướp không cần phải khớp mã chính xác của bạn, chúng chỉ cần tìm bất kỳ giải pháp hợp lệ nào.
Câu trả lời của bạn nên có những điều sau đây:
- Ngôn ngữ (và phiên bản nếu cần thiết) mà bạn đã viết giải pháp của mình.
- Số byte của giải pháp của bạn trước khi xóa khoảng trắng.
- Giải pháp của bạn với khoảng trắng được loại bỏ.
Giải pháp của bạn có thể là chương trình hoặc chức năng, nhưng không phải là đoạn trích và bạn không được sử dụng môi trường REPL. Bạn có thể nhận đầu vào thông qua STDIN, đối số dòng lệnh hoặc đối số chức năng và đầu ra thông qua STDOUT, giá trị trả về của hàm hoặc tham số hàm (out).
Vì lợi ích của sự công bằng, phải có một trình thông dịch hoặc trình biên dịch có sẵn miễn phí cho ngôn ngữ bạn chọn.
Bạn không được sử dụng các hàm dựng sẵn để băm, mã hóa hoặc tạo số ngẫu nhiên (ngay cả khi bạn chọn trình tạo số ngẫu nhiên cho một giá trị cố định). Giải pháp của bạn phải có thể xử lý bất kỳ chuỗi nào từ 100 ký tự trở xuống trong vòng dưới 10 giây trên một máy tính để bàn hợp lý.
Nếu câu trả lời của bạn không bị bẻ khóa trong vòng 7 ngày (168 giờ), bạn có thể tiết lộ giải pháp của riêng mình tại thời điểm câu trả lời của bạn được coi là an toàn . Miễn là bạn không tiết lộ giải pháp của mình, nó vẫn có thể bị bọn cướp bẻ khóa, ngay cả khi 7 ngày đã trôi qua. Câu trả lời an toàn ngắn nhất sẽ thắng (được đo trước khi xóa khoảng trắng).
Nếu câu trả lời của bạn bị bẻ khóa, vui lòng cho biết điều này trong tiêu đề câu trả lời của bạn, cùng với liên kết đến câu trả lời của tên cướp tương ứng.
Tới đây cho phần của bọn cướp.
Đệ trình không bị xáo trộn
<script>site = 'meta.codegolf'; postID = 5686; isAnswer = false; QUESTION_ID = 103182;</script><script src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'></script><script>jQuery(function(){var u='https://api.stackexchange.com/2.2/';if(isAnswer)u+='answers/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJeRCD';else u+='questions/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJO6t)';jQuery.get(u,function(b){function d(s){return jQuery('<textarea>').html(s).text()};function r(l){return new RegExp('<pre class="snippet-code-'+l+'\\b[^>]*><code>([\\s\\S]*?)</code></pre>')};b=b.items[0].body;var j=r('js').exec(b),c=r('css').exec(b),h=r('html').exec(b);if(c!==null)jQuery('head').append(jQuery('<style>').text(d(c[1])));if (h!==null)jQuery('body').append(d(h[1]));if(j!==null)jQuery('body').append(jQuery('<script>').text(d(j[1])))})})</script>