Sort the letters of string in alphabetical order: Difference between revisions

Line 382:
 
=={{header|Eiffel}}==
 
<lang eiffel>
class
SORT_STRING_LETTERS
 
feature -- Basic Ops
 
sort_string (s: STRING): STRING
-- Perform `sort_string' on `s' such that
-- each letter is in ascending alphabetical order.
note
deviation: "[
This Eiffel example deviates from the task requirement for this
Rosetta Code task in that we reuse Eiffel Base library code for
the {SORTED_TWO_WAY_LIST [G]}. We do this for two very good reasons:
1. Reuse is king. Never code what is already coded and tested.
2. The library code is readily available for examination
(i.e. the library code is not hidden and unaccessible).
Based on #1 and #2 above, examine the code in: {SORTED_TWO_WAY_LIST}.make_from_iterable
Specifically, look at the `extend' routine and the routines it calls (i.e. `search_after',
`put_left', and `back'). These routines will tell you the story of how sorting can
be coded in Eiffel. There is no need to rehash that code here.
]"
local
l_list: SORTED_TWO_WAY_LIST [CHARACTER]
do
create l_list.make_from_iterable (s) -- Add & Auto-sort string by chars
create Result.make_empty -- Create the Result STRING
⟳ c:l_list ¦ Result.append_character (c) ⟲ -- Populate it with the sorted chars
Result.adjust -- Remove the leading white space
end
 
end
</lang>
 
And the Test Code to operate it.
 
<lang eiffel>
class
RC_SORT_STRING_LETTERS_TEST_SET
 
inherit
TEST_SET_SUPPORT
 
feature -- Test routines
 
rc_sort_string_letters_test
-- Test {SORT_STRING_LETTERS}.
note
testing:
"covers/{SORT_STRING_LETTERS}",
"execution/isolated",
"execution/serial"
do
assert_strings_equal ("sorted", now_is_string, item.sort_string ("Now is the time for all good men to come to the aid of their country."))
end
 
feature {NONE} -- Test Support
 
now_is_string: STRING = "[
.Naaccddeeeeeeffghhhiiiillmmmnnooooooooorrrstttttttuwy
]"
 
item: SORT_STRING_LETTERS
-- An `item' for testing.
once
create Result
end
 
end
</lang>
 
=={{header|F_Sharp|F#}}==
Anonymous user