Vì vậy, tôi đang viết một trò chơi Rock, Paper, Scissors đơn giản trong C (nó là một nhiệm vụ bằng cách này, mặc dù điều chính là tìm hiểu ổ cắm. Tôi nghi ngờ nó sẽ là do trước khi tôi nhận được một câu trả lời tốt). Tôi có nó thiết lập như Rock = 0, Paper = 1, và kéo = 2. Có một lớp lót dễ dàng để xác định ai thắng? Tôi đã cố gắng chơi với nó trên giấy, nhưng tôi không thể tìm ra bất kỳ mẫu nào.Một lớp lót để xác định ai thắng trong Rock, Paper, Scissors
Trả lời
winner = (3 + player1 - player2) % 3;
Điều này sẽ cho 1 nếu người chơi 1 thắng, 2 nếu người chơi 2 thắng, 0 để hòa.
Giải thích: Theo trình tự Rock=0, Paper=1, Scissors=2
, mỗi mục sẽ đánh bại mục trước đó. Điều này đúng ngay cả khi chúng ta xử lý chuỗi như gói (tức là, mục cuối cùng trước tiên).
Để đặt này trong thuật ngữ toán học hơn, cho bất kỳ mục X:
- X bị đánh bại bởi
(X+1) % 3
. - X đánh bại
(X+2) % 3
.
Từ đó, nó có thể được hiển thị mà (3+X-Y) % 3
là 1 nếu X đánh bại Y, hoặc 2 nếu Y đánh bại X.
Thêm 3 là cần thiết để buộc kết quả là không âm: Các mô đun của một số âm sẽ là số âm hoặc bằng không trong C99 và phụ thuộc vào thực hiện trong C89.
Điều này thật tuyệt vời, nhưng một lớp lót như vậy cần ít nhất 3 dòng tài liệu. –
+1 Đặt tôi vào một căn phòng với hai con khỉ và ba nhà văn loại cho tất cả cõi đời đời và chúng tôi sẽ không bao giờ nghĩ ra điều đó !!! –
Tôi nghĩ rằng c có kiểu cấu trúc này: '(3 + player1 - player2)% 3 == 1? winner = "player1": (3 + player1 - player2)% 3 == 2? winner = "player2": winner = "mọi người"; ' – sixtyfootersdude
- 1. Viết một trò chơi đơn giản "Rock Paper Scissors" bot
- 2. Lớp học hoặc Jar, ai thắng?
- 3. Nhật ký Mercurial với một lớp lót
- 4. perl một lớp lót như grep?
- 5. Cách ngắn nhất (một lớp lót) để lấy đối số mặc định từ một hàm v8?
- 6. Có một lớp lót để đọc trong một tệp với một chuỗi trong C++ không?
- 7. Một lớp lót để đếm số lần xuất hiện của chuỗi trong một chuỗi [] trong Java?
- 8. Python một lớp lót (chuyển đổi perl thành pyp)
- 9. Perl một lớp lót để tìm và thay thế trong một tệp có biến số
- 10. Thuật toán để xác định người chiến thắng của Texas Hold'em Hand
- 11. Trích dẫn/Tham khảo OpenMP trong một Paper
- 12. Một lớp lót để kiểm tra xem phần tử có nằm trong danh sách
- 13. Thay thế nhiều ký tự trong một chuỗi trong C# bằng một lớp lót
- 14. Tôi đang làm gì sai trong lớp lót Perl này?
- 15. Tôi có thể xác định văn bản lót ở giữa trong tệp xml bố cục Android
- 16. Xác định một lớp học trong một JSP
- 17. Làm thế nào để xác định một lớp trong lớp riêng tư khác trong C++
- 18. cách xác định một lớp chỉ trong một dòng?
- 19. Làm thế nào để chạy đúng Perl "một lớp lót" dòng lệnh script?
- 20. xác định một lớp trong phạm vi này
- 21. Một lớp lót để đặt biến môi trường nếu không tồn tại, hãy gắn thêm
- 22. AI/Phương pháp thống kê để xác định tên của một màu
- 23. PHP - xác định các lớp bên trong một hàm
- 24. Xác định "boolness" của một lớp trong python
- 25. Một lớp lót để kiểm tra xem một trình vòng lặp có tạo ra ít nhất một phần tử không?
- 26. Một lớp lót trong Ruby để hiển thị lời nhắc, nhận đầu vào và gán cho một biến?
- 27. Xác định hằng số lớp trong PHP
- 28. Làm thế nào tôi có thể làm cho một lớp lót này hoạt động trong DOS?
- 29. Làm cách nào để thoát khỏi các ký tự đặc biệt để thay thế trong một lớp lót Perl?
- 30. Làm thế nào để tái xác định một phương pháp trong "lớp javascript" một
Nếu câu hỏi này không liên quan đến phần ổ cắm của nhiệm vụ, nó có thể dễ dàng được chuyển đổi thành một '[code-golf]'. – Pops
6 phút để có câu trả lời hay, khi nào nhiệm vụ của bạn đến hạn? –
Cũng giống như một lưu ý, tôi thường sẽ gán các giá trị đó (đá, giấy, kéo, chất nổ) cho các chuỗi hoặc ký tự. Nói chung, thực hành không tốt là làm cho chúng trở thành một con số bởi vì một cách hợp lý bạn sẽ không bao giờ muốn thêm chúng. Điều này không quan trọng đối với vấn đề chuyển nhượng nhưng tốt để có được trong thói quen vì vậy khi bạn có vấn đề lớn hơn họ không đá ass của bạn. – sixtyfootersdude