cellular automatan swift
//one dimensional cellular automatan
struct Customer {
var cash:Int
var items:Int
}
//forms the linear gird
func MakeCustomers() -> [Customer] {
return [Customer](count:100, repeatedValue:Customer(cash:10, items:1))
}
func process(inout customers:[Customer]) -> Void {
for i in 0...customers.count-2 {
if customers[i+1].cash > 5 {
customers[i].cash -= 1
customers[i+1].items += 1
}
else {
customers[i].cash += customers[i+1].cash
}
}
}
var test = MakeCustomers()
process(&test)
process(&test)
process(&test)
process(&test)
process(&test)
process(&test)
process(&test)
print(test)
/*[Customer(cash: 9, items: 1), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 9, items: 7), Customer(cash: 14, items: 7), Customer(cash: 3, items: 6), Customer(cash: 10, items: 8)]*/