Câu hỏi này chỉ thiên về đánh giá mã và tôi cho rằng bạn có thể thích nó thích nghi như một thách thức về tiền mã hóa:
Bạn được cung cấp một danh sách không trống của các ngôi nhà x được biểu diễn dưới dạng booleans. Mỗi ngày, các ngôi nhà cạnh tranh với những người liền kề. 1 đại diện cho một ngôi nhà "đang hoạt động" và 0 đại diện cho một ngôi nhà "không hoạt động". Nếu những người hàng xóm ở cả hai phía của một ngôi nhà nhất định đều hoạt động hoặc cả hai không hoạt động, thì ngôi nhà đó sẽ không hoạt động vào ngày hôm sau. Nếu không thì nó trở nên hoạt động.
def get_state_as_pos(thelist, pos):
if thelist[pos-1] == thelist[pos+1]:
return 0
else:
return 1
Ví dụ: nếu chúng ta có một nhóm hàng xóm [0, 1, 0] thì ngôi nhà ở [1] sẽ trở thành 0 vì cả ngôi nhà bên trái và bên phải đều không hoạt động. Các ô ở cả hai đầu cũng kiểm tra phía đối diện, vì vậy các lân cận ở chỉ số 0 nằm ở chỉ mục length-1
và indexn1 và ngược lại. Ngay cả sau khi cập nhật ô, bạn phải xem xét trạng thái trước của nó khi cập nhật các ô khác để thông tin trạng thái của từng ô được cập nhật đồng thời.
Hàm này lấy mảng các trạng thái và một số bước và sẽ xuất trạng thái của các ngôi nhà sau số bước đã cho.
input: states = [1, 0, 0, 0, 0, 1, 0, 0], steps = 1
output should be [0, 1, 0, 0, 1, 0, 1, 1]
input: states = [1, 1, 1, 0, 1, 1, 1, 1], steps = 2
intermediate state= [0, 0, 1, 0, 1, 0, 0, 0]
output should be [0, 1, 0, 0, 0, 1, 0, 0]
input: states = [1], steps=1
output: states= [0]
Lấy danh sách và các bước theo cách bạn thích và xuất danh sách kết quả thông qua I / O mặc định . Sơ hở tiêu chuẩn bị cấm. Đây là codegolf, câu trả lời ngắn nhất trong byte thắng!
[0, 1, 0, 0, 1, 0, 1, 1]
?