Antecedentes
Vi este diagrama de Venn muy interesante en Wikipedia: https://simple.wikipedia.org/wiki/Alphabet#/media/File:Venn_diagram_gr_la_ru.svg
Muestra las letras (formas físicas) en diferentes alfabetos que son comunes entre los alfabetos ruso, griego y latino.
El reto
Dada una cadena de entrada de caracteres de cualquiera de los tres scripts mostrados (es decir, letras mayúsculas griegas, cirílicas o latinas), genera un porcentaje de la cadena que coincide con cada idioma. Las letras repetidas cuentan cada vez.
Por ejemplo, FFLURS
son todos los caracteres latinos, por lo que la salida es FFLURS is 100% Latin, 0% Cyrillic and 0% Greek
.
Por el contrario, TOX BEAM PHP
está formado completamente por caracteres que aparecen en los tres idiomas, por lo que el resultado es TOX BEAM PHP is 100% Cyrillic, 100% Greek and 100% Latin
.
Tablas de búsqueda
El diagrama de Venn es la fuente de las siguientes letras:
Solo latín:
J,G,S,D,Q,U,V,W,F,L,R
Latín y cirílico:
C, С
Latín y griego:
I,Ι, N,Ν, Z,Ζ
Griego y cirílico
Φ,Ф, Π,П, Γ,Г, Λ,Л
Los tres:
A,B,E,O,M,K,T,X,Y,H,P (and equivalents in greek and cyrillic), (space)
El resto ... son solo griegos o cirílicos.
NOTA IMPORTANTE
Unicode define (por ejemplo) "A" en (al menos) tres formas distintas, una para cada idioma. Cualquiera que se use en la entrada (& # 0391, & # 0410 o & # 0041), el programa debe entender que coincide con los tres idiomas.
Entonces, A
(latín), Α
(griego alfa) y А
(cirílico) deberían dar 100% Cyrillic, 100% Greek and 100% Latin
como respuesta.
Formato de entrada
Cualquier cadena que contiene exclusivamente А-Я
, Α-Ω
, A-Z
y (espacio). Estos caracteres se pueden repetir varias veces dentro de la cadena.
Formato de salida
La salida puede estar en cualquier formato, siempre que la función produzca resultados consistentes. Me gustaría ver la salida en el formato que muestro en mis ejemplos ( FFLURS is 100% Latin, 0% Cyrillic and 0% Greek
), pero para que el desafío sea más abierto para todos, estoy feliz de aceptar matrices / cadenas de porcentajes / proporciones:
[100,0,0]
,
100 0 0
[1.0 0.0 0.0]
siempre que esté claro qué número es qué idioma, por lo que el resultado debe ser coherente.
Algunos casos de prueba más
CINEMATICS
-> CINEMATICS is 100% Latin, 70% Greek and 60% Cyrillic
ЩJЩFЩLΞRΞVΞW
-> ЩJЩFЩLΞRΞVΞW is 50% Latin, 25% Cyrillic and 25% Greek
->
is 100% Cyrillic, 100% Greek and 100% Latin
ΨΩTESTINGЯЮ
-> ΨΩTESTINGЯЮ is 63.6% Greek, 63.6% Latin and 45.5% Cyrillic
Criterios ganadores
Se aplican las reglas y exclusiones habituales; la respuesta más corta (bytes) gana.
(enlace de sandbox: https://codegolf.meta.stackexchange.com/a/14984/62289 )
Para evitar dudas, los únicos caracteres Unicode válidos en la entrada son:
- 0020, 0041-005A (alfabeto latino)
- 0020, 0391-03A9 (alfabeto griego)
- 0020, 0401, 0410-042F (alfabeto cirílico)
Pero como se muestra en las tablas de búsqueda, los caracteres pueden ser alfabéticos cruzados.
Agregando la tabla de Jonathan Allan de los comentarios:
Latin Greek Cyrillic
U+0020 Space 1 1 1
U+0041 A Latin capital letter A 1 1 1
U+0042 B Latin capital letter B 1 1 1
U+0043 C Latin capital letter C 1 0 1
U+0044 D Latin capital letter D 1 0 0
U+0045 E Latin capital letter E 1 1 1
U+0046 F Latin capital letter F 1 0 0
U+0047 G Latin capital letter G 1 0 0
U+0048 H Latin capital letter H 1 1 1
U+0049 I Latin capital letter I 1 1 0
U+004A J Latin capital letter J 1 0 0
U+004B K Latin capital letter K 1 1 1
U+004C L Latin capital letter L 1 0 0
U+004D M Latin capital letter M 1 1 1
U+004E N Latin capital letter N 1 1 0
U+004F O Latin capital letter O 1 1 1
U+0050 P Latin capital letter P 1 1 1
U+0051 Q Latin capital letter Q 1 0 0
U+0052 R Latin capital letter R 1 0 0
U+0053 S Latin capital letter S 1 0 0
U+0054 T Latin capital letter T 1 1 1
U+0055 U Latin capital letter U 1 0 0
U+0056 V Latin capital letter V 1 0 0
U+0057 W Latin capital letter W 1 0 0
U+0058 X Latin capital letter X 1 1 1
U+0059 Y Latin capital letter Y 1 1 1
U+005A Z Latin capital letter Z 1 1 0
U+0391 Α Greek capital letter Alpha 1 1 1
U+0392 Β Greek capital letter Beta 1 1 1
U+0393 Γ Greek capital letter Gamma 0 1 1
U+0394 Δ Greek capital letter Delta 0 1 0
U+0395 Ε Greek capital letter Epsilon 1 1 1
U+0396 Ζ Greek capital letter Zeta 1 1 0
U+0397 Η Greek capital letter Eta 1 1 1
U+0398 Θ Greek capital letter Theta 0 1 0
U+0399 Ι Greek capital letter Iota 1 1 0
U+039A Κ Greek capital letter Kappa 1 1 1
U+039B Λ Greek capital letter Lambda 0 1 1
U+039C Μ Greek capital letter Mu 1 1 1
U+039D Ν Greek capital letter Nu 1 1 0
U+039E Ξ Greek capital letter Xi 0 1 0
U+039F Ο Greek capital letter Omicron 1 1 1
U+03A0 Π Greek capital letter Pi 0 1 1
U+03A1 Ρ Greek capital letter Rho 1 1 1
U+03A3 Σ Greek capital letter Sigma 0 1 0
U+03A4 Τ Greek capital letter Tau 1 1 1
U+03A5 Υ Greek capital letter Upsilon 1 1 1
U+03A6 Φ Greek capital letter Phi 0 1 1
U+03A7 Χ Greek capital letter Chi 1 1 1
U+03A8 Ψ Greek capital letter Psi 0 1 0
U+03A9 Ω Greek capital letter Omega 0 1 0
U+0401 Ё Cyrillic capital letter Io 0 0 1
U+0410 А Cyrillic capital letter A 1 1 1
U+0411 Б Cyrillic capital letter Be 0 0 1
U+0412 В Cyrillic capital letter Ve 1 1 1
U+0413 Г Cyrillic capital letter Ghe 0 1 1
U+0414 Д Cyrillic capital letter De 0 0 1
U+0415 Е Cyrillic capital letter Ie 1 1 1
U+0416 Ж Cyrillic capital letter Zhe 0 0 1
U+0417 З Cyrillic capital letter Ze 0 0 1
U+0418 И Cyrillic capital letter I 0 0 1
U+0419 Й Cyrillic capital letter Short I 0 0 1
U+041A К Cyrillic capital letter Ka 1 1 1
U+041B Л Cyrillic capital letter El 0 1 1
U+041C М Cyrillic capital letter Em 1 1 1
U+041D Н Cyrillic capital letter En 1 1 1
U+041E О Cyrillic capital letter O 1 1 1
U+041F П Cyrillic capital letter Pe 0 1 1
U+0420 Р Cyrillic capital letter Er 1 1 1
U+0421 С Cyrillic capital letter Es 1 0 1
U+0422 Т Cyrillic capital letter Te 1 1 1
U+0423 У Cyrillic capital letter U 1 1 1
U+0424 Ф Cyrillic capital letter Ef 0 1 1
U+0425 Х Cyrillic capital letter Ha 1 1 1
U+0426 Ц Cyrillic capital letter Tse 0 0 1
U+0427 Ч Cyrillic capital letter Che 0 0 1
U+0428 Ш Cyrillic capital letter Sha 0 0 1
U+0429 Щ Cyrillic capital letter Shcha 0 0 1
U+042A Ъ Cyrillic capital letter hard sign 0 0 1
U+042B Ы Cyrillic capital letter Yeru 0 0 1
U+042C Ь Cyrillic capital letter soft sign 0 0 1
U+042D Э Cyrillic capital letter E 0 0 1
U+042E Ю Cyrillic capital letter Yu 0 0 1
U+042F Я Cyrillic capital letter Ya 0 0 1