Stream APIを使って標準ライブラリだけでぺぺっと書いたらこんな感じになった。

gist.github.com