Best of Ruby Quiz Pragmatic programmers phần 8

Nó không phải chỉ là tôi đang ở gần với tác giả bài kiểm tra, tôi đảm bảo với bạn. Tôi xác nhận chúng với một cỗ bài. Không có sự xấu hổ trong một chạy khô công nghệ thấp, bằng tay để đảm bảo rằng bạn hiểu được quá trình bạn đang về để dạy cho máy tính một. Các quyết định duy nhất tôi đã thực hiện cho đến nay là giao diện | Answer 19. Secret Santas 197 Using a Random Sort One way to get a working mix of Santas to players is to use a random sort. The idea of a random sort is very basic generate random matchups until we find a correct mix. One way to code that up is as follows secret_santa def correct_match givers receivers do who i return false if who w givers i w end return true end players n begin santas rand end until correct_match santas players do s i puts players i - s end This solution just shuffles santas until correct_match verifies that none of the matchups share family names. That ensures no one will have themself or a common family member of course. This method does give us a good random shuffle of the matchups but unfortunately the performance is far from stellar. Depending on the number of players how the families break down and a little bit of bad luck this program can take considerable time to run. If you just need to assign Santas for a small group of friends something like the previous code may be adequate. However if you re running a Secret Santa game for your company and you have a good number of employees you may need to dig a little deeper for a solution. A Ring of Players Another way to approach this problem is to use a circular list. with this technique you place all the players in a circle. while arranging players or with an extra pass of processing afterward you need to separate family members so they are not directly next to each other. From there assigning Santas is as easy as matching everyone to the player next to them in the circle as shown in Figure on the following page. Report erratum Answer 19. Secret Santas 198 Figure Assigning from a Circular List Algorithms like this are far more efficient than a random sort. However this type of assignment is not truly random and does not allow for all possible permutations. Consider this in a circular list approach

Không thể tạo bản xem trước, hãy bấm tải xuống
TỪ KHÓA LIÊN QUAN
TÀI LIỆU MỚI ĐĂNG
187    27    1    30-11-2024
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.