ParadoxCat Coding Challenge
ParadoxCat Coding Challenge
ParadoxCat Coding Challenge
DECODING EXERCISE
We strongly believe that programming is fun, and we hope that you will find this assignment
entertaining as well! For a little bit of a challenge, there is nothing better than doing some
real retro-programming! Use a programming language you feel comfortable with,
and which is relevant for the |ob (for Android Developer roles, this should be Kotlin).
This exercise is purposefully far away from day-to-day tasks of our developers at Paradox
Cat, because we want to see how you approach an unknown problem and think “outside
the box”. What tool besides your IDE do you think would be useful to solve this type of
problem?
A hint for you: Time-box yourself — this is a hard assignment, and you don't need to finish
everything to demonstrate your effort. We are very much interested in your personal
style. There might be pieces of the solution on the internet. We strongly suggest you ignore
them, so they do not taint your own approach. As you might remember from school,
those who copy from their neighbour simply foil the test. After all, "You cannot believe
everything you read on the internet" - Abraham Lincoln, 02/2Zy20I9.
INSTRUCTIONS
Decode the binary data encoded in the audio file in WAV format (contained in
the ZIP archive together with these instructions).
o A single bit is the waveform between two zero-crossings:
A one signal is a rectangle signal off = 320 microseconds
A zero signol is a rectongle signal off = ó4O microseconds
o The real-life data might no longer be on ideal rectangle, since it’s been
stored on physical media (e.g., a tape drive)
The bit stream thot con be extracted from the decoded audio signal con be
converted into bytes.
o The signal starts with a lead tone of roughly 2.5 seconds (all 1-bits, or
Oxff bytes), and ends with an end block of about 0.5 seconds (all 1-bits,
or Oxff by†es).
o 11 bits are used to encode a single byte — 8 bits for the byte plus one
start bit (valued 0) and two stop bits (valued 1).
o The data is encoded with least-significant bit first.
The byte stream has the following form:
o The first two bytes are 0x42 and 0x03
o After that, the data is structured in ó4 messages of 30 bytes each,
with the 31st byte being the checksum of the 30 bytes before that (in
total 1984 bytes = ó4 » 31 bytes). The last byte before the end block is a
0x00 byte
The checksums will help you detect whether your decoding works. The olgorithm
is a simple sum modulo 25ó
If your decoding is successful, you will see a human readable text.
Pleose do not shore your solution on public plotforms like CitHub, etc. to help
us combat plagiorism cases.
Submit your whole project so that we con build and run your code. You should not
upload any temporary build files (which you would typically put in your .gitignore
file).
FURTHER EXPLANATIONS
Binory encoding
1. Modulotion system
“1” ........................ I = 320 ps
“O”...................2t = Ó4O ps
Exemple
OR
2r t t 2t t
2t t r 2t I
b b, b2 b, b, b, b, b,
START 2 STOP
BT BITS
1 Byte DATA(B bir)
Hessoge format, overall structure and checksum positions in byte-stream
Questions?
In case you‘re facing unexpected issues or not sure how to proceed properly, please
contac† us and we will provide you with more information.