Nhiệm vụ của bạn - nếu bạn chấp nhận nó - là viết một chương trình giúp hiểu đề xuất của tôi về meta bằng cách tính người chiến thắng trong một cuộc thi đảo ngược mã-golf . Tất nhiên, câu trả lời cho câu hỏi này sẽ được coi là đề xuất, vì vậy chương trình của bạn (nếu đúng) có thể tính toán xem câu trả lời của bạn có trở thành câu trả lời được chấp nhận hay không.
Quy tắc
- Chương trình đọc một tệp có nhiều dòng có định dạng sau (xem ví dụ bên dưới): [Ngôn ngữ] TAB [NumberOfChar character] TAB [LinkToAnswer]
- Tên tệp được truyền làm đối số cho chương trình của bạn hoặc tệp được chuyển hướng đến đầu vào tiêu chuẩn của chương trình của bạn. Đó là lựa chọn của bạn, vui lòng đề cập đến phương pháp khi đưa ra câu trả lời
- Dự kiến định dạng đầu vào là chính xác. Không cần xử lý lỗi.
- Số lượng nhân vật là tích cực. Chương trình của bạn phải xử lý độ dài lên tới 65535. 64k là đủ cho tất cả mọi người :-)
- Chương trình đưa ra các dòng trên đầu ra tiêu chuẩn đáp ứng ý tưởng của đề xuất meta, đó là
- mã ngắn nhất của một ngôn ngữ lập trình cụ thể sẽ thắng (giai đoạn giảm)
- mã dài nhất trong số tất cả các ngôn ngữ lập trình sẽ thắng (giai đoạn sắp xếp)
- trong trường hợp bốc thăm, tất cả các câu trả lời có cùng độ dài sẽ được in
- Thứ tự của đầu ra không quan trọng
- Mặc dù mã dài nhất chiến thắng, đây không phải là mã bowling . Mã của bạn phải càng ngắn càng tốt cho ngôn ngữ lập trình của bạn.
- Câu trả lời về các ngôn ngữ lập trình hiếm khi không cố rút ngắn mã đáng bị downvote, vì họ cố gắng bỏ qua ý định của loại câu hỏi này. Nếu chỉ có một câu trả lời cho một ngôn ngữ lập trình cụ thể, nó sẽ được coi là một ứng cử viên chiến thắng, vì vậy bạn có thể bắt đầu thổi mã của nó.
Ví dụ về tệp đầu vào (được phân tách bằng các tab đơn nếu có vấn đề với định dạng):
GolfScript 34 http://short.url/answer/ags
GolfScript 42 http://short.url/answer/gsq
C# 210 http://short.url/answer/cs2
Java 208 http://short.url/answer/jav
C# 208 http://short.url/answer/poi
J 23 http://short.url/answer/jsh
Ruby 67 http://short.url/answer/rub
C# 208 http://short.url/answer/yac
GolfScript 210 http://short.url/answer/210
Sản lượng dự kiến (thứ tự không quan trọng):
C# 208 http://short.url/answer/poi
C# 208 http://short.url/answer/yac
Java 208 http://short.url/answer/jav
Cập nhật
Một số chương trình dựa trên thực tế là có một mức tối đa duy nhất (như chương trình ký tự C # 210). Xuất phát từ thực tế, ai đó cũng có thể viết chương trình GolfScript với 210 ký tự. Đầu ra sẽ giữ nguyên. Tôi đã thêm một GolfScript như vậy vào đầu vào.
Cập nhật 2
Như đã đề xuất, tôi đã thử lại (vẫn là golf-code) và hạn chót là 2014 / 03-06 (có vẻ như là một ngày tùy ý, nhưng sau đó tôi sẽ trở lại Đức sau khi đi du lịch).
Kết quả cuối cùng
Tôi quyết định bỏ phiếu như sau:
- Câu trả lời trong đó số lượng ký tự không thể được xác nhận nhận được một nhận xét để giải thích số lượng.
- Câu trả lời có thể dễ dàng được giảm nhận nhận xét, đề xuất chỉnh sửa và đi vào kết quả với giá trị đếm thấp hơn. (Hy vọng tôi đã thấy điều đó trước).
- Câu trả lời không biên dịch được một downvote. (Khá là một nhiệm vụ khó khăn khi nó bật ra).
- Các câu trả lời không được đánh gôn sẽ nhận được một downvote (như được mô tả trong các quy tắc đã có).
- Câu trả lời tạo ra sản lượng dự kiến sẽ nhận được một upvote. Do một số câu trả lời không hoạt động như mong đợi, tôi sử dụng 4 tệp đầu vào khác nhau và kiểm tra kết quả mong đợi.
Cuối cùng, người chiến thắng được xác định bằng cách cung cấp bảng câu trả lời đủ điều kiện làm đầu vào cho chương trình tham chiếu của tôi (cộng với kiểm tra lại kết quả bằng tay). Nếu câu trả lời của riêng tôi là câu trả lời, tôi sẽ loại nó khỏi danh sách. Trong trường hợp có nhiều người chiến thắng, tôi sẽ chỉ chọn một. Do đó, một số tiền thưởng có thể kiếm được:
- câu trả lời chấp nhận đầu vào nhiều hơn mong đợi (ví dụ: ngoài phạm vi được xác định)
- câu trả lời sử dụng một ý tưởng thông minh làm cho nó ngắn
Tôi đã chụp nhanh các câu trả lời vào ngày 6 tháng 3 năm 2014, 19:45 UTC + 1. Việc phân tích đang diễn ra. Kiểm tra tất cả các câu trả lời khó hơn dự kiến ...