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 L
para 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!
CountryData
puede dar la cantidad de carreteras y ferrocarriles pavimentados y no pavimentados, etc. en un país pero no su dirección de tráfico :(Respuestas:
Python 2 ,
145136112109 bytesPruébalo en línea!
Salidas
-1
para 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.
fuente
OT
no existen, ¿puedes deshacerte de algunos espacios como el queTO TC
vaTOTC
?Jalea , 61 bytes
Muchas gracias a @ Mr.Xcoder por ayudarme a armar esto.
Guardado 1 byte gracias a @JonathanAllan
Devoluciones
0
para diestros o1
zurdos.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:
Esto lleva a la siguiente lista de valores para el tráfico zurdo:
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:
Convertimos esta lista de bijective base-16 al siguiente entero:
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.
fuente
“ŒỴ¬Ʋ>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.PowerShell ,
161148bytesPruébalo en línea!
Naïvecoincidencia de patrones de expresiones regulares. SalidasTrue
para zurdos yFalse
diestros.Ahorró 13 bytes gracias a mercator golfing the regex.
fuente
[CFHW][CJKSXY]
(-5), I y J en[IJ][DEMNP]
(-3), acortar N enN[AFP-Z]
(-1) y Z enZ.
(-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.
Haskell , 137 bytes
-5 bytes gracias a los ovs.
Pruébalo en línea!
Genera la cadena original a mano.
fuente
TTHSZWMSGSONPKNZMWVIDFKELSCYJPNFJMTVCXBNRBWSHKYAUGGYBTLCCKIMVGBSBBMZAINAGDMOBDIEJEMYMUNUPGSRLKTKTOTCTZ
SZAINAGGDMOAUGBBSCCKIMWSHKYLSBMVGSGYBDBTHBWBNRMZMTLCXSRTVCYPNFKNPKEFJMYVIDIEJPGJEMUNZWMSONULKTKTOTTCTZ
- ¡ Pruébalo en línea!05AB1E ,
8268 bytesSalidas 1 para tráfico izquierdo y 0 para tráfico derecho.
Pruébalo en línea! o como un conjunto de pruebas
Utiliza la cadena generada por totalmente humana y mejorada por ovs
fuente
05AB1E , 76 bytes
Pruébalo en línea!
Emite la siguiente cadena:
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 :).
fuente
Jalea , 69 bytes
Un enlace monádico que toma una lista de caracteres y regresa
1
si está a la izquierda (0
si está a la derecha).Pruébalo en línea!
¿Cómo?
Utiliza el método implementado totalmente humano / ovs .
Además, lo que hice independientemente llegó a 72 bytes :
También un enlace monádico que toma una lista de caracteres y regresa
1
si está a la izquierda (0
si está a la derecha).Pruébalo en línea!
¿Cómo?
fuente
Befunge,
155152147146 bytesPruébalo en línea!
Salidas
80
para 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
,, representaNA
yZA
. El segundo grupo,BSg
, representaBB
,SB
yGB
. Hay un grupo para cada letra del alfabeto, a excepción de la letraQ
(no terminan los códigos de país de la izquierdaQ
). 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.
fuente
Lote de Windows,
289279199193181130118 bytesEmite 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:
fuente
C (gcc) ,
181169165 bytesPruébalo en línea!
fuente
82
guardar un byte?9
, por ejemplo, generaría un carácter de tabulación.Python 2 , 144 bytes
Pruébalo en línea!
Imprime
True
para izquierda,False
para derecha.fuente
Retina ,
150117 bytesPruébalo en línea!
fuente
Excel VBA, 118 bytes
Función de ventana inmediata anónima VBE que toma entrada de la celda
[A1]
y salidas0
si el país es diestrousa la cadena de ovs
fuente
Japt,
12610097 bytesUtiliza
lacadena de búsqueda deovs deTotalhuman . Toma entradas en minúsculas y salidasfalse
para RHD o detrue
otra manera.Intentalo
Todo entre los acentos abiertos es la cadena de búsqueda en minúsculas y comprimido y
ø
comprueba si contiene la entrada,U
.fuente
Pyth ,
60575550474644 bytesCorrer en línea
Toma la entrada como una cadena entre comillas en mayúscula (
'AI'
). Devoluciones3
para izquierda y no3
para derecha.Cómo funciona
Generando la cuerda mágica
fuente
sed,
148 + 1145 + 1143 + 1142 + 1 bytesUn byte extra para el
-r
indicador (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.
Ejemplo:
Historial de edición explicado:
sed,
158 + 1155 + 1153 + 1152 + 1 bytes, respuesta no vacíaLigera variación de la anterior. Devoluciones
L
para tráfico zurdo.fuente
J[^O]
lugar deJ[EMP]
?[^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.
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]G
o|[BGLW]S
no cambiará la puntuación total.APL (Dyalog) , 108 bytes
Pruébalo en línea!
Usando la cadena de búsqueda de ovs.
Tráfico zurdo =
1
.Tráfico por la derecha =
0
.fuente
Javascript (ES6),
118116bytesGuardado 2 bytes gracias a @Craig Ayre
Devoluciones
null
para tráfico derechoCasos de prueba
Mostrar fragmento de código
fuente
String.prototype.match()
y denotar el tráfico a la derechanull
? Ahorraría 2 bytesVim,
117109108 pulsaciones de teclasPruébalo en línea! (reemplazar
SE
en 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:Explicación
fuente
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
Devoluciones
0
para diestros y1
para tráfico zurdo, ¡ pruébelo en línea!fuente
Yabasic , 127 bytes
Función anónima que toma la entrada como una cadena sin envolver (no
"..."
) y emite0
si el país es diestro y1
si el país es zurdo.Pruébalo en línea!
fuente
C (gcc) ,
115107 bytesPruébalo en línea!
Devuelve
0
si es zurdo. -4 gracias a @JonathanFrechfuente
short*
parámetro?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
Genera
1b
(tráfico zurdo) o0b
(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 ejemplo5h$"TB"
genera 84 66-65+integerList
reste 65 a cada entero en la lista. El ejemplo-65+5h$"TB"
genera 19 126/:integerList
calcula un número entero equivalente a esa lista como dígitos en 26 bases. El ejemplo26/:-65+5h$"TB"
genera 495 (código de país como entero)in[;listOfCountryCodesAsIntegers]@x
devuelve 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.-
0b
para cualquier código de país no zurdo, incluidos los códigos de país no válidosin[26/:-65+5h$"XX";+\-48+5h$"..."]
fuente