Làm thế nào tôi có thể ghi điểm thách thức với kích thước vấn đề thay đổi?


21

Có sự hỗ trợ khá mạnh mẽ về meta cho các câu hỏi viết thử thách được đưa vào chủ đề chính, miễn là các câu hỏi này cụ thể và có thể trả lời được. Tuy nhiên, chúng tôi chưa có câu hỏi nào như vậy, vì vậy tôi nghĩ rằng tôi sẽ kiểm tra vùng biển. Câu hỏi này có lẽ đang đi vào lãnh thổ chủ quan tốt, chủ quan xấu , nhưng tôi nghĩ đó có khả năng là những câu hỏi viết thách thức sẽ phải có. Để đảm bảo rằng họ vẫn tạo ra nội dung chất lượng cao, vui lòng không chỉ đăng các ý tưởng đầu cơ hoang dã trong các câu trả lời. Giải thích lý do tại sao họ tránh các vấn đề được đề cập dưới đây, hoặc lý tưởng chỉ ra các thách thức hiện có đã sử dụng thành công kỹ thuật được đề xuất trong quá khứ.

Đối với các thách thức tối ưu hóa nhất định, một tham số miễn phí khi đặt thử thách là kích thước của vấn đề cần tối ưu hóa. Theo "thách thức tối ưu hóa", tôi không có nghĩa là những thứ như thể loại của chúng tôi , trong đó câu trả lời thường được yêu cầu là chính xác / tối ưu và thử thách được ghi ở kích thước vấn đề cố định hoặc ở kích thước vấn đề lớn nhất có thể được xử lý trong một khoảng thời gian cố định. Ý tôi là những thách thức cụ thể trong đó các giải pháp tối ưu cho vấn đề tiềm ẩn được cho phép và thậm chí có khả năng, và mục tiêu là làm tốt nhất có thể.

Để chắc chắn, hãy xem xét các thách thức hải ly bận rộn , mặc dù về nguyên tắc, điều này áp dụng cho các loại thử thách khác mà không có giải pháp tối ưu nào được biết đến (tôi chỉ sử dụng các đèn hiệu bận rộn ở đây vì chúng làm trầm trọng thêm các vấn đề được đề cập dưới đây). Nói, tôi muốn thực hiện một thử thách về việc tìm kiếm hải ly Brainfuck bận rộn nhất. Tham số miễn phí trong các vấn đề hải ly bận rộn là kích thước của mã. Tôi không thể đặt thử thách mà không tham chiếu đến kích thước mã theo một cách nào đó. Theo một cách nào đó, mỗi giá trị của tham số kích thước vấn đề Nđưa ra một thách thức riêng (ngày càng khó khăn). Câu hỏi chính của tôi là làm thế nào tôi có thể làm cho một thử thách như vậy hoạt động mà không gặp phải vấn đề cân bằng.

Giải pháp rõ ràng là khắc phục N: "Tìm một chương trình Brainfuck kết thúc với các Nbyte mã nguồn in ra càng nhiều ký tự càng tốt / chạy càng nhiều dấu tích càng tốt." Này có vấn đề cân bằng lớn: nếu tôi chọn kích thước quá nhỏ, ai đó có thể nhanh chóng tìm thấy nhữnghải ly bận rộn nhất và thử thách đã qua. Nếu tôi chọn kích thước quá lớn, giải pháp tối ưu sẽ in ra một lượng ký tự thiên văn trước khi chấm dứt, điều đó có nghĩa là sẽ rất tầm thường khi tìm thấy các chương trình như vậy và thử thách trở thành một việc vặt / kiên nhẫn - điều này cũng rời khỏi lãnh thổ đèn hiệu bận rộn có thể được tìm thấy theo chương trình, và thay vào đó mọi người sẽ cần phải bắt đầu chứng minh kết quả của họ một cách chính thức mà nhiều người có thể không coi là rất vui vẻ. Tất nhiên, vấn đề này rõ rệt hơn trong các thử thách hải ly bận rộn hơn các loại khác, do sự phát triển của các giải pháp tối ưu, tuy nhiên nó vẫn áp dụng cho các thách thức khác.

Tùy chọn tiếp theo sẽ Nkhông bị giới hạn và biến nó thành một phần của tính điểm thông qua một số chức năng. Ngay cả đối với những thách thức "bình thường" để có được sự cân bằng của điểm số kết hợp là vô cùng khó khăn, nhưng trong trường hợp những người làm báo bận rộn thì về cơ bản là không thể, do thực tế là các giải pháp tối ưu phát triển nhanh Nhơn bất kỳ chức năng tính toán nào. Điều đó có nghĩa là tôi luôn có thể đánh bại câu trả lời tốt nhất hiện có bằng cách đi đến một nơi đủ lớn N, nơi tôi có thể dễ dàng tìm thấy một chương trình chạy quá lâu để tôi có thể đạt điểm cao hơn mà không cần nỗ lực nhiều.

Tôi cũng đã xem xét việc đặt cố định Nvà cho phép mọi người cũng gửi đèn hiệu cho lớn hơn Nsẽ được sử dụng làm bộ ngắt kết nối liên tiếp. Điều này có một vấn đề tương tự, ở chỗ ai đó có thể "tình cờ tìm thấy một con hải ly bận rộn không kém" cho a N, từ đó tạo ra một chiếc cà vạt và sau đó chỉ cần gửi khá nhiều thứ cho lần tiếp theo N, nơi việc tìm kiếm một số điểm lớn dễ dàng hơn (ngay cả khi tìm thấy điểm tối ưu trở nên khó hơn). Trong những trường hợp này, bạn sẽ đối phó với nhiều người bằng cách sử dụng cùng một giải pháp như thế nào? Cấm nó cũng sẽ là lạ trong trường hợp nó là tối ưu.

Có lẽ người ta có thể tấn công vào một khu vực giữa, bằng cách đưa ra một phỏng đoán có giáo dục ở mức hợp lý Nvà sau đó yêu cầu các đèn hiệu bận rộn cho tất cả các kích cỡ trong vòng 5 byte N, để có một số khoảng trống theo cả hai hướng (và sau đó bạn kết hợp ~ 10 điểm thành một kỹ thuật một hoặc một kỹ thuật khác). Điều này cũng không cảm thấy khá thỏa đáng vì dự đoán ban đầu của tôi Nvẫn có thể nằm ngoài phạm vi tạo ra những thách thức thú vị.

TL; DR: trong trường hợp thử thách là (giải quyết dưới mức tối ưu và) tối ưu hóa một vấn đề có kích thước thay đổi, làm cách nào để kết hợp kích thước vào thử thách? Lý tưởng nhất là tôi muốn mọi người có thể làm việc với một giá trị Nnằm gần đầu trên của phạm vi kích thước có thể kéo được. Nhưng chỉ trong trường hợp hóa ra các giải pháp tối ưu là có thể cho điều đó N, sẽ thật tuyệt nếu các giải pháp lớn hơn một chút Nsẽ bắt đầu cân nhắc, để thử thách có thể tiếp tục với quy mô vấn đề thú vị hơn.


6
Tôi thích điều này như một mô hình cho các câu hỏi viết thử thách vì nó không dành riêng cho PPCG. Đó không phải là "Chúng ta nên làm điều này như thế nào?" nhưng "cách tốt để làm điều này là gì?". Tôi có thể tưởng tượng những thử thách như vậy được chạy trên một trang web sở thích lập trình hoặc tại một cuộc thi trực tiếp.
xnor

Đặt tldr ở đầu!
Majora320

1
@ Majora320 ... nhưng sau đó đổi d thành w :-)
Luis Mendo

Câu trả lời:


3

Tìm N tiếp theo

Thách thức sẽ chỉ ra Nrằng một bài nộp nên bắt đầu từ.

Sau đó, mọi người sẽ gửi câu trả lời tại hiện tại N. Nếu một đệ trình nhất định được chứng minh là tối ưu, thì Nsẽ tăng thêm 1 và quá trình lặp lại.

Có một số cách để ghi điểm này:

  1. Điểm số trình tốt nhất hiện tại N
  2. Đưa ra một điểm để đệ trình tốt nhất hiện tại N, cộng với một điểm cho mỗi giải pháp tối ưu
  3. Giống như số 2, nhưng cũng đưa ra một điểm cho người đã chứng minh rằng một bài nộp được đưa ra là tối ưu.

1

Cho điểm cho các giải pháp trong phạm vi N giới hạn

Cho phép Ntrong một giới hạn cố định. Giới hạn dưới nên loại trừ các câu trả lời rõ ràng tầm thường và rằng giới hạn cao hơn không nên quá xa giới hạn dưới.

Sau đó, cho 1 điểm cho mỗi người có giải pháp tốt nhất cho mỗi người Ntrong giới hạn. Nếu cao hơn Ncó nghĩa là giải pháp khó hơn, sau đó cho N điểm cho họ. (hoặc một số công thức dựa trên N).

Phương pháp này tương tự như cách AZsPC thực hiện, nhưng một phần điểm không được đưa ra.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.