5.40 · exercise
Caesar's little secret
The line in the stdin box was encrypted the way Julius Caesar liked it: every lowercase letter shifted three places forward, wrapping around the end of the alphabet. The starter reads the line into secret; decode it in place and print the result.
Walk the bytes with ldrb. For each lowercase letter, shift back by three; if that falls below 'a', add 26 to wrap around. Store the decoded byte back with strb and leave every other byte alone: spaces, digits, punctuation, and the newline fgets kept. The printf at the bottom prints the decoded line.
What is checked
- the decoded message is printed
- the program exits cleanly
- the decode happens byte by byte in memory (
ldrbandstrb, no pasting the answer in) - the same holds for other lines you do not see: letters that wrap past
'a', an empty line, and lines with digits and punctuation
specification
stdindvvhpeob lv ixq
stdoutprints the right output
exitexits with the right code
sourceuses
ldrbsourceuses
strbhiddenright output and exit code on 4 more inputs you do not see
We run your program on the input above and on the hidden ones, and compare what it does. Nothing is matched against a stored solution.