Khước từ
Trong khi tôi biết có câu hỏi liên quan đặc biệt này , câu hỏi của tôi sử dụng hai cửa gara, một thành phần ngẫu nhiên, và tôi cũng dựa trên các sự kiện trong đời thực, thấy con trai tôi vô tình hạ một cánh cửa nhà để xe trong khi tôi đi ra khỏi nhà để xe tuần trước ... Không có gì giống như một cú đánh vào đầu để làm cho nước ép sáng tạo chảy! ;)
Bối cảnh
Lucas (con trai 15 tháng tuổi của tôi) thích chơi với điều khiển từ xa. Có hai nút trên điều khiển từ xa này, một cho cửa nhà để xe bên trái và một cho cửa nhà để xe bên phải. Cả hai nút hoạt động theo cùng một cách; nhấn một lần để cửa bắt đầu mở, nhấn lần nữa để dừng, nhấn lần nữa để bắt đầu đóng, nhấn lần nữa để dừng lại, v.v.
Lucas thích điều khiển từ xa này, anh sẽ ngẫu nhiên nhấn một trong các nút, hoặc cả hai hoặc không có gì cả. Nếu cả hai được nhấn, không có tín hiệu nào được gửi, nhưng nhấn một nút sẽ gửi tín hiệu.
Vì vậy, thử thách chơi gôn được chia thành hai phần:
Phần một
Tạo một chuỗi dài 60 ký tự đại diện cho nút bấm ngẫu nhiên của Lucas nhấn trong một phút. "Ngẫu nhiên" trong trường hợp này có nghĩa là "với cơ hội như nhau của mỗi đầu vào tại mỗi lần đánh dấu". Các nhân vật như sau:
- 0: Lucas đã nhấn không có nút hoặc đã nhấn cả hai nút. Dù bằng cách nào, không có tín hiệu đã được gửi.
- 1: Nút cho cửa nhà để xe bên trái đã được Lucas nhấn
- 2: Nút cho cửa nhà để xe bên phải đã được Lucas nhấn
Phần hai
Sử dụng chuỗi được tạo trong Phần một, mô phỏng việc mở và đóng của nhà để xe hai xe bằng cách sử dụng các số làm kích hoạt để mở, dừng và đóng các cửa này.
Cửa nhà để xe của tôi khá nhanh (xem phần Tuyên bố miễn trừ trách nhiệm ở trên). Khi bạn nhấn nút, phải mất bốn giây để mở hoặc đóng hoàn toàn.
Vì vậy, nếu đóng cửa:
- 0 giây: 0% mở (đóng); khi nhấn nút, cửa bắt đầu mở
- 1 giây: mở 25%
- 2 giây: mở 50%
- 3 giây: mở 75%
- 4 giây: mở 100%, dừng cửa
Và do đó, nếu mở:
- 0 giây: mở 100%; khi nhấn nút, cửa bắt đầu đóng
- 1 giây: mở 75%
- 2 giây: mở 50%
- 3 giây: mở 25%
- 4 giây: 0% mở (đóng), dừng cửa
Nếu một cánh cửa cụ thể đang chuyển động, một tín hiệu cho cùng một cánh cửa đó sẽ ngăn chặn nó. Tín hiệu tiếp theo được gửi đến cùng một cánh cửa sau đó sẽ gửi nó đi theo hướng ngược lại. Nếu cửa bị dừng khi trước đó đã chuyển động và hiện đang mở hoàn toàn hoặc đóng hoàn toàn khi nhận được tín hiệu "dừng", cửa sẽ đăng ký là "dừng" ở trạng thái mở hoàn toàn hoặc đóng hoàn toàn, sẵn sàng để di chuyển theo hướng ngược lại khi nhận được tín hiệu mới.
Với mô phỏng này, cả hai cửa nhà để xe sẽ ban đầu ở vị trí đóng. Vì vậy, chúng ta hãy xem danh sách các lệnh 10 giây và xem điều gì sẽ xảy ra nếu Lucas thực hiện chúng trên điều khiển từ xa:
2120221120
2: (L:0% stopped, R:0% opening)
1: (L:0% opening, R:25% opening)
2: (L:25% opening, R:50% stopped)
0: (L:50% opening, R:50% stopped)
2: (L:75% opening, R:50% closing)
2: (L:100% stopped, R:25% stopped)
1: (L:100% closing, R:25% stopped)
1: (L:75% stopped, R:25% stopped)
2: (L:75% stopped, R:25% opening)
0: (L:75% stopped, R:50% opening)
Đầu ra
Phần đầu tiên của đầu ra yêu cầu hiển thị chuỗi ký tự ngẫu nhiên dài 60 ký tự "0", "1" và "2" được tạo từ Phần một. ví dụ.
212022112021202211202120221120212022112021202211202120221120
Bên dưới chuỗi này, là việc xử lý các "tín hiệu" này theo các quy tắc được đề cập ở trên về cách các cửa nhà để xe sẽ hành xử với từng nhân vật tương ứng (trên cơ sở từng giây). Bạn sẽ kết thúc với 60 dòng là kết quả bên dưới chuỗi hiển thị ban đầu.
Mỗi dòng được xử lý này sẽ có dạng:
N: (L:X% XXXXXXX, R:Y% YYYYYYY)trong đó:
- N là ký tự thứ n từ chuỗi ngẫu nhiên tương ứng, sẽ ở dạng 0, 1 hoặc 2.
- X% là tỷ lệ phần trăm mở của cửa bên trái (không có phần đệm bằng 0)
- XXXXXXX là trạng thái của cửa bên trái. Nếu cửa không chuyển động (nghĩa là không mở hoặc đóng), trạng thái "dừng" được thi hành, nghĩa là nó đã bị dừng trong chuyển động (chỉ có thể ở mức 25%, 50% hoặc 75%) hoặc dừng khi mở hoàn toàn (100% ) hoặc đóng hoàn toàn (0%). Nếu không, cánh cửa sẽ là "mở" hoặc "đóng".
- Y% là tỷ lệ mở của cửa bên phải (không có phần đệm bằng 0)
- YYYYYYY là tình trạng của cánh cửa bên phải. Nếu cửa không chuyển động (nghĩa là không mở hoặc đóng), trạng thái "dừng" được thi hành, nghĩa là nó đã bị dừng trong chuyển động (chỉ có thể ở mức 25%, 50% hoặc 75%) hoặc dừng khi mở hoàn toàn (100% ) hoặc đóng hoàn toàn (0%). Nếu không, cánh cửa sẽ là "mở" hoặc "đóng".
Ví dụ hiển thị bên dưới bằng 10 "tín hiệu" và 10 dòng được xử lý
2120221120
2: (L:0% stopped, R:0% opening)
1: (L:0% opening, R:25% opening)
2: (L:25% opening, R:50% stopped)
0: (L:50% opening, R:50% stopped)
2: (L:75% opening, R:50% closing)
2: (L:100% stopped, R:25% stopped)
1: (L:100% closing, R:25% stopped)
1: (L:75% stopped, R:25% stopped)
2: (L:75% stopped, R:25% opening)
0: (L:75% stopped, R:50% opening)
Đây là môn đánh gôn, vì vậy đoạn mã ngắn nhất sẽ là người chiến thắng rõ ràng. Tôi đã làm điều này dễ dàng hơn một chút bằng cách sử dụng các cụm từ như "mở", "dừng" và "đóng", đó là tất cả bảy chữ cái ... vì vậy bạn có thể muốn đưa nó vào chiến lược của mình.
May mắn nhất!
1lệnh cuối cùng dừng cửa bên trái ở mức 75% trong ví dụ của bạn?