To determine which notes can be played based on the given rules, we need to keep track of the last one or two successfully played notes. A `deque` (double-ended queue) of maximum length 2 is an efficient way to do this. Here's the logic: 1. Initialize an empty list `played_notes` to store the sequence of notes that are successfully played. 2. Initialize a `collections.deque` with `maxlen=2` called `played_history` to keep track of the last two successfully played notes. 3. Iterate through each `note` in the `generated_notes` sequence. 4. For each `note`, check the rules in order: * **Rule 1 (0, 1, 2):** If `note` is 0, 1, or 2, it can always be played. * **Rule 2 (3, 4, 5, 6):** If `note` is 3, 4, 5, or 6, it can be played *only if* there's a `prev_note` in `played_history` and `prev_note` is equal to `note - 3`. * **Rule 3 (7):** If `note` is 7, it can be played *only if* there are at least two notes in `played_history`, and the `prev_note` is 6, and the `prev_prev_note` is 5. 5. If a `note` meets any of the conditions, add it to `played_notes` and update `played_history` by appending the `note`. The `deque`'s `maxlen` will automatically handle removing the oldest note if it exceeds 2 elements. 6. If a `note` does not meet any conditions, it is skipped, and `played_notes` and `played_history` remain unchanged. Let's apply this logic to the given `generated_notes`: `[0, 1, 3, 4, 0, 3, 5, 6, 7]` * **`note = 0`**: Rule 1. Play 0. * `played_notes = [0]` * `played_history = deque([0])` * **`note = 1`**: Rule 1. Play 1. * `played_notes = [0, 1]` * `played_history = deque([0, 1])` * **`note = 3`**: Rule 2 (requires `prev_note == 0`). `played_history` is `[0, 1]`, so `prev_note`
Truyện được đăng tại truyentop.net. Đọc tiếp tại đây: http://truyentop.net/gia-thien-ky/4947855/chuong-1102.html
Chính sách bảo mậtQuy định nội dungBản quyềnĐiều khoảnQuyền riêng tư
Website hoạt động dưới Giấy phép truy cập mở Creative Commons Attribution 4.0 International License.