Skip to content

dsyer/java-run-length-encoding

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Java Run-Length Encoding

This sample demonstrates functions of finite streams that maintain stream-related state.

The Encode function takes an input stream of integers and emits a run-length encoding output stream in which each maximal consecutive sequence of a given value is replaced by the size of the sequence followed by the value. For example, the stream:

< 0, 1, 1, 2, 2, 2 >

encodes to:

< 1, 0, 2, 1, 3, 2 >

Encoding or decoding an empty input stream results in an empty output stream.

The Decode function takes a run-length encoded input stream and emits the decoded output stream. For example, the stream:

< 3, 1, 1, 0 >

decodes to:

< 1, 1, 1, 0 >

Optional puzzle: of course Encode followed by Decode produces the original stream of integers, but when will Decode followed by Encode not produce the original stream of integers? (Strong hint - don't look if you want to solve this puzzle yourself)

Answer: here

About

A riff sample involving functions of finite streams that maintain stream-related state

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 88.7%
  • Java 11.3%