Introducción:
En general solemos hablar de cuatro dimensiones: tres dimensiones espaciales para x
, y
y z
; y una dimensión de tiempo. Por el bien de este reto, sin embargo, vamos a dividir la dimensión temporal en tres así: past
, present
, y future
.
Entrada:
Dos listas de entrada. Uno que contiene x,y,z
coordenadas enteras y otro que contiene años enteros
Salida:
Una de las cuatro salidas distintas y constantes de su elección. Uno para indicar la salida space
; uno para indicar la salida time
; uno para indicar la salida both space and time
; y uno para indicar la salida neither space nor time
.
Indicaremos que fuimos a las tres dimensiones espaciales si las diferencias de las tuplas enteras no son 0 para las tres dimensiones.
Indicaremos que fuimos a las tres dimensiones de tiempo si hay al menos un año en el pasado, al menos un año en el futuro y al menos un año igual al año actual (por lo tanto, en el presente).
Ejemplo:
Entrada:
Lista de coordenadas: [{5,7,2}, {5,3,8}, {-6,3,8}, {5,7,2}]
Lista de años:[2039, 2019, 2018, 2039, 2222]
Salida:
constante paraspace
¿Por qué?
Las x
coordenadas son [5,5,-6,5]
. Como no son todos iguales, hemos pasado por la x
dimensión espacial.
Las y
coordenadas son [7,3,3,7]
. Como no son todos iguales, también hemos pasado por la y
dimensión espacial.
Las z
coordenadas son [2,8,8,2]
. Como no son todos iguales, también hemos pasado por la z
dimensión espacial.
El año actual es 2018
. No hay años antes de esto, por lo que no visitamos la past
dimensión del tiempo.
Hay un 2018
regalo en la lista de años, así que visitamos la present
dimensión del tiempo.
Hay varios años arriba 2018
( [2039, 2019, 2039, 2222]
), por lo que también visitamos la future
dimensión del tiempo.
Como hemos visitado las tres space
dimensiones, pero solo dos de las tres time
dimensiones, la salida solo será (la constante para) space
.
Reglas de desafío:
- Puede usar cuatro salidas distintas y constantes para los cuatro estados posibles.
- La entrada puede estar en cualquier formato razonable. La lista de coordenadas puede ser tuplas, listas internas / matrices de tamaño 3, cadenas, objetos, etc. La lista de años puede ser una lista de objetos de fecha en lugar de números enteros también si beneficiaría su recuento de bytes.
- Puede suponer que las
x,y,z
coordenadas serán enteras, por lo que no es necesario manejar decimales de coma flotante. Cualquiera de losx
,y
, y / oz
coordenadas pueden ser valores negativos, sin embargo. - No puede tomar las listas de entrada pre ordenadas. Las listas de entrada deben estar en el orden que se muestra en los casos de prueba.
- Puede asumir que todos los valores del año estarán en el rango
[0,9999]
; y puede asumir que todas las coordenadas están en el rango[-9999,9999]
. - Si su idioma no tiene NINGUNA forma de recuperar el año en curso, pero aún así le gustaría hacer este desafío, puede tomarlo como entrada adicional y marcar su respuesta como (no competitiva) .
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de code-golf lo desanimen a publicar respuestas con lenguajes que no sean codegolf. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Las reglas estándar se aplican a su respuesta con las reglas de E / S predeterminadas , por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados y programas completos de tipo retorno. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código (es decir, TIO ).
- Además, se recomienda agregar una explicación para su respuesta.
Casos de prueba:
Coordinates-input: [{5,7,2}, {5,3,8}, {-6,3,8}, {5,7,2}]
Years-input: [2039, 2019, 2018, 2039, 2222]
Output: space
Coordinates-input: [{0,0,0}, {-4,-4,0}, {-4,2,0}]
Years-input: [2016, 2019, 2018, 2000]
Output: time
Coordinates-input: [{-2,-2,-2}, {-3,-3,-3}]
Years-input: [2020, 1991, 2014, 2018]
Output: both
Coordinates-input: [{5,4,2}, {3,4,0}, {1,4,2}, {9,4,4}]
Years-input: [2020, 1991, 2014, 2017, 2019, 1850]
Output: neither
[0,9999]
está bien (y[-9999,9999]
para las coordenadas también está bien.)Respuestas:
05AB1E , 15 bytes
La salida es una lista
[space, time]
donde 1 representax
y 0 representano x
Pruébalo en línea!
Explicación
fuente
-.±
lugar de.S
(de ahí el byte +1) y‚
(par) en lugar de)
Ùg3Q
, que se siente como el ladrón de bytes más grande, pero no estoy seguro de que sea posible: /ê
alguna operación bit a bit o deltas o algo, pero no puedo encontrar ninguna alternativa de 3 bytes.Python 2 ,
111109 bytesPruébalo en línea!
fuente
Perl 6 ,
4746 bytes-1 byte gracias a nwellnhof
Pruébalo en línea!
Bloque de código anónimo que toma dos listas y devuelve una tupla de booleanos, siendo el primer elemento si viajó en el tiempo y el segundo si no viajó en el espacio.
Explicación
fuente
Japt, 22 bytes
Toma datos como una matriz 2D de enteros para las dimensiones del espacio y una matriz 1D de enteros para los años. Salidas
2
solo para espacio, solo1
para tiempo,3
para ambos y0
para ninguno.Intentalo
fuente
Japt , 25 bytes
Estoy 100% seguro de que este no es el mejor enfoque, todavía estoy buscando una forma más corta de hacer esto: c
Devuelve una tupla de booleanos. La primera es si viajaste en el espacio y la segunda si viajaste en el tiempo
Pruébalo en línea!
fuente
yâ
transpone, toma elementos únicos y transpone de nuevo , por lo que probablemente querrá hacerlo en suUy e_â ʦ1Ã
lugar)â
dentro dele
método en mi primer intento, también, antes de moverloy
por capricho para ver si funcionaba.q
de los arreglos transpuestos mapeados,typeof q instanceof Array
... qué error conveniente: P Supongo que no puedo arreglarlo ahora hasta liberar 1.4.6 ...JavaScript (ES6),
104100bytes(space)(time)
El 24% del código se gasta para determinar en qué año estamos ... \ o /
Pruébalo en línea!
Comentado
fuente
console.log(f([[5,4,2], [3,4,0], [1,4,2], [9,4,4]])([2020])) // neither
R ,
106, 105 bytesPruébalo en línea!
Entrada:
Salida de un valor entero igual a:
fuente
Lote, 353 bytes
Nota: Dado que las comas son separadores de argumentos en Batch, para ingresar las coordenadas de espacio, debe citar y, por ejemplo,
Explantación
Apague la salida no deseada.
Configure dos máscaras de bits y también extraiga el año actual. (En YYYY-MM-DD, las configuraciones regionales se usan
%date:~,4%
para el mismo recuento de bytes).Recorre todos los argumentos. Las
~
causas valores de las coordenadas se dividan en los diferentes parámetros.Compruebe si las máscaras de bits están completamente configuradas y generan el resultado apropiado.
Vea si se trata de un par de coordenadas o una coordenada y un año.
Si se trata de una coordenada, actualice la máscara de bits de espacio según se haya visitado la dimensión espacial relevante.
Si es un año, actualice la máscara de bits de tiempo según se haya visitado la dimensión de tiempo relevante.
fuente
Java 10, 154 bytes
Devuelve
1
por espacio ,2
por tiempo ,3
por ambos ,0
por ninguno . Pruébelo en línea aquí .Sin golf:
fuente