Pour ceux qui souhaitent beaucoup plus de défis que l' ancien ordre alphabétique espagnol , examinons comment l'ordre alphabétique hongrois est ordonné.
a, á, b, c, cs, d, dz, dzs, e, é, f, g, gy, h, i, í, j, k, l, ly, m, n, ny, o, ó, ö, ő, p, q, r, s, sz, t, ty, u, ú, ü, ű, v, w, x, y, z, zs
en fait, q
, w
, x
et y
ne sont pas utilisés dans les mots hongrois, mais ils sont inclus pour étrangers et des noms loanwords. Les caractères accentués étrangers qui ne font pas partie de l'alphabet hongrois (comme ñ
) ont la même priorité que les caractères non accentués, mais nous les ignorons pour ce défi.
Les règles, résumées:
- Digraphs (
cs
,sz
, etc.) et le trigramme (dzs
) sont considérés comme des lettres qu'ils étaient eux - mêmes.
cudar cukor cuppant csalit csata
- Si le même digraphe ou trigraphe apparaît deux fois directement l'un après l'autre dans un mot, ils sont écrits de manière simplifiée:
ssz
au lieu deszsz
,ddzs
au lieu dedzsdzs
mais pour l'ordre alphabétique, l'ordre non simplifié est utilisé. Par exemplekasza
<kaszinó
<kassza
, parce que l'kassza
on utilise commek
+a
+sz
+sz
+a
pour le bien de la commande. Parfois, vous pouvez trouver la version non contractuelle dans un mot, en cas de mots composés.
kasza kaszinó kassza kaszt nagy naggyá nagygyakorlat naggyal nagyít
- la majuscule n'a pas d'importance, à l'exception où les deux mots seraient exactement les mêmes sans majuscule, auquel cas la lettre minuscule a priorité
jácint Jácint Zoltán zongora
- Les versions courtes et longues voyelles accentuées ont la même priorité (
a - á
,e -é
,i - í
,o - ó
,ö - ő
,u - ú
ü - ű
), avec une seule exception: si les deux mots seraient autrement exactement la même chose, la voyelle courte a la priorité sur la voyelle longue. Notez que les voyelles avec tréma (ö
etü
) sont des caractères complètement différents deo
etu
.
Eger egér író iroda irónia kerek kerék kérek szúr szül
- Les tirets ou les espaces (par exemple, dans les mots composés, les noms, etc.) sont complètement ignorés
márvány márványkő márvány sírkő Márvány-tenger márványtömb
La tâche
Votre programme / fonction reçoit des chaînes, composées de caractères de l'alphabet hongrois (majuscules et minuscules), mais une chaîne peut contenir des espaces ou des tirets. Par souci de simplicité, le signe moins (ASCII 45) peut être utilisé comme trait d'union. Notez que certains caractères (comme le ő
) ne font pas partie de l'ASCII. Vous pouvez utiliser n'importe quel encodage que vous souhaitez, s'il prend en charge tous les caractères requis.
Vous devez ordonner les lignes correctement et afficher / retourner le résultat.
Vous pouvez utiliser n'importe quel sous-ensemble aléatoire des exemples ci-dessus pour les tests.
ÉDITER:
Veuillez ne pas utiliser de méthode intégrée ou autre qui connaît déjà l'ordre alphabétique hongrois par lui-même. Cela rendrait la compétition inutile et releverait tout le défi de trouver la meilleure expression régulière ou les meilleures astuces de golf de code.
EDIT2:
Pour clarifier une clarification demandée par isaacg: "deux chaînes qui ne diffèrent que par la majuscule et les voyelles longues par rapport aux voyelles courtes, mais qui diffèrent dans les deux sens": Bien qu'aucune règle dans le document officiel ne traite explicitement de cette question, un exemple trouvé à quelques points près de la longueur de la voyelle ayant plus d'importance que la capitalisation.
malacsült
ounyílászáró
. Je me demande s'il y en a (mais vous auriez besoin d'un vocabulaire pour vérifier cela, ce qui ne fait probablement pas partie de ce défi)Réponses:
Perl, 250
Comprend +11 pour
-Mutf8 -CS
.Utilise l' idiome décorer-trier-décorer (AKA Schwartzian Transform ) et le tri à plusieurs niveaux † , où les niveaux sont:
En interne,
␜
(séparateur de champ ASCII 0x1C - dont la valeur est inférieure à n'importe quel caractère de l'alphabet pour ce défi) est utilisé comme séparateur de niveau.Cette implémentation a de nombreuses limites, parmi lesquelles:
Version étendue:
†. Certains algorithmes de classement à plusieurs niveaux bien connus sont l'algorithme de classement Unicode (UCA, Unicode UTS # 10) , ISO 14651 (disponible sur le site ISO ITTF ), les parties LC_COLLATE à ISO TR 30112 (projet disponible à ISO / IEC JTC1 / SC35 / WG5 home ) qui rend obsolète ISO / IEC TR 14652 (disponible à la maison ISO / IEC JTC1 / SC22 / WG20 ) et LC_COLLATE chez POSIX.
‡. Faire cela correctement nécessiterait un dictionnaire. L'ICU traite les groupes étrangement capitalisés comme des non-contractions / non-digraphes / non-trigraphs, par exemple: ccS < 3 CcS < 3 c Cs < 3 c CS < 3 C Cs < 3 cS < 3 cs < 3 Cs < 3 CS < 3 ccs < 3 Ccs < 3 CCS
la source
Java 8, 742 octets
Pourrait réduire de 3 octets supplémentaires en nommant la fonction
s
au lieu desort
ou 16 octets supplémentaires si la définition de classe n'est pas comptée.Peut être utilisé comme ceci:
Suite de tests:
céder
Non golfé:
J'utilise le
List
type de Java etorder()
sa fonction, mais le comparateur est tout à moi.la source
<String>
et enregistrer quelques caractères au prix de quelques avertissements?Object
alors le type de a et b. Je pourrais probablement m'éloigner de la définition d'une extension de paramètre générique de classeString
. De plus, je ne m'attends pas à avoir le code le plus court. ;-)Python 3, 70
8 octets enregistrés grâce à shooqie.
J'adore Python. :RÉ
Attend une liste de chaînes.
la source
from locale import*
économise beaucoup d'octets