Đưa ra một thử thách liên quan đến một tài liệu tham khảo Star Trek ngay sau ngày 4 tháng 5 có thể được tán thành, nhưng rồi đây.
Bạn, Luke, Anakin, Palpatine, Yoda và Han Solo tham gia vào một giải đấu điên rồ gồm Rock, Paper, Scissor, Lizard, Spock.
Điều hấp dẫn ở đây là bạn chỉ được phép sử dụng một trật tự di chuyển cố định. Nếu đơn đặt hàng của bạn là "R", thì bạn phải sử dụng Rock, cho đến khi bạn thua hoặc giành chiến thắng trước mọi người. Nếu đơn đặt hàng của bạn là RRV, thì bạn phải sử dụng 2 Đá theo sau là Spock và tiếp tục lặp lại cho đến khi bạn thắng hoặc thua.
Luke, Anakin, Palpatine, Yoda và Han Solo đã gửi đơn đặt hàng tương ứng của họ và bạn là một hacker chuyên gia đã nắm trong tay từng đơn hàng của họ!
Với kiến thức này, bạn sẽ thiết kế thứ tự cho giải đấu. Vì mọi người đều muốn giành chiến thắng, bạn muốn tạo một đơn đặt hàng sao cho bạn chiến thắng giải đấu bằng cách đánh bại tất cả mọi người. Nhưng điều này có thể không thể trong mọi trường hợp.
Trong trường hợp có một lệnh chiến thắng có thể, in nó ra. Nếu không có cách nào khả thi để bạn giành chiến thắng, hãy in ra -1 (hoặc 0 hoặc Sai hoặc "không thể")
Đầu vào : danh sách 5 đơn hàng
Đầu ra : một đơn hàng hoặc -1
Đầu vào mẫu 1
R
P
S
L
V
Kết quả mẫu 1
-1
Giải thích 1
Bất kể bạn chơi gì trong lần di chuyển đầu tiên, sẽ có ít nhất một người đánh bại bạn, do đó bạn không thể giành chiến thắng.
Đầu vào mẫu 2
RPS
RPP
R
SRR
L
Kết quả mẫu 2
RPSP
Giải thích 2
Khi bạn chơi Rock trong lần di chuyển đầu tiên, cuối cùng bạn sẽ đánh bại "L" và "SRR" và trói lại với những người còn lại. Điều này là do Lizard và Kéo thua Rock. Khi bạn chơi Paper tiếp theo, bạn sẽ đánh bại "R" và hòa với số còn lại 2. Điều này là do Rock thua Paper. Khi bạn chơi Kéo tiếp theo, bạn sẽ giành chiến thắng trước "RPP" khi Scissor đánh bại Giấy.
Cuối cùng, bạn sẽ đánh bại "RPS" bằng Paper của mình khi Paper beats Rock.
Dưới đây là danh sách các ký hiệu (bạn có thể sử dụng bất kỳ 5 chữ nào, nhưng vui lòng ghi rõ trong câu trả lời của bạn):
R : Rock
P : Paper
S : Scissor
L : Lizard
V : Spock
Dưới đây là danh sách tất cả các kết quả có thể xảy ra:
winner('S', 'P') -> 'S'
winner('S', 'R') -> 'R'
winner('S', 'V') -> 'V'
winner('S', 'L') -> 'S'
winner('S', 'S') -> Tie
winner('P', 'R') -> 'P'
winner('P', 'V') -> 'P'
winner('P', 'L') -> 'L'
winner('P', 'S') -> 'S'
winner('P', 'P') -> Tie
winner('R', 'V') -> 'V'
winner('R', 'L') -> 'R'
winner('R', 'S') -> 'R'
winner('R', 'P') -> 'P'
winner('R', 'R') -> Tie
winner('L', 'R') -> 'R'
winner('L', 'V') -> 'L'
winner('L', 'S') -> 'S'
winner('L', 'P') -> 'L'
winner('L', 'L') -> Tie
winner('V', 'R') -> 'V'
winner('V', 'L') -> 'L'
winner('V', 'S') -> 'V'
winner('V', 'P') -> 'P'
winner('V', 'V') -> Tie
Đây là mã golf , vì vậy ít byte nhất giành chiến thắng.
PS: Hãy cho tôi biết nếu bạn cần thêm trường hợp thử nghiệm.