En parlant de tri, c'est dans l'ordre numérique et dans l'ordre du dictionnaire, mais j'ai étudié d'autres sortes.
Read @ jag_507's * Ruby learning with AtCoder 10 [1st algorithm practice test DoubleCamelCase Sort] * et * AtCoder 1st algorithm practice J'ai essayé le test F --DoubleCamelCase Sort *, mais le tri ne fonctionne pas.
sort.rb
a = ["FisH", "DoG", "CaT", "AA", "AaA", "AbC", "AC"]
a.sort
# => ["AA", "AC", "AaA", "AbC", "CaT", "DoG", "FisH"] #Valeur de retour réelle
["AA", "AaA", "AbC", "AC", "CaT", "DoG", "FisH"] #Valeur de retour attendue
Cet article: * [commande de tri, principes de base et applications et interruptions](https://qiita.com/richmikan@github/items/cc4494359b1ac2f72311#-f%E8%BE%9E%E6%9B%B8%E9%A0% 86% E3% 81% AB% E4% B8% A6% E3% 81% B9% E3% 82% 8B) * Existe-t-il une option -f
comme ~~ Doraemon ~~ Aidez l'enseignant de Google.
De nombreux langages de programmation, pas seulement * Ruby *, trient par «ordre du dictionnaire», de sorte que les majuscules sont plus jeunes en majuscules et en minuscules. Par conséquent, nous avons besoin d'un tri insensible à la casse. Ruby
ruby.rb
a = ['a', 'b', 'c', 'd', 'e', 'A', 'B', 'C', 'D', 'E']
p a.sort
# => ["A", "B", "C", "D", "E", "a", "b", "c", "d", "e"]
p a
# => ["a", "b", "c", "d", "e", "A", "B", "C", "D", "E"]
p a.sort{|x, y| x.casecmp(y).nonzero? || x <=> y}
# => ["A", "a", "B", "b", "C", "c", "D", "d", "E", "e"]
p a.sort_by{ |s| [s.downcase, s] }
# => ["A", "a", "B", "b", "C", "c", "D", "d", "E", "e"]
sort_by
de la section des commentaires.
Le tri est effectué en fonction de deux conditions, la priorité la plus élevée "s.downcase" et la priorité suivante "s".
Pythonpython.py
a = ['a', 'b', 'c', 'd', 'e', 'A', 'B', 'C', 'D', 'E']
print(sorted(a))
# => ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']
print(a)
# => ['a', 'b', 'c', 'd', 'e', 'A', 'B', 'C', 'D', 'E']
print(sorted(sorted(a), key=str.lower))
# => ['A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e']
java.java
List<String> a = Arrays.asList("a", "b", "c", "d", "e", "A", "B", "C", "D", "E");
a.sort(Comparator.naturalOrder());
System.out.println(a); // [A, B, C, D, E, a, b, c, d, e]
a.sort(String.CASE_INSENSITIVE_ORDER);
System.out.println(a); // [A, a, B, b, C, c, D, d, E, e]
Pour *** Java ***, CASE_INSENSITIVE_ORDER
est préparé.
Site référencé
Recommended Posts