Skip to content

Instantly share code, notes, and snippets.

@rjeczalik
Created February 4, 2015 08:36
Show Gist options
  • Save rjeczalik/aa1412a8730c473811bf to your computer and use it in GitHub Desktop.
Save rjeczalik/aa1412a8730c473811bf to your computer and use it in GitHub Desktop.
dln - prints derivative of line-separated integer series (for use with histograms)
package main
import (
"bufio"
"fmt"
"io"
"os"
"strconv"
)
func die(v interface{}) {
fmt.Fprintln(os.Stderr, v)
os.Exit(1)
}
func main() {
var r io.Reader = os.Stdin
switch len(os.Args) {
case 1:
case 2:
f, err := os.Open(os.Args[1])
if err != nil {
die(err)
}
defer f.Close()
r = f
default:
die("dln: invalid arguments")
}
s := bufio.NewScanner(r)
if !s.Scan() {
return
}
prev, err := strconv.ParseUint(s.Text(), 10, 64)
if err != nil {
die(err)
}
for s.Scan() {
cur, err := strconv.ParseUint(s.Text(), 10, 64)
if err != nil {
die(err)
}
fmt.Println(cur - prev)
prev = cur
}
if err := s.Err(); err != nil {
die(err)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment