We don't have enough (semi-)easy challenges for beginners. More and more of the easy ones are already taken. So I tried to come up with something that might be achievable by beginners, but that isn't a duplicate.
Input:
A single string separated with your OS new-line (i.e. \r\n
),
or an array with multiple strings.
Output - The Stairs:
Remove all non-alphabetic and non-numeric symbols. So all that's left is [A-Za-z0-9]
. And then 'build a stairs'; basically ordering them on length with the smallest at top and widest at the bottom.
Challenge rules:
- When two strings are of equal length, we merge them with each other as one big string (the order doesn't matter, so it could be from first to last or last to first, whichever of the two you prefer).
- The rule above can stack when the merged strings are of equal length again (see test case 2).
General rules:
- The input is STDIN and contains only ASCII characters. And the output is STDOUT.
- The case of the output must be the same as the input.
Each submission must be a full program able to compile and run, so not just a method/function.EDIT: I'm rather new, so perhaps it's indeed better to use the default from now on, even though I prefer a full program myself. Sorry for everyone that has already posted a full program. Feel free to edit, and I'll try to not change the post mid-challenge next time.- This is code-golf, so the shortest answer in bytes wins. I probably accept the shortest answer in a year from now.
Don't let code-golf answers discourage you from posting golfed non-codegolf languages like C# and alike! Try to come up with the shortest answer for any programming language. - Feel free to use newer languages than this question.
Test cases:
Input 1:
This is a sample text,
that you will have to use to build stairs.
The wood may be of excellent quality,
or pretty crappy almost falling apart and filled with termites.
Bla bla bla - some more text
Ok, that will do
Output 1:
Okthatwilldo
Thisisasampletext
Blablablasomemoretext
Thewoodmaybeofexcellentquality
thatyouwillhavetousetobuildstairs
orprettycrappyalmostfallingapartandfilledwithtermites
Input 2:
A
small
one
that
contains
equal
length
strings
for
the
special
rule
Output 2:
A Or alternatively: A
length length
oneforthe theforone
smallequal equalsmall
stringsspecial specialstrings
thatrulecontains containsrulethat
Steps explained of 2:
First order on length:
A
one
for
the
that
rule
small
equal
length
strings
special
contains
First merge:
A
oneforthe
thatrule
smallequal
length
stringsspecial
contains
Second order on length:
A
length
thatrule
contains
oneforthe
smallequal
stringsspecial
Second merge:
A
length
thatrulecontains
oneforthe
smallequal
stringsspecial
Third order on length:
A
length
oneforthe
smallequal
stringsspecial
thatrulecontains
Input 3:
Test,
test.
This
is
a
test.
Output 3:
a Or alternatively: a
is is
TesttestThistest testThistestTest
Input 4:
a
bc
d!
123
Output 4:
123 Or alternatively: 123
adbc dabc
contains
isn't supposed to be in output 2. It gets merged withthatrule
\$\endgroup\$