Carpool ***
Some friends have organized carpool them-self.
At the beginning of each accounting period, they write down the numbers of the car's odometer.
Every time somebody drives the car, she/he writes down the numbers when the car is returned and hers/his name.
carpool.dat
17000 start
17100 Daniel
17220 Sara
17310 David
17410 Daniel
17550 Sara
17800 David
Try to write an awk script that calculates what distance has everyone traveled with the car. Hints: Differences between numbers in two consecutive lines might be a good start. Associative arrays might come handy.
Answer for the data above:
Sara: 260
Daniel: 200
David: 340
The problem is rather easy to solve with awk (it is my humble opinion). Can it be solved easier with some of your favorite tools? (I am interested of alternative approaches)
Possible solution:
awk '{dist[$2]=dist[$2]+($1-prev); prev=$1} END{ for (i in dist) if (i !="start") printf("%15s: %g\n",i,dist[i]) }' carpool.dat
solution in Python (credits to Mihai Croicu)
import pandas as pd
frame = pd.read_csv('odometer',sep=' ',header=None)
frame['driven']=frame[0]-frame[0].shift(1)
frame.groupby([1])['driven'].sum()