Para aquellos que desean muchos más desafíos que el antiguo orden alfabético español , echemos un vistazo a cómo se ordena el alfabeto húngaro.
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 realidad, q
, w
, x
y y
no se utilizan en las palabras de Hungría, pero se incluyen para préstamos y nombres extranjeros. Los caracteres acentuados extranjeros que no forman parte del alfabeto húngaro (como ñ
) tienen la misma prioridad que los no acentuados, pero los ignoramos para este desafío.
Las reglas, resumidas:
- Dígrafos (
cs
,sz
, etc.) y el trigraph (dzs
) se consideran como estaban las letras por su cuenta.
cudar cukor cuppant csalit csata
- Si el mismo dígrafo o trigrafo se produce dos veces directamente uno detrás del otro en una palabra, se escriben de manera simplificada: en
ssz
lugar deszsz
, enddzs
lugar dedzsdzs
pero para el orden alfabético, se usa el orden no simplificado. Por ejemplokasza
<kaszinó
<kassza
, porquekassza
se utiliza comok
+a
+sz
+sz
+a
por el bien de pedido. A veces puede encontrar la versión no contratada en una palabra, en caso de palabras compuestas.
kasza kaszinó kassza kaszt nagy naggyá nagygyakorlat naggyal nagyít
- las mayúsculas no importan, con la excepción de que las dos palabras serían exactamente iguales sin mayúsculas, en cuyo caso la letra minúscula tiene prioridad
jácint Jácint Zoltán zongora
- Las versiones corta y larga de vocales acentuadas tienen la misma prioridad (
a - á
,e -é
,i - í
,o - ó
,ö - ő
,u - ú
ü - ű
), con una sola excepción: si las dos palabras de otro modo sería exactamente el mismo, la vocal corta tiene prioridad sobre la vocal larga. Tenga en cuenta que las vocales con diéresis (ö
yü
) son caracteres completamente diferentes deo
yu
.
Eger egér író iroda irónia kerek kerék kérek szúr szül
- Los guiones o espacios (por ejemplo, en palabras compuestas, nombres, etc.) se ignoran por completo
márvány márványkő márvány sírkő Márvány-tenger márványtömb
La tarea
Su programa / función recibe cadenas, compuestas de caracteres del alfabeto húngaro (minúsculas y mayúsculas), pero una cadena puede contener espacios o guiones. Por simplicidad, el signo menos (ASCII 45) puede usarse como un guión. Tenga en cuenta que algunos caracteres (como el ő
) no son parte de ASCII. Puede usar cualquier codificación que desee, si es compatible con todos los caracteres requeridos.
Debe ordenar las líneas correctamente y mostrar / devolver el resultado.
Puede usar cualquier subconjunto ordenado al azar de los ejemplos anteriores para realizar pruebas.
EDITAR:
Por favor, no utilice ninguna forma integrada u otra que ya conozca el orden alfabético húngaro por sí mismo. Haría que la competencia no tuviera sentido y tomaría todo el desafío de encontrar la mejor expresión regular o los mejores trucos de golf de código.
EDIT2:
Para aclarar una aclaración solicitada por isaacg: "dos cadenas que solo difieren en mayúsculas y vocales largas vs. cortas, pero que difieren en ambos sentidos": aunque ninguna regla en el documento oficial aborda explícitamente esta pregunta, un ejemplo encontrado dentro de los puntos de la longitud de la vocal que tiene más importancia que la capitalización.
malacsült
onyílászáró
. Me pregunto si hay alguno (pero necesitarías un vocabulario para comprobarlo, lo que presumiblemente no forma parte de este desafío)Respuestas:
Perl, 250
Incluye +11 para
-Mutf8 -CS
.Utiliza la expresión decorar-ordenar-decorar (AKA Schwartzian Transform ) y la clasificación multinivel † , donde los niveles son:
Internamente,
␜
(ASCII 0x1C Field Separator - cuyo valor es menor que cualquier carácter en el alfabeto para este desafío) se usa como un separador de nivel.Esta implementación tiene muchas limitaciones, entre ellas:
Versión ampliada:
†. Algunos algoritmos de clasificación multinivel conocidos son el Algoritmo de clasificación Unicode (UCA, Unicode UTS # 10) , ISO 14651 (disponible en el sitio ISO ITTF ), las partes LC_COLLATE en ISO TR 30112 (borrador disponible en ISO / IEC JTC1 / SC35 / WG5 home ) que obsoleta ISO / IEC TR 14652 (disponible en ISO / IEC JTC1 / SC22 / WG20 home ) y LC_COLLATE en POSIX.
‡. Hacer esto correctamente requeriría un diccionario. La UCI trata los grupos con mayúsculas extrañas como no contracciones / no digráficos / no trigráficos , por ejemplo: 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
fuente
Java 8, 742 bytes
Podría reducir otros 3 bytes nombrando la función en
s
lugar desort
otros 16 bytes si no cuenta la definición de clase.Se puede usar así:
Banco de pruebas:
flexible
Sin golf:
Estoy usando el
List
tipo de Java y suorder()
función, pero el comparador es todo mío.fuente
<String>
y guardar algunos caracteres a costa de algunas advertencias.Object
como tipo de ayb entonces. Sin embargo, probablemente podría escapar definiendo un parámetro genérico de clase que se extiendaString
. Además, no espero tener el código más corto. ;-)Pitón 3, 70
Guardado 8 bytes gracias a shooqie.
Amo a Python :RE
Espera una lista de cadenas.
fuente
from locale import*
ahorra muchos bytes