jweinst1
6/9/2016 - 11:44 PM

cellular automatan swift

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)]*/