33 lines
1.5 KiB
Plaintext
33 lines
1.5 KiB
Plaintext
;Task:
|
|
Write a program that solves the [http://c2.com/cgi/wiki?OddWordProblem odd word problem] with the restrictions given below.
|
|
|
|
|
|
;Description:
|
|
You are promised an input stream consisting of English letters and punctuations.
|
|
|
|
It is guaranteed that:
|
|
* the words (sequence of consecutive letters) are delimited by one and only one punctuation,
|
|
* the stream will begin with a word,
|
|
* the words will be at least one letter long, and
|
|
* a full stop (a period, [<b>.</b>]) appears after, and only after, the last word.
|
|
|
|
|
|
;Example:
|
|
A stream with six words:
|
|
:: <big><code>what,is,the;meaning,of:life.</code></big>
|
|
|
|
|
|
The task is to reverse the letters in every other word while leaving punctuations intact, producing:
|
|
:: <big><code>what,si,the;gninaem,of:efil.</code></big>
|
|
while observing the following restrictions:
|
|
# Only I/O allowed is reading or writing one character at a time, which means: no reading in a string, no peeking ahead, no pushing characters back into the stream, and no storing characters in a global variable for later use;
|
|
# You '''are not''' to explicitly save characters in a collection data structure, such as arrays, strings, hash tables, etc, for later reversal;
|
|
# You '''are''' allowed to use recursions, closures, continuations, threads, co-routines, etc., even if their use implies the storage of multiple characters.
|
|
|
|
|
|
;Test cases:
|
|
Work on both the "life" example given above, and also the text:
|
|
:: <big><code>we,are;not,in,kansas;any,more.</code></big>
|
|
<br><br>
|
|
|