Lấy cảm hứng từ câu hỏi này sớm hơn hôm nay , tôi muốn thấy những cách thú vị mà các ngôn ngữ lập trình khác nhau có thể biến một bàn phím số thành xác suất. Thông thường, các trò chơi dựa trên gạch sẽ cho phép bạn sử dụng một bàn phím số để di chuyển theo bất kỳ hướng nào dựa trên vị trí nhân vật của bạn hiện tại. Khi tạo AI cho các game này,Math.random() * 8 không đủ, vì vậy tôi phải có một chút sáng tạo để làm cho chuyển động trông và cảm thấy hơi tự nhiên.
Một numpad được định nghĩa như vậy:
7 | 8 | 9
- - - - -
4 | x | 6
- - - - -
1 | 2 | 3
Xin lưu ý, 5 là một số không hợp lệ, vì bạn không thể tự mình di chuyển.
Tất cả các ví dụ sẽ sử dụng các xác suất này: [50, 40, 30, 20, 10]
Nếu tôi muốn tạo xác suất xung quanh 8, nó sẽ giống như thế này:
40 | 50 | 40
-- | -- | --
30 | xx | 30
-- | -- | --
20 | 10 | 20
Đầu ra sẽ là [20, 10, 20, 30, 30, 40, 50, 40](với 5 bỏ qua) hoặc[20, 10, 20, 30, null, 30, 40, 50, 40](với 5 hiện tại)
Nếu tôi muốn tạo ra chúng xung quanh 1, nó sẽ trông như thế này:
30 | 20 | 10
-- | -- | --
40 | xx | 20
-- | -- | --
50 | 40 | 30
Đầu ra sẽ là [50, 40, 30, 40, 20, 30, 20, 10](với 5 bỏ qua) hoặc [50, 40, 30, 40, null, 20, 30, 20, 10](với 5 hiện tại)
Bạn có thể viết một chương trình đầy đủ nhận đầu vào theo bất kỳ cách thông thường nào (dòng lệnh, stdin) và in đầu ra hoặc bạn có thể viết một hàm với một đối số số, in hoặc trả về đầu ra. Chương trình hoặc chức năng của bạn nên chấp nhận một số - vị trí để tạo xung quanh. Bạn nên sử dụng các xác suất sau: [50, 40, 30, 20, 10](chúng không phải được mã hóa cứng).
Mã ngắn nhất trong byte thắng. Sơ hở tiêu chuẩn là không được phép. Câu trả lời được đăng trong chuỗi liên kết không được phép. Trailing hoặc không gian hàng đầu được cho phép. Bạn có thể coi vị trí 4là vắng mặt hoặc trống, tùy thuộc vào sở thích của bạn. Tôi không quá cầu kỳ về định dạng đầu ra - in nó ra dưới dạng các chuỗi được phân tách bằng dấu phẩy hoặc dưới dạng một mảng.
(Đây là câu hỏi đầu tiên của tôi, hãy dễ dàng với tôi!)