Dirección del tráfico

25

Reglas

Dado un código de país ISO3166-1-Alpha-2, su tarea es decidir la dirección del tráfico para ese país:

  • La entrada será un código de país válido (válido ya que es un elemento de las dos listas proporcionadas)
  • La entrada puede ser una lista de dos caracteres en lugar de una cadena si ayuda
  • Puede elegir tomar la entrada en minúsculas
  • Elegirá un valor, digamos para el correcto (su elección) y generará ese valor si el tráfico en ese país es diestro y cualquier otra cosa en el otro caso
  • Solo tiene que manejar los códigos de país que figuran en una de estas listas:

Estos son todos los países donde el tráfico es zurdo:

['AI', 'AG', 'AU', 'BS', 'BD', 'BB', 'BM', 'BT', 'BW', 'VG', 'BN', 'KY', 'CX', 'CC', 'CK', 'CY', 'DM', 'FK', 'FJ', 'GD', 'GG', 'GY', 'HK', 'IN', 'ID', 'IE', 'IM', 'JM', 'JP', 'JE', 'KE', 'KI', 'LS', 'MO', 'MW', 'MY', 'MV', 'MT', 'MU', 'MS', 'MZ', 'NA', 'NR', 'NP', 'NZ', 'NU', 'NF', 'PK', 'PG', 'PN', 'SH', 'KN', 'LC', 'VC', 'WS', 'SC', 'SG', 'SB', 'SO', 'ZA', 'GS', 'LK', 'SR', 'SZ', 'TH', 'TL', 'TK', 'TO', 'TT', 'TC', 'TV', 'UG', 'GB', 'TZ', 'VI', 'ZM', 'ZW']

Y aquí están todos los países donde el tráfico es diestro:

['AF', 'AX', 'AL', 'DZ', 'AS', 'AD', 'AO', 'AQ', 'AR', 'AM', 'AW', 'AT', 'AZ', 'BH', 'BY', 'BE', 'BZ', 'BJ', 'BO', 'BA', 'BV', 'BR', 'IO', 'BG', 'BF', 'BI', 'CV', 'KH', 'CM', 'CA', 'CF', 'TD', 'CL', 'CN', 'CO', 'KM', 'CG', 'CR', 'CI', 'HR', 'CU', 'CW', 'CZ', 'KP', 'CD', 'DK', 'DJ', 'DO', 'EC', 'EG', 'SV', 'GQ', 'ER', 'EE', 'ET', 'FO', 'FI', 'FR', 'GF', 'PF', 'TF', 'GA', 'GM', 'GE', 'DE', 'GH', 'GI', 'GR', 'GL', 'GP', 'GU', 'GT', 'GW', 'GN', 'HT', 'HM', 'VA', 'HN', 'HU', 'IS', 'IR', 'IQ', 'IL', 'IT', 'JO', 'KZ', 'KW', 'KG', 'LA', 'LV', 'LB', 'LR', 'LY', 'LI', 'LT', 'LU', 'MG', 'ML', 'MH', 'MQ', 'MR', 'YT', 'MX', 'FM', 'MC', 'MN', 'ME', 'MA', 'MM', 'NL', 'NC', 'NI', 'NG', 'NE', 'MP', 'NO', 'OM', 'PW', 'PA', 'PY', 'PE', 'PH', 'PL', 'PT', 'PR', 'QA', 'KR', 'MD', 'RE', 'RO', 'RU', 'RW', 'BL', 'MF', 'PM', 'SM', 'ST', 'SA', 'SN', 'RS', 'SL', 'BQ', 'SX', 'SK', 'SI', 'SS', 'ES', 'PS', 'SD', 'SJ', 'SE', 'CH', 'SY', 'TW', 'TJ', 'MK', 'TG', 'TN', 'TR', 'TM', 'UA', 'AE', 'UM', 'US', 'UY', 'UZ', 'VU', 'VE', 'VN', 'WF', 'EH', 'YE']

Para completar, aquí hay un archivo CSV que contiene todos los valores junto con los nombres de los países.

Casos de prueba

Suponiendo que eligió la salida Lpara el tráfico zurdo, aquí hay algunos casos de prueba válidos:

'PY' -> 'python'
'PN' -> 'L'
'CN' -> 33
'GY' -> 'L'

Nota: Existe una pequeña posibilidad de que me haya perdido un país o de que haya una clasificación incorrecta y no cambie las especificaciones porque eso podría invalidar las respuestas. Si cometí un error, me disculpo sinceramente, ¡no se ofenda!

ბიმო
fuente
1
¿Está bien no mostrar nada si el código del país no coincide?
stevefestl
3
@SteveFest: Yo diría que eso cuenta como cualquier otra cosa , sí.
ბიმო
¿puedo mostrar "left" para el caso izquierdo y cualquier otra cosa en el caso derecho?
l4m2
77
Vine aquí esperando encontrar una solución de 10 bytes de Mathematica que de alguna manera estaba incorporada. Estoy muy decepcionado
Silvio Mayolo
3
@SilvioMayolo CountryDatapuede dar la cantidad de carreteras y ferrocarriles pavimentados y no pavimentados, etc. en un país pero no su dirección de tráfico :(
HyperNeutrino

Respuestas:

13

Python 2 , 145 136 112 109 bytes

'TTHSZWMSGSONPKNZMWVIDFKELSCYJPNFJMTVCXBNRBWSHKYAUGGYBTLCCKIMVGBSBBMZAINAGDMOBDIEJEMYMUNUPGSRLKTKTOTCTZ'.find

Pruébalo en línea!

Salidas -1para tráfico derecho. La cadena se genera automáticamente con este script Retina . Gracias a totalmente humano por la cadena de búsqueda más corta de 9 bytes. Pude obtener 24 bytes más de descuento a través de la sugerencia de AdmBorkBork .
Obtuve la cadena de búsqueda 3 bytes más corta usando un script de python.

ovs
fuente
44
Dado que cosas como OTno existen, ¿puedes deshacerte de algunos espacios como el que TO TCva TOTC?
AdmBorkBork
1
@AdmBorkBork muchas gracias, saqué todos los espacios.
ovs
¿Puedes explicar la cuerda en absoluto?
Gigaflop
12

Jalea , 61 bytes

Muchas gracias a @ Mr.Xcoder por ayudarme a armar esto.
Guardado 1 byte gracias a @JonathanAllan

Devoluciones 0para diestros o 1zurdos.

“ŒỴ¬Ʋ>r¤dị|®ædHẇ⁸ɗH^CŒ³ẇPḷgȤƲȥƓƑ®Ƭṅḅ4ṛḟṄ’ḃ⁴+\
Oḅ⁹×6%⁽£€%566e¢

Pruébalo en línea!

¿Cómo?

Convertimos el código de cada país en un entero N analizándolo como base-256 y aplicamos la siguiente función hash, que es libre de colisiones para el tráfico zurdo y derecho:

((N * 6) MOD 1513) MOD 566

Esto lleva a la siguiente lista de valores para el tráfico zurdo:

[   8,  14,  27,  37,  52,  60,  62,  68,  71,  84,  85,  88, 103, 105, 114, 119, 135,
  166, 167, 180, 187, 190, 195, 196, 202, 207, 208, 211, 214, 225, 226, 229, 232, 255,
  256, 262, 285, 301, 302, 303, 304, 309, 322, 325, 327, 337, 357, 369, 370, 381, 393,
  401, 408, 413, 420, 430, 453, 467, 473, 478, 492, 503, 509, 513, 516, 527, 528, 541,
  546, 547, 556, 562 ] (72 entries)

La diferencia promedio entre dos entradas consecutivas es cercana a 8. Codificamos delta la lista con incrementos en el rango [1 ... 16]. Significa que cada vez que un incremento es mayor que 16, necesitamos insertar un valor intermedio en un espacio no utilizado (debemos asegurarnos de que no sea alcanzado por el tráfico hacia la derecha). Pero la función hash se eligió de tal manera que solo tenemos que hacerlo para algunas posiciones. Esto da:

[  8,  6, 13, 10, 15,  8,  2,  6,  3, 13,  1,  3, 15,  2,  9,  5, 16, 15, 16,  1, 13,
   7,  3,  5,  1,  6,  5,  1,  3,  3, 11,  1,  3,  3, 16,  7,  1,  6, 16,  7, 16,  1,
   1,  1,  5, 13,  3,  2, 10, 16,  4, 12,  1, 11, 12,  8,  7,  5,  7, 10, 16,  7, 14,
   6,  5, 14, 11,  6,  4,  3, 11,  1, 13,  5,  1,  9,  6 ] (77 entries)

Convertimos esta lista de bijective base-16 al siguiente entero:

274705197430389746738026977757328941544772847257562272094076195694133371689429679543810871702

que se convierte “ŒỴ¬Ʋ>r¤dị|®ædHẇ⁸ɗH^CŒ³ẇPḷgȤƲȥƓƑ®Ƭṅḅ4ṛḟṄ’en la codificación base-250 de Jelly.

El primer enlace reconstruye la lista original de este número entero y el segundo prueba si contiene el hash de la entrada.

“ŒỴ¬Ʋ>r¤dị|®ædHẇ⁸ɗH^CŒ³ẇPḷgȤƲȥƓƑ®Ƭṅḅ4ṛḟṄ’ḃ⁴+\      - 1st link: takes no input
“ŒỴ¬Ʋ>r¤dị|®ædHẇ⁸ɗH^CŒ³ẇPḷgȤƲȥƓƑ®Ƭṅḅ4ṛḟṄ’          - our big integer
                                         ḃ⁴        - convert it to bijective base-16
                                           +\      - apply delta-decoding

Oḅ⁹×6%⁽£€%566e¢                  - 2nd link: takes the country code  -> e.g. 'GB'
O                                - get ASCII codes                   -> [71, 66]
 ḅ⁹                              - convert from base-256 to integer  -> 18242
   ×6                            - multiply by 6                     -> 109452
     %⁽£€                        - modulo 1513                       -> 516
         %566                    - modulo 566                        -> 516
             e                   - look for it in the decoded list,
              ¢                  - using the first link as a nilad   -> 1
Arnauld
fuente
Guarde un byte al convertir de un entero a una base biyectiva 16: “ŒỴ¬Ʋ>r¤dị|®ædHẇ⁸ɗH^CŒ³ẇPḷgȤƲȥƓƑ®Ƭṅḅ4ṛḟṄ’ḃ⁴(evitando así el incremento) ... también (no un byte guardado, pero) ¢llama al último enlace como nilad.
Jonathan Allan
@JonathanAllan Nice! Gracias.
Arnauld
11

PowerShell , 161148 bytes

"$args"-match'A[GIU]|B[BDMNSTW]|[CFHW][CJKSXY]|DM|G[BDGSY]|[IJ][DEMNP]|K[EINY]|L[CKS]|M[OS-WYZ]|N[AFP-Z]|P[GKN]|S[BCGHORZ]|T[CHKLOTVZ]|UG|V[CGI]|Z.'

Pruébalo en línea!

Naïve coincidencia de patrones de expresiones regulares. Salidas Truepara zurdos y Falsediestros.

Ahorró 13 bytes gracias a mercator golfing the regex.

AdmBorkBork
fuente
2
Puede unir las alternativas para las primeras letras C, F, H y W en [CFHW][CJKSXY](-5), I y J en [IJ][DEMNP](-3), acortar N en N[AFP-Z](-1) y Z en Z.(-4), para un total de -13 bytes. Nueva expresión regular =A[GIU]|B[BDMNSTW]|[CFHW][CJKSXY]|DM|G[BDGSY]|[IJ][DEMNP]|K[EINY]|L[CKS]|M[OS-WYZ]|N[AFP-Z]|P[GKN]|S[BCGHORZ]|T[CHKLOTVZ]|UG|V[CGI]|Z.
mercator
@mercator ¡Gracias por el golf regex!
AdmBorkBork
9

Haskell , 137 bytes

-5 bytes gracias a los ovs.

import Data.List
(`isInfixOf`"MSOBTVGBSBBMZAINAGDMOAUGGYBDBWSHKYBNRJPNFJMVCKIMTLCCXLSCYFKEVIDIEJELSGSOLKNZMWMYMUPKNPGSRNUTKTOTCTZSZWTTH")

Pruébalo en línea!

Genera la cadena original a mano.

totalmente humano
fuente
consiguió la cadena de búsqueda 3 bytes más corta nuevamente:TTHSZWMSGSONPKNZMWVIDFKELSCYJPNFJMTVCXBNRBWSHKYAUGGYBTLCCKIMVGBSBBMZAINAGDMOBDIEJEMYMUNUPGSRLKTKTOTCTZ
ovs
Otra alternativa -3: SZAINAGGDMOAUGBBSCCKIMWSHKYLSBMVGSGYBDBTHBWBNRMZMTLCXSRTVCYPNFKNPKEFJMYVIDIEJPGJEMUNZWMSONULKTKTOTTCTZ- ¡ Pruébalo en línea!
Sr. Xcoder
8

05AB1E , 82 68 bytes

Salidas 1 para tráfico izquierdo y 0 para tráfico derecho.

.•6uγ)₅₄вwÔívtÎĆ–≠5βI·{!ÅÇΔ›íÕ(1.€ò“Ѧ_£äß₂Ë‹ûÚм2±rrÇQ=ÅÔζ)B†š¢¡ε•så

Pruébalo en línea! o como un conjunto de pruebas

Utiliza la cadena generada por totalmente humana y mejorada por ovs

Emigna
fuente
6

05AB1E , 76 bytes

.•B6L>õKвΩ~#ëΓnĀÿι–öß/çĸ’Û´äηÅÚ‚zĨe÷ö#YʒƒʒjªêKΩoúö‰Öe¡₄Æ∞¤iY¥•#vySANèì})åZ

Pruébalo en línea!


.•B6L>õKвΩ~#ëΓnĀÿι–öß/çĸ’Û´äηÅÚ‚zĨe÷ö#YʒƒʒjªêKΩoúö‰Öe¡₄Æ∞¤iY¥•

Emite la siguiente cadena:

GIU BDMNSTW CKXY M  JK BDGSY K DEMN EMP EINY CKS OSTUVWYZA FPRUZ  GKN   BCGHORZ CHKLOTVZ G CGI S   AMW

Si divido eso en espacios e intercalo el alfabeto en cada cadena, da como resultado todos los estados que conducen en el lado izquierdo.


1 para la izquierda, 0 para la derecha; Emigna es mejor, pero esto se sintió lo suficientemente diferente como para publicar :).

Urna de pulpo mágico
fuente
6

Jalea , 69 bytes

ẇ“h¦¤$>Xø3¬I_°Ḷd⁺+ç*p¢7"FU]#x⁹ĿAxḷŻbCȦ]$ḣẒẓST¬ȥ¬ṆṠ®æ÷©#ḄS#MĠỤ4ɱ5’ṃØA¤

Un enlace monádico que toma una lista de caracteres y regresa 1si está a la izquierda ( 0si está a la derecha).

Pruébalo en línea!

¿Cómo?

Utiliza el método implementado totalmente humano / ovs .

ẇ“ ... ’ṃØA¤ - Link: list of characters
           ¤ - nilad followed by link(s) as a nilad:
 “ ... ’     -   base 250 number = 19752831477605543488091668410027486265612829758468833715947215534967455540194888181580207621675010690833131726534873382634884974263558670694315853304
         ØA  -   list of characters = "ABCDEFGHIJKLMNPQRSUVWXZ"
        ṃ    -   base decompress = "MSOBTVGBSBBNZAINAGDMOAUGGYBDBWSHKYBNRJPNFJMVCKIMTLCCXLSCYFKEVIDIEJELSGSOLKOZMWMYMUPKNPGSRNUTKTOTCUZTZWTTH"
ẇ            - is a sublist of?

Además, lo que hice independientemente llegó a 72 bytes :

“¦w/ḳœBẒḂṡẏ,©ḷĿdẎq⁸4ṙ^|ṂỌʋ:vkɱF#ẊṠµd¤w,ḋhn|ȯ24ɦm|×ỵ’ṃ©ØAO0;I<0œṗ®ṭ€"ØAẎċ

También un enlace monádico que toma una lista de caracteres y regresa 1si está a la izquierda ( 0si está a la derecha).

Pruébalo en línea!

¿Cómo?

“ ... ’ṃ©ØAO0;I<0œṗ®ṭ€"ØAẎċ - Link: list of characters
“ ... ’                     - base 250 number = 20449742094039418439524274048234013619715377161457577389098927787850535557806494274193349238496252074719534810320317229
         ØA                 - list of characters = "ABCDEFGHIJKLMNPQRSUVWXZ"
       ṃ                    - base decompress = "GIUBDMNSTWCKXYMKJKBDGSYKDEMNEMPEINYCKSOSTUVXZZAFPRVZHGKNDCBCGHOSZCHKLOTWZGCGIASCBAMW"
        ©                   - copy to register
           O                - cast to ordinals = [71,73,85,66,68,77,78,83,84,87,67,75,88,89,77,75,74,75,66,68,71,83,89,75,68,69,77,78,69,77,80,69,73,78,89,67,75,83,79,83,84,85,86,88,90,90,65,70,80,82,86,90,72,71,75,78,68,67,66,67,71,72,79,83,90,67,72,75,76,79,84,87,90,71,67,71,73,65,83,67,66,65,77,87]
            0               - literal zero
             ;              - concatenate = [0,71,73,85,66,68,77,78,83,84,87,67,75,88,89,77,75,74,75,66,68,71,83,89,75,68,69,77,78,69,77,80,69,73,78,89,67,75,83,79,83,84,85,86,88,90,90,65,70,80,82,86,90,72,71,75,78,68,67,66,67,71,72,79,83,90,67,72,75,76,79,84,87,90,71,67,71,73,65,83,67,66,65,77,87]
              I             - incremental differences = [71,2,12,-19,2,9,1,5,1,3,-20,8,13,1,-12,-2,-1,1,-9,2,3,12,6,-14,-7,1,8,1,-9,8,3,-11,4,5,11,-22,8,8,-4,4,1,1,1,2,2,0,-25,5,10,2,4,4,-18,-1,4,3,-10,-1,-1,1,4,1,7,4,7,-23,5,3,1,3,5,3,3,-19,-4,4,2,-8,18,-16,-1,-1,12,10]
                0           - literal zero
               <            - less than (vectorises) = [0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1,1,0,1,0,0,0,0,1,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,1,0,1,1,1,0,0]
                   ®        - recall from register = "GIUBDMNSTWCKXYMKJKBDGSYKDEMNEMPEINYCKSOSTUVXZZAFPRVZHGKNDCBCGHOSZCHKLOTWZGCGIASCBAMW"
                 œṗ         - partition at truthy indexes = ["GIU","BDMNSTW","CKXY","M","K","JK","BDGSY","K","DEMN","EMP","EINY","CKS","OSTUVXZZ","AFPRVZ","H","GKN","D","C","BCGHOSZ","CHKLOTWZ","G","CGI","AS","C","B","AMW"]
                       ØA   - list of characters = "ABCDEFGHIJKLMNPQRSUVWXZ"
                      "     - zip with:
                    ṭ€      -   tack for €ach = [["AG","AI","AU"],["BB","BD","BM","BN","BS","BT","BW"],["CC","CK","CX","CY"],["DM"],["EK"],["FJ","FK"],["GB","GD","GG","GS","GY"],["HK"],["ID","IE","IM","IN"],["JE","JM","JP"],["KE","KI","KN","KY"],["LC","LK","LS"],["MO","MS","MT","MU","MV","MX","MZ","MZ"],["NA","NF","NP","NR","NV","NZ"],["OH"],["PG","PK","PN"],["QD"],["RC"],["SB","SC","SG","SH","SO","SS","SZ"],["TC","TH","TK","TL","TO","TT","TW","TZ"],["UG"],["VC","VG","VI"],["WA","WS"],["XC"],["YB"],["ZA","ZM","ZW"]]
                         Ẏ  - tighten = ["AG","AI","AU","BB","BD","BM","BN","BS","BT","BW","CC","CK","CX","CY","DM","EK","FJ","FK","GB","GD","GG","GS","GY","HK","ID","IE","IM","IN","JE","JM","JP","KE","KI","KN","KY","LC","LK","LS","MO","MS","MT","MU","MV","MX","MZ","MZ","NA","NF","NP","NR","NV","NZ","OH","PG","PK","PN","QD","RC","SB","SC","SG","SH","SO","SS","SZ","TC","TH","TK","TL","TO","TT","TW","TZ","UG","VC","VG","VI","WA","WS","XC","YB","ZA","ZM","ZW"]
                            - ...this is the left list plus EK, OH, QC, RC, WA, XC, and YB
                            -    (which are not in the right list)
                          ċ - count
Jonathan Allan
fuente
6

Befunge, 155 152 147 146 bytes

~48*%10p~20pv
\"`"`"A"+61p>:2g:48*%10g-!20g61g-!#@*#,_\1+:"O"#@`#._
NzBSgCLVStBGiIJknAVGPSuStAKvfCFHPLttBDIJzBIPkMStJn{NsBLMWgBMtAMnMtBMzcKCGmMNSt

Pruébalo en línea!

Salidas 80para un país diestro, y cualquier otra cosa indica un país zurdo.

Explicación

La línea inferior del código contiene una representación de todos los países zurdos. Esta es una lista de los primeros caracteres de los códigos de país, agrupados por su segundo carácter. El final de cada grupo se marca en minúsculas con el último carácter del grupo.

Así, por ejemplo, el primer grupo Nz,, representa NAy ZA. El segundo grupo, BSg, representa BB, SBy GB. Hay un grupo para cada letra del alfabeto, a excepción de la letra Q(no terminan los códigos de país de la izquierda Q). Ese grupo vacío está representado por el carácter {, ya que obviamente no coincidirá con ningún código de país válido.

Para determinar si un código de país determinado coincide con una de estas entradas, iteramos por la lista comprobando si alguno de los caracteres de la lista coincide con el primer carácter de nuestra entrada (mod 32 para tener en cuenta el caso), y también que el grupo correspondiente , coincide con el segundo carácter de la entrada. El carácter del grupo comienza como A, y se incrementa cada vez que encontramos una letra minúscula en la lista.

Salimos cuando encontramos una coincidencia, generando el último valor de caracteres en la pila (que será el primer carácter del código de país, posiblemente en minúsculas). De lo contrario, saldremos cuando hayamos iterado por toda la lista, en cuyo caso sacaremos el último número en la pila, que siempre es 80.

James Holderness
fuente
6

Lote de Windows, 289 279 199 193 181 130 118 bytes

@echo TTHSZWMSGSONPKNZMWVIDFKELSCYJPNFJMTVCXBNRBWSHKYAUGGYBTLCCKIMVGBSBBMZAINAGDMOBDIEJEMYMUNUPGSRLKTKTOTCTZ|find "%1"

Emite la cadena de ovs para el tráfico de la izquierda, de lo contrario no emite nada.

Nota: Noté que si la entrada contiene algún código de país en la lista anterior, todavía generará L. Sin embargo, esto no viola la regla de desafío, ya que OP mencionó que solo se deben manejar los códigos de país.


Explicación:

@echo TTHSZ...OTCTZ            :: List all country code.(compressed by ovs)
                   |           :: Pipe the result to the find command.

                    find "%1"  :: Find the first argument in the country code list,
                               :: and output the ovs string if found.

                               :: By default, FIND returns the piped string when
                               :: a match is found.
stevefestl
fuente
5

C (gcc) , 181 169 165 bytes

f(x){x=strstr("AIAUBSBDBBMBTBWVGBNKYCXCCKCYDMFKFJGDGGYHKINIDIEIMJMJPJEKELSMOMWMYMVMTMUMZNANRNPNZNUNFPKPGPNSHKNLCVCWSSCSGSOZAGSLKSRSZTHTLTKTOTTCTVUGTZVIZMZW",x)?:82;}

Pruébalo en línea!

cleblanc
fuente
2
¿Podría usar un solo dígito en lugar de 82guardar un byte? 9, por ejemplo, generaría un carácter de tabulación.
Shaggy
5

Python 2 , 144 bytes

lambda l:l[1]in'GIU,BDMNSTW,CKXY,M,,JK,BDGSY,K,DEMN,EMP,EINY,CKS,OSTUVWYZ,AFPRUZ,,GKN,,,BCGHORZ,CHKLOTVZ,G,CGI,S,,,AMW'.split(',')[ord(l[0])-65]

Pruébalo en línea!

Imprime Truepara izquierda, Falsepara derecha.

FlipTack
fuente
5

Retina , 150 117 bytes

$
MSOBTVGBSBBMZAINAGDMOAUGGYBDBWSHKYBNRJPNFJMVCKIMTLCCXLSCYFKEVIDIEJELSGSOLKNZMWMYMUPKNPGSRNUTKTOTCTZSZWTTH
^(..).*\1

Pruébalo en línea!

ovs
fuente
5

Excel VBA, 118 bytes

Función de ventana inmediata anónima VBE que toma entrada de la celda [A1]y salidas 0si el país es diestro

?InStr(1,"TTHSZWMSGSONPKNZMWVIDFKELSCYJPNFJMTVCXBNRBWSHKYAUGGYBTLCCKIMVGBSBBMZAINAGDMOBDIEJEMYMUNUPGSRLKTKTOTCTZ",[A1])

usa la cadena de ovs

Taylor Scott
fuente
4

Japt, 126 100 97 bytes

Utiliza la cadena de búsqueda de ovs de Totalhuman . Toma entradas en minúsculas y salidas falsepara RHD o de trueotra manera.

`tszwmsgspknzmwvidfkelscyjpnfjmtvcxbnrbw¢kyauggybtlc×Svgbsbbmzaagd¶b¹ejemymunupgsrlktktctz`øU

Intentalo

Todo entre los acentos abiertos es la cadena de búsqueda en minúsculas y comprimido y øcomprueba si contiene la entrada, U.

Lanudo
fuente
2
la cadena de ovs es mucho más corta ahora :-)
ETHproductions
3

Pyth , 60 57 55 50 47 46 44 bytes

00000000: 736d 406a 4322 579f 235e 804c c3eb 6f49  sm@jC"W.#^.L..oI
00000010: aee5 1f3d be3d 4e13 f326 1934 a181 a210  ...=.=N..&.4....
00000020: 7158 3f94 2232 2f43 5164 5336            qX?."2/CQdS6

Correr en línea

Toma la entrada como una cadena entre comillas en mayúscula ( 'AI'). Devoluciones 3para izquierda y no 3para derecha.

Cómo funciona

sm@jC"…"2/CQdS6
 m           S6   map for d in [1, …, 6]:
     "…"            string literal
    C               convert to integer from base 256
   j    2           digits in base 2
  @                 wrapping index at:
           Q          input string
          C           convert to integer from base 256
         /  d         integer division by d
s                 sum

Generando la cuerda mágica

import binascii
import z3
n, k, c = 239, 6, 3
a = [z3.Bool('a{}'.format(i)) for i in range(n)]
def f(s0, s1):
    return z3.Sum([z3.If(a[(ord(s0) * 256 + ord(s1)) // j % n], 1, 0) for j in range(1, k + 1)]) == c
solver = z3.Solver()
solver.add(a[0])
for s0, s1 in ['AI', 'AG', 'AU', 'BS', 'BD', 'BB', 'BM', 'BT', 'BW', 'VG', 'BN', 'KY', 'CX', 'CC', 'CK', 'CY', 'DM', 'FK', 'FJ', 'GD', 'GG', 'GY', 'HK', 'IN', 'ID', 'IE', 'IM', 'JM', 'JP', 'JE', 'KE', 'KI', 'LS', 'MO', 'MW', 'MY', 'MV', 'MT', 'MU', 'MS', 'MZ', 'NA', 'NR', 'NP', 'NZ', 'NU', 'NF', 'PK', 'PG', 'PN', 'SH', 'KN', 'LC', 'VC', 'WS', 'SC', 'SG', 'SB', 'SO', 'ZA', 'GS', 'LK', 'SR', 'SZ', 'TH', 'TL', 'TK', 'TO', 'TT', 'TC', 'TV', 'UG', 'GB', 'TZ', 'VI', 'ZM', 'ZW']:
    solver.add(f(s0, s1))
for s0, s1 in ['AF', 'AX', 'AL', 'DZ', 'AS', 'AD', 'AO', 'AQ', 'AR', 'AM', 'AW', 'AT', 'AZ', 'BH', 'BY', 'BE', 'BZ', 'BJ', 'BO', 'BA', 'BV', 'BR', 'IO', 'BG', 'BF', 'BI', 'CV', 'KH', 'CM', 'CA', 'CF', 'TD', 'CL', 'CN', 'CO', 'KM', 'CG', 'CR', 'CI', 'HR', 'CU', 'CW', 'CZ', 'KP', 'CD', 'DK', 'DJ', 'DO', 'EC', 'EG', 'SV', 'GQ', 'ER', 'EE', 'ET', 'FO', 'FI', 'FR', 'GF', 'PF', 'TF', 'GA', 'GM', 'GE', 'DE', 'GH', 'GI', 'GR', 'GL', 'GP', 'GU', 'GT', 'GW', 'GN', 'HT', 'HM', 'VA', 'HN', 'HU', 'IS', 'IR', 'IQ', 'IL', 'IT', 'JO', 'KZ', 'KW', 'KG', 'LA', 'LV', 'LB', 'LR', 'LY', 'LI', 'LT', 'LU', 'MG', 'ML', 'MH', 'MQ', 'MR', 'YT', 'MX', 'FM', 'MC', 'MN', 'ME', 'MA', 'MM', 'NL', 'NC', 'NI', 'NG', 'NE', 'MP', 'NO', 'OM', 'PW', 'PA', 'PY', 'PE', 'PH', 'PL', 'PT', 'PR', 'QA', 'KR', 'MD', 'RE', 'RO', 'RU', 'RW', 'BL', 'MF', 'PM', 'SM', 'ST', 'SA', 'SN', 'RS', 'SL', 'BQ', 'SX', 'SK', 'SI', 'SS', 'ES', 'PS', 'SD', 'SJ', 'SE', 'CH', 'SY', 'TW', 'TJ', 'MK', 'TG', 'TN', 'TR', 'TM', 'UA', 'AE', 'UM', 'US', 'UY', 'UZ', 'VU', 'VE', 'VN', 'WF', 'EH', 'YE']:
    solver.add(z3.Not(f(s0, s1)))
res = solver.check()
print(res)
if res == z3.sat:
    m = solver.model()
    print('n={} k={} c={} a={!r}'.format(n, k, c, binascii.unhexlify('{:0{}x}'.format(
        int(''.join('01'[z3.is_true(m[x])] for x in a), 2), n // 8 * 2))))
Anders Kaseorg
fuente
3

sed, 148 + 1 145 + 1 143 + 1 142 + 1 bytes

Un byte extra para el -rindicador (expresiones regulares POSIX extendidas).

Emite una cadena vacía para el tráfico hacia la izquierda, código de país original para el tráfico hacia la derecha.

s/A[GIU]|B[BDMNSTW]|C[CXY]|DM|FJ|G[BDGSY]|I[DEMN]|J[^O]|K[EINY]|L[CS]|M[OS-WYZ]|N[AFP-Z]|P[GN]|S[BCGHORZ]|T[CHLOTVZ]|UG|V[CGI]|WS|Z.|[^DMS]K//

Ejemplo:

$ echo -e 'PY\nPN\nCN\nGY' | sed -re 's/A[GIU]|B[BDMNSTW]|C[CXY]|DM|FJ|G[BDGSY]|I[DEMN]|J[^O]|K[EINY]|L[CS]|M[OS-WYZ]|N[AFP-Z]|P[GN]|S[BCGHORZ]|T[CHLOTVZ]|UG|V[CGI]|WS|Z.|[^DMS]K//'
PY

CN

$

Historial de edición explicado:

148 s/A[GIU]|B[BDMNSTW]|C[CKXY]|DM|F[JK]|G[BDGSY]|HK|I[DEMN]|J[EMP]|K[EINY]|L[CKS]|M[OSTUVWYZ]|N[AFPRUZ]|P[GKN]|S[BCGHORZ]|T[CHKLOTVZ]|UG|V[CGI]|WS|Z.//
    naïve regexp; the only optimization here is 'Z.'
145 s/A[GIU]|B[BDMNSTW]|C[CKXY]|DM|F[JK]|G[BDGSY]|HK|I[DEMN]|J[EMP]|K[EINY]|L[CKS]|M[OS-WYZ]|N[AFP-Z]|P[GKN]|S[BCGHORZ]|T[CHKLOTVZ]|UG|V[CGI]|WS|Z.//
    M[OSTUVWYZ] → M[OS-WYZ]
    N[AFPRUZ] → N[AFP-Z]
    the replacements can match inexistent coutries, which is totally fine
143 s/A[GIU]|B[BDMNSTW]|C[CXY]|DM|FJ|G[BDGSY]|I[DEMN]|J[EMP]|K[EINY]|L[CS]|M[OS-WYZ]|N[AFP-Z]|P[GN]|S[BCGHORZ]|T[CHLOTVZ]|UG|V[CGI]|WS|Z.|[^DMS]K//
    |[^DMS]K (which also matches impossible country codes) allows these changes:
    C[CKXY] → C[CXY]
    F[JK] → FJ
    |HK → ∅
    L[CKS] → L[CS]
    P[GKN] → P[GN]
    T[CHKLOTVZ] → T[CHLOTVZ]
142 s/A[GIU]|B[BDMNSTW]|C[CXY]|DM|FJ|G[BDGSY]|I[DEMN]|J[^O]|K[EINY]|L[CS]|M[OS-WYZ]|N[AFP-Z]|P[GN]|S[BCGHORZ]|T[CHLOTVZ]|UG|V[CGI]|WS|Z.|[^DMS]K//
    J[EMP] → J[^O] (thanks @Neil)

sed, 158 + 1 155 + 1 153 + 1 152 + 1 bytes, respuesta no vacía

Ligera variación de la anterior. Devoluciones Lpara tráfico zurdo.

s/[GIU]|B[BDMNSTW]|C[CXY]|DM|FJ|G[BDGSY]|I[DEMN]|J[^O]|K[EINY]|L[CS]|M[OS-WYZ]|N[AFP-Z]|P[GN]|S[BCGHORZ]|T[CHLOTVZ]|UG|V[CGI]|WS|Z.|[^DMS]K/&L/;s/^..//
Novela de suspenso
fuente
1
¿Se puede usar en J[^O]lugar de J[EMP]?
Neil
FYI intenté agrupar por segunda letra, pero lo mejor que pude hacer fue 3 bytes más:[^L]B|[^EMN]C|GD|[I-K]E|[AGPSUV]G|[AKV]I|FJ|[^DMS]K|TL|JM|[KP]N|JP|SR|[BGLW]S|[BT]T|AU|TV|CX|[CGK]Y|M[OS-WYZ]|N[AFP-Z]|[BI][DMNW]|[ST][HOZ]|Z.
Neil
Huh, J[^O]una vez estuvo en mi lista de expresiones regulares más pequeñas, me pregunto cómo me lo perdí. ¡Gracias por señalar esto! En cuanto a la agrupación por la segunda letra: además de la agrupación por K, puede usar |[AGPSUV]Go |[BGLW]Sno cambiará la puntuación total.
Suspenso
2

APL (Dyalog) , 108 bytes

1∊⍷∘'TTHSZWMSGSONPKNZMWVIDFKELSCYJPNFJMTVCXBNRBWSHKYAUGGYBTLCCKIMVGBSBBMZAINAGDMOBDIEJEMYMUNUPGSRLKTKTOTCTZ'

Pruébalo en línea!

Usando la cadena de búsqueda de ovs.

Tráfico zurdo = 1.
Tráfico por la derecha = 0.

Erik el Outgolfer
fuente
2

Javascript (ES6), 118116 bytes

Guardado 2 bytes gracias a @Craig Ayre

s=>"SZAINAGGDMOAUGBBSCCKIMWSHKYLSBMVGSGYBDBTHBWBNRMZMTLCXSRTVCYPNFKNPKEFJMYVIDIEJPGJEMUNZWMSONULKTKTOTTCTZ".match(s)

Devoluciones nullpara tráfico derecho

Casos de prueba

Herman L
fuente
¿Podrías usar String.prototype.match()y denotar el tráfico a la derecha null? Ahorraría 2 bytes
Craig Ayre
1

Vim, 117 109 108 pulsaciones de teclas

oSZAINAGGDMOAUGBBSCCKIMWSHKYLSBMVGSGYBDBTHBWBNRMZMTLCXSRTVCYPNFKNPKEFJMYVIDIEJPGJEMUNZWMSONULKTKTOTTCTZ␛kg*D

Pruébalo en línea! (reemplazar SEen el encabezado con el código del país)

Es la clave de escape. El programa imprime el siguiente texto para el tráfico hacia la derecha:

SZAINAGGDMOAUGBBSCCKIMWSHKYLSBMVGSGYBDBTHBWBNRMZMTLCXSRTVCYPNFKNPKEFJMYVIDIEJPGJEMUNZWMSONULKTKTOTTCTZ

Explicación

oSZAINA...OTTCTZ␛ Input the lookup-string on a new line
kg*D              Delete the everything after the last occurence of the country code
                   on the same line
Herman L
fuente
Aprecio que estés respondiendo en mi editor de texto favorito, ¡uso inteligente de elegir un valor correcto !
ბიმო
1

MI BÁSICO , 162 bytes

Función anónima que toma la entrada como una cadena sin envolver (es decir, sin paréntesis) y las salidas a la consola

Input"",x$,
For y=0 To 100
z=z+(Mid("TTHSZWMSGSONPKNZMWVIDFKELSCYJPNFJMTVCXBNRBWSHKYAUGGYBTLCCKIMVGBSBBMZAINAGDMOBDIEJEMYMUNUPGSRLKTKTOTCTZ",y,2)=x$)
Next
Print z

Devoluciones 0para diestros y 1para tráfico zurdo, ¡ pruébelo en línea!

Taylor Scott
fuente
1

Yabasic , 127 bytes

Función anónima que toma la entrada como una cadena sin envolver (no "...") y emite 0si el país es diestro y 1si el país es zurdo.

Input""A$
?InStr("TTHSZWMSGSONPKNZMWVIDFKELSCYJPNFJMTVCXBNRBWSHKYAUGGYBTLCCKIMVGBSBBMZAINAGDMOBDIEJEMYMUNUPGSRLKTKTOTCTZ",A$)>0

Pruébalo en línea!

Taylor Scott
fuente
1

C (gcc) , 115 107 bytes

f(short*x){x=!wcschr(L"䥁䝁啁卂䑂䉂䵂呂坂䝖乂奋塃䍃䭃奃䵄䭆䩆䑇䝇奇䭈义䑉䕉䵉䵊偊䕊䕋䥋卌位坍奍噍呍啍卍婍䅎剎偎婎啎䙎䭐䝐乐䡓之䍌䍖南䍓䝓䉓体䅚升䭌剓婓䡔䱔䭔佔呔䍔噔䝕䉇婔䥖䵚坚",*x);}

Pruébalo en línea!

Devuelve 0si es zurdo. -4 gracias a @JonathanFrech

techo
fuente
¿No podría definir su función para tomar un short*parámetro?
Jonathan Frech
1

K, 105 bytes

Para obtener información sobre los idiomas K / Q, consulte code.kx.com

Uso: Código de país (cadena de 2 caracteres, ejemplo "XY") después

in[;+\-48+5h$"62<729151368=1>a1A23<6<C181A83?45;488F411112115:235Q43r141738353135247F42Tl<:"]@26/:-65+5h$

Genera 1b(tráfico zurdo) o 0b(no tráfico zurdo)

Explicación:

  • 5h$"XX"genera códigos ASCII para cada carácter de la cadena de 2 caracteres (código de país), el ejemplo 5h$"TB"genera 84 66

  • -65+integerListreste 65 a cada entero en la lista. El ejemplo -65+5h$"TB"genera 19 1

  • 26/:integerListcalcula un número entero equivalente a esa lista como dígitos en 26 bases. El ejemplo 26/:-65+5h$"TB"genera 495 (código de país como entero)

  • in[;listOfCountryCodesAsIntegers]@xdevuelve un valor booleano (1b = verdadero, 0b = falso). Verdadero si x está en la lista

  • +\-48+5h$"62<729151368=1>a1A23<6<C181A83?45;488F411112115:235Q43r141738353135247F42Tl<:" calcula la lista de enteros para cada código de país con tráfico zurdo

    • "62<729151368=1>a1A23<6<C181A83?45;488F411112115:235Q43r141738353135247F42Tl<:"es la 'cadena de distancia' (distancia entre cada par de códigos de país entero en orden ascendente, codificada como char). La distancia n se codifica como ascii char 48 + n

    • -48+5h$".." calcula el valor ascii de cada carácter en la cadena ".." y recupera la distancia original como código ascii - 48. El resultado es la lista de distancias

    • +\integerList calcula la suma parcial de elementos de la lista -> códigos enteros absolutos de país a partir de distancias entre códigos.

NOTAS.-

  • Devoluciones 0bpara cualquier código de país no zurdo, incluidos los códigos de país no válidos
  • Podemos guardar un char reformateando el código, pero requiere escribir el código de país "XX" dentro del código (no sé si es válido, pero estoy bastante seguro de que no es elegante) in[26/:-65+5h$"XX";+\-48+5h$"..."]
J. Sendra
fuente