13
1
Create a program with the lowest amount of characters to reverse each word in a string while keeping the order of the words, as well as punctuation and capital letters, in their initial place.
By "Order of the words," I mean that each word is split by a empty space (" "), so contractions and such will be treated as one word. The apostrophe in contractions should stay in the same place. ("Don't" => "Tno'd").
(Punctuation means any characters that are not a-z, A-Z or whitespace*).
- Numbers were removed from this list due to the fact that you cannot have capital numbers. Numbers are now treated as punctuation.
For example, for the input:
Hello, I am a fish.
it should output:
Olleh, I ma a hsif.
Notice that O, which is the first letter in the first word, is now capital, since H was capital before in the same location.
The comma and the period are also in the same place.
More examples:
This; Is Some Text!
would output
Siht; Si Emos Txet!
Any language can be used. The program with the lowest amount of characters wins.
@nasonfish Just reversing would be too broad to remain open? – Erik the Outgolfer – 2016-04-26T17:58:34.307
@ΈρικΚωνσταντόπουλος Just reversing, without having to pay attention to punctuation/spaces, doesn't seem like a good problem to golf; many languages have something like string.reverse() which could solve the whole problem for them without much effort or room for improvement. The goal was to have a problem that's a bit of a challenge to do in the first place - reversing some characters while keeping others still - and then more of a challenge to condense. – nasonfish – 2016-04-30T13:28:04.300
3How should contractions be treated? That is does
Don't touch that!
map tot'noD hcuot taht!
or tonoD't hcuot taht!
? – dmckee --- ex-moderator kitten – 2013-04-07T04:39:40.6632@dmckee "(Punctuation means any characters that are not a-z, A-Z, 1-9 or whitespace)" – John Dvorak – 2013-04-07T04:46:11.247
1@dmckee so it should map to
Nod't hcuot tath!
– John Dvorak – 2013-04-07T04:49:34.4331Reversing each word is easy. Reversing each word and keeping capitalisation is not. – John Dvorak – 2013-04-07T04:53:25.140
1Yup, that's the challenge ;) just simply reversing them would be too simple and would likely come down to the language used. This is meant to make you think. – nasonfish – 2013-04-07T04:56:17.393
I've added clarification on contractions, as well as spaces/words, in the second paragraph. – nasonfish – 2013-04-07T04:57:16.473
Now, after the edit, it's getting much more interesting :-o – John Dvorak – 2013-04-07T05:17:25.857
What case should be letters that replace a digit? Should
S'm00ch1e
becomeE'1hc00ms
orE'1HC00Ms
? I suggest treating digits as punctuation:E'h00cm1s
– John Dvorak – 2013-04-07T05:20:27.433That is a good point; would it be bad if I changed the question now to treat digits as punctuation now, after the question has been up for a while? – nasonfish – 2013-04-07T05:25:59.887
I don't think it would be bad – John Dvorak – 2013-04-07T05:28:47.893
I wouldn't call it changing a question – John Dvorak – 2013-04-07T05:35:21.597
Okay, well, I've changed the question to include that. Thanks for pointing it out. – nasonfish – 2013-04-07T05:37:57.363
Perhaps "as well as punctuation and capital letters" would read better "as well as punctuation and positions where letters are capitalized". – DavidC – 2013-04-07T12:40:22.330
Whitespace is kept in place and thus treated as punctuation. Thus "Punctuation means any characters that are not a-z, A-Z or whitespace*" should read "Punctuation means any characters that are not in a-z or A-Z." – DavidC – 2013-04-07T12:43:51.670
@DavidCarraher, Whitespace characters are still special as they separate words, otherwise “Don't touch it!” would become “tih'c uottn oD!”. If you want to rephrase that way, you have to add that “punctuations are kept in place relative to the word, whitespaces are kept in place relative to the string”. – manatwork – 2013-04-08T09:48:47.777
What about numbers 0-9? are they reversed or kept as is? – microbian – 2014-01-29T21:09:44.950