The goal of this challenge is to write a function that accepts a string and returns the same string with all even indexed characters uppercased and all odd indexed characters lowercased.
This indexing should be zero-based with the index in position zero being considered even. The input string will consist of only alphabetical characters and spaces. Spaces should only be present when there are multiple words.
Example:
to_weird_case('String'); # => returns 'StRiNg'
to_weird_case('Weird string case') # => returns 'WeIrD StRiNg CaSe'
Happy coding~!
This challenge comes from user xDranik. Thank you to CodeWars, who has licensed redistribution of this challenge under the 2-Clause BSD License!
Want to propose a challenge for a future post? Email yo+challenge@dev.to with your suggestions!
Top comments (32)
Here goes a simple oneliner:
And the result:
I believe
case
should be printed asCaSe
as first letter (index 0) should be always capitalized.Indeed! Didn't catch that! Here is a little fix for that:
which output is:
Index 0 refers to the first letter of the entire string; we don't need to consider each word separately, just the string as a whole
Sorry about that.
I meant it as
index 0
of each word.the example shows the result should be
Ah, you're right, that's interesting. I hadn't noticed that discrepancy with the capital 'C' in 'CaSe'; that makes this a more interesting challenge!
The original post should probably call that out a little more clearly, because it raises additional questions: Should punctuation count as a word separator? e.g., should 'word-other' become 'WoRd-oThEr' or 'WoRd-OtHeR'? Or should we only worry about letters and spaces? What characters are we considering?
@thepracticaldev , any help here?
For some reason, CodeWars isn't loading for me so won't be able to check the edge cases... 🤔
Python solution:
EDIT
@dance2die pointed out in this comment that the multi-word example in the post seems to suggest that each word should be considered and cased separately, rather than the whole string. In that case, this becomes a bit more interesting.
Here's a simple modification to account only for spaces separating words:
But this could get a lot more complex if we need to account for things like punctuation and other whitespace characters.
As one last example, here's one that handles alternative whitespace characters using regular expressions:
In Js ( Many Optimised solutions are already given, just tried different way)
Ruby, not optimal 🙃
JavaScript
And as an extension, I used that function to create a Sponge Bob Mocking meme generator! (which is the first thing that I thought when I saw the challenge)
A simple solution in Javascript:
At work, we just call this serial killer case :P
Python one liner
My solution in js
I've implemented based off of La blatte's answer.
prints,