## DEV Community is a community of 793,259 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

# Discussion on: Daily Challenge #4 - Checkbook Balancing

Dylan Paulus

Nim

``````import strutils
import sequtils
import re

proc parse(input: string): string =
var separatedInput = splitLines(input)
let originalBalance = parseFloat(separatedInput[0])
var balance = originalBalance

result &= "Original_Balance: " & \$balance & "\n"

separatedInput.delete(0, 0)

for item in separatedInput:
let trimmed = split(item, " ")
let title = replace(trimmed[1], re"\W", "");
let amount = parseFloat(replace(trimmed[2], re"""[-!\$%^&*()_+|~=`{}\[\]:";'<>?,\/]""", ""))

balance = balance - amount
result &= trimmed[0] & " " & title & " " & \$amount & " Balance " & \$balance & "\n"

let totalExpense = originalBalance - balance;

result &= "Total expense " & \$totalExpense & "\n"
result &= "Average expense " & \$(totalExpense / float(len(separatedInput) - 1))  & "\n"

if isMainModule:
const input = """1233.00
125 Hardware;! 24.8?;
123 Flowers 93.5
127 Meat 120.90
120 Picture 34.00
124 Gasoline 11.00
123 Photos;! 71.4?;
122 Picture 93.5
132 Tires;! 19.00,?;
129 Stamps 13.6
129 Fruits{} 17.6
129 Market;! 128.00?;
121 Gasoline;! 13.6?;"""

echo parse(input)
``````