2016 Update
This commit is contained in:
parent
948b86eafa
commit
dcf5d15da3
7965 changed files with 139854 additions and 31002 deletions
|
|
@ -1,4 +1,10 @@
|
|||
{{omit from|BBC BASIC}}
|
||||
Sort an array (or list) of strings in order of descending length, and in ascending lexicographic order for strings of equal length. Use a sorting facility provided by the language/library, combined with your own callback comparison function.
|
||||
|
||||
'''Note:''' Lexicographic order is case-insensitive.
|
||||
;Task:
|
||||
Sort an array (or list) of strings in order of descending length, and in ascending lexicographic order for strings of equal length.
|
||||
|
||||
Use a sorting facility provided by the language/library, combined with your own callback comparison function.
|
||||
|
||||
|
||||
'''Note:''' Lexicographic order is case-insensitive.
|
||||
<br><br>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
babel> ("Here" "are" "some" "sample" "strings" "to" "be" "sorted") strsort ! lsstr !
|
||||
( "Here" "are" "be" "sample" "some" "sorted" "strings" "to" )
|
||||
babel> ("Here" "are" "some" "sample" "strings" "to" "be" "sorted") lexsort ! lsstr !
|
||||
( "be" "to" "are" "Here" "some" "sample" "sorted" "strings" )
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
babel> ("Here" "are" "some" "sample" "strings" "to" "be" "sorted") {str2ar} over ! {strcmp 0 lt?} lssort ! {ar2str} over ! lsstr !
|
||||
( "Here" "are" "be" "some" "sample" "sorted" "strings" "to" )
|
||||
babel> ("Here" "are" "some" "sample" "strings" "to" "be" "sorted") {str2ar} over ! {arcmp 0 lt?} lssort ! {ar2str} over ! lsstr !
|
||||
( "be" "to" "are" "Here" "some" "sample" "sorted" "strings" )
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
babel> ( 5 6 8 4 5 3 9 9 4 9 ) {lt?} lssort ! lsnum !
|
||||
( 3 4 4 5 5 6 8 9 9 9 )
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
babel> (1 2 3 4 5 6 7 8 9) {1 randlf 2 rem} lssort ! lsnum !
|
||||
( 7 5 9 6 2 4 3 1 8 )
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
babel> 20 lsrange ! {1 randlf 2 rem} lssort ! 2 group ! --> this creates a shuffled list of pairs
|
||||
babel> dup {lsnum !} ... --> display the shuffled list, pair-by-pair
|
||||
( 11 10 )
|
||||
( 15 13 )
|
||||
( 12 16 )
|
||||
( 17 3 )
|
||||
( 14 5 )
|
||||
( 4 19 )
|
||||
( 18 9 )
|
||||
( 1 7 )
|
||||
( 8 6 )
|
||||
( 0 2 )
|
||||
babel> {<- car -> car lt? } lssort ! --> sort the list by first element of each pair
|
||||
babel> dup {lsnum !} ... --> display the sorted list, pair-by-pair
|
||||
( 0 2 )
|
||||
( 1 7 )
|
||||
( 4 19 )
|
||||
( 8 6 )
|
||||
( 11 10 )
|
||||
( 12 16 )
|
||||
( 14 5 )
|
||||
( 15 13 )
|
||||
( 17 3 )
|
||||
( 18 9 )
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
CL-USER> (defvar *strings*
|
||||
'("Cat" "apple" "Adam" "zero" "Xmas" "quit" "Level" "add" "Actor" "base" "butter"))
|
||||
(list "Cat" "apple" "Adam" "zero" "Xmas" "quit" "Level" "add" "Actor" "base" "butter"))
|
||||
*STRINGS*
|
||||
CL-USER> (sort *strings* #'string-lessp)
|
||||
("Actor" "Adam" "add" "apple" "base" "butter" "Cat" "Level" "quit" "Xmas"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
CL-USER> (defvar *strings*
|
||||
'("Cat" "apple" "Adam" "zero" "Xmas" "quit" "Level" "add" "Actor" "base" "butter"))
|
||||
(list "Cat" "apple" "Adam" "zero" "Xmas" "quit" "Level" "add" "Actor" "base" "butter"))
|
||||
*STRINGS*
|
||||
CL-USER> (sort *strings* #'> :key #'length)
|
||||
("butter" "apple" "Level" "Actor" "Adam" "zero" "Xmas" "quit" "base"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
strs = ~w[this is a set of strings to sort This Is A Set Of Strings To Sort]
|
||||
|
||||
comparator = fn s1,s2 -> if String.length(s1)==String.length(s2),
|
||||
do: String.downcase(s1) <= String.downcase(s2),
|
||||
else: String.length(s1) >= String.length(s2) end
|
||||
IO.inspect Enum.sort(strs, comparator)
|
||||
|
||||
# or
|
||||
IO.inspect Enum.sort_by(strs, fn str -> {-String.length(str), String.downcase(str)} end)
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
import java.util.Arrays
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val strings = arrayOf("Here", "are", "some", "sample", "strings", "to", "be", "sorted")
|
||||
|
||||
fun printArray(message: String, array: Array<String>) = with(array) {
|
||||
print("$message [")
|
||||
forEachIndexed { index, string ->
|
||||
print(if (index == lastIndex) string else "$string, ")
|
||||
}
|
||||
println("]")
|
||||
}
|
||||
|
||||
printArray("Unsorted:", strings)
|
||||
|
||||
Arrays.sort(strings) { first, second ->
|
||||
val lengthDifference = second.length - first.length
|
||||
if (lengthDifference == 0) first.compareTo(second, true) else lengthDifference
|
||||
}
|
||||
|
||||
printArray("Sorted:", strings)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue