Skip to content

Instantly share code, notes, and snippets.

@wilks7
Created December 16, 2015 05:11
Show Gist options
  • Save wilks7/0c5e3ab4f5d95c945579 to your computer and use it in GitHub Desktop.
Save wilks7/0c5e3ab4f5d95c945579 to your computer and use it in GitHub Desktop.
SplittingExpenses
//: Playground - noun: a place where people can play
import UIKit
let users = ["Josh","David","Craig","Mike"]
class Expense{
var owees: [String]
var payedBy: String
var price: Double
var title: String
init(owees: [String], payedBy: String, price: Double, title: String){
self.owees = owees
self.payedBy = payedBy
self.price = price
self.title = title
}
}
var allExpenses:[Expense] = []
let tools = Expense(owees: users, payedBy: users[0], price: 80.00, title: "tools")
let food = Expense(owees: users, payedBy: users[2], price: 100.00, title: "food")
let toys = Expense(owees: [users[0],users[1],users[3]], payedBy: users[1], price: 30.00, title: "toys")
let beer = Expense(owees: [users[1],users[2]], payedBy: users[3], price: 35.00, title: "beer")
let books = Expense(owees: [users[0],users[2]], payedBy: users[0], price: 30.00, title: "books")
let gas = Expense(owees: users, payedBy: users[3], price: 80.00, title: "gas")
allExpenses.append(tools)
allExpenses.append(food)
allExpenses.append(toys)
allExpenses.append(beer)
allExpenses.append(books)
allExpenses.append(gas)
var allDic: [String:[String:Double]] = [:]
var oweDic: [String: Double] = [:]
for user in users{
for j in users{
oweDic[j] = 0.0
}
allDic[user] = oweDic
}
for expense in allExpenses{
let allUsers = users
let oweeNumber = expense.owees.count
let owees = expense.owees
let price = Double(expense.price)
let pricePerUser = Double(price/Double(oweeNumber))
let payedBy = expense.payedBy
for owee in owees{
print("Owees: \(owees)")
print("Paid By: \(allDic[payedBy]!)")
if owee != payedBy{
allDic[payedBy]![owee]! += pricePerUser
allDic[owee]![payedBy]! -= pricePerUser
}
print("\(expense.payedBy) paid for \(expense.title) and \(expense.owees) owe him \(pricePerUser) each")
print("\(allDic[payedBy]!)")
print("")
}
}
print("TOTALS")
print("-------------")
print(allDic)
print("")
print("")
print("Totals in words")
print("----------------")
for user in users{
print("")
print("\(user) totals:")
for dic in allDic[user]!.keys{
if allDic[user]![dic]! < 0 {
print("\(user) owes \(dic) \(allDic[user]![dic]!)")
}
else{
print("\(dic) owes \(user) \(allDic[user]![dic]!)")
}
}
}
print("------------------------")
for user in users{
for dic in allDic[user]!.keys{
var tempUp: Double = 0.00
var tempUser: String = ""
if allDic[user]![dic]! > 0 {
if allDic[user]![dic]! > tempUp{
tempUp = allDic[user]![dic]!
tempUser = dic
}
}
else if allDic[user]![dic]! < 0{
if allDic[user]![dic]! <= tempUp && tempUp > 0{
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment