Sort the letters of string in alphabetical order: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) m (→{{header|Raku}}: typo) |
m (→case insensitive: added baNAnaBAnaNA just to be awkward) |
||
Line 273: | Line 273: | ||
</pre> |
</pre> |
||
===case insensitive=== |
===case insensitive=== |
||
You can make this case insensitive by applying lower() on each internal comparison, whereas with the builtins that is done (more efficiently) by extracting a custom tagsort.<br><small>(Just to keep you on your toes I've also replaced the algorithm with a fractionaly saner insertion sort.)</small> |
You can make this case insensitive by applying lower() on each internal comparison, whereas with the builtins that is done (more efficiently) by extracting a custom tagsort.<br><small>(Just to keep you on your toes I've also replaced the algorithm with a fractionaly saner insertion sort, and just to be awkward I've added the baNAnaBAnaNA case.)</small> |
||
<!--<lang Phix>(phixonline)--> |
<!--<lang Phix>(phixonline)--> |
||
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span> |
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span> |
||
Line 287: | Line 287: | ||
<span style="color: #008080;">return</span> <span style="color: #000000;">s</span> |
<span style="color: #008080;">return</span> <span style="color: #000000;">s</span> |
||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span> |
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span> |
||
⚫ | |||
<span style="color: # |
<span style="color: #008080;">procedure</span> <span style="color: #000000;">test</span><span style="color: #0000FF;">(</span><span style="color: #004080;">string</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">)</span> |
||
<span style="color: #004080;">sequence</span> <span style="color: #000000;">cia</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">extract</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">custom_sort</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">lower</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">),</span><span style="color: #7060A8;">tagset</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">))))</span> |
|||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Original:\"%s\",\n Sorted:\"%s\"\n Builtin:\"%s\"\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">s</span><span style="color: #0000FF;">,</span><span style="color: #000000;">string_sort</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">),</span><span style="color: #000000;">cia</span><span style="color: #0000FF;">})</span> |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span> |
|||
⚫ | |||
<span style="color: #000000;">test</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"baNAnaBAnaNA"</span><span style="color: #0000FF;">)</span> <span style="color: #000080;font-style:italic;">-- (just to be awkward)</span> |
|||
<!--</lang>--> |
<!--</lang>--> |
||
{{out}} |
{{out}} |
||
Line 296: | Line 300: | ||
Sorted:" .aaccddeeeeeeffghhhiiiillmmmNnnooooooooorrrstttttttuwy" |
Sorted:" .aaccddeeeeeeffghhhiiiillmmmNnnooooooooorrrstttttttuwy" |
||
Builtin:" .aaccddeeeeeeffghhhiiiillmmmNnnooooooooorrrstttttttuwy" |
Builtin:" .aaccddeeeeeeffghhhiiiillmmmNnnooooooooorrrstttttttuwy" |
||
Original:"baNAnaBAnaNA", |
|||
Sorted:"aAaAaAbBNnnN" |
|||
Builtin:"aAaAaAbBNnnN" |
|||
</pre> |
</pre> |
||
<small>To be fair/honest, I cannot think of an easy way to make the output of baNAnaBAnaNA be (eg) AAAaaaBaNNnn anyway.</small> |
|||
=={{header|Python}}== |
=={{header|Python}}== |