Introdução:
Em geral, normalmente falam de quatro dimensões: três dimensões espaciais para x
, y
e z
; e uma dimensão de tempo. Por causa deste desafio, no entanto, vamos dividir a dimensão de tempo em três bem: past
, present
, e future
.
Entrada:
Duas listas de entrada. Uma contendo x,y,z
coordenadas inteiras e uma contendo anos inteiros.
Resultado:
Uma das quatro saídas distintas e constantes de sua própria escolha. Um para indicar a saída space
; um para indicar a saída time
; um para indicar a saída both space and time
; e um para indicar a saída neither space nor time
.
Vamos indicar que fomos para as três dimensões espaciais se as diferenças das tuplas inteiras não forem 0 para todas as três dimensões.
Indicaremos que atingimos as três dimensões temporais se houver pelo menos um ano no passado, pelo menos um ano no futuro e pelo menos um ano igual ao ano atual (portanto, no presente).
Exemplo:
Entrada:
lista de coordenadas : lista de [{5,7,2}, {5,3,8}, {-6,3,8}, {5,7,2}]
anos:[2039, 2019, 2018, 2039, 2222]
Saída:
Constante paraspace
Por quê?
As x
coordenadas são [5,5,-6,5]
. Como eles não são todos iguais, passamos pela x
dimensão espacial.
As y
coordenadas são [7,3,3,7]
. Como eles não são todos iguais, também passamos pela y
dimensão espacial.
As z
coordenadas são [2,8,8,2]
. Como eles não são todos iguais, também passamos pela z
dimensão espacial.
O ano atual é 2018
. Não há anos antes disso, então não visitamos a past
dimensão do tempo.
Há um 2018
presente na lista de anos, então visitamos a present
dimensão do tempo.
Há vários anos acima 2018
( [2039, 2019, 2039, 2222]
), também visitamos a future
dimensão do tempo.
Como visitamos todas as três space
dimensões, mas apenas duas das três time
dimensões, a saída será apenas (a constante para) space
.
Regras do desafio:
- Você pode usar quaisquer quatro saídas distintas e constantes para os quatro estados possíveis.
- A entrada pode estar em qualquer formato razoável. A lista de coordenadas pode ser tuplas, listas internas / matrizes de tamanho 3, seqüências de caracteres, objetos etc. A lista de anos pode ser uma lista de objetos de data em vez de números inteiros, bem como se isso beneficiaria sua contagem de bytes.
- Você pode assumir que as
x,y,z
coordenadas serão inteiras; portanto, não é necessário manipular decimais de ponto flutuante. Qualquer um dosx
,y
, e / ouz
coordenadas podem ser valores negativos, no entanto. - Você não pode levar as listas de entrada encomendadas. As listas de entrada devem estar na ordem exibida nos casos de teste.
- Você pode assumir que todos os valores do ano estarão no intervalo
[0,9999]
; e você pode assumir que todas as coordenadas estão no intervalo[-9999,9999]
. - Se o seu idioma não tiver QUALQUER maneira de recuperar o ano atual, mas você ainda quiser fazer esse desafio, considere-o como uma entrada adicional e marque sua resposta como (não concorrente) .
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta com as regras de E / S padrão , para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados e programas completos do tipo retorno. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código (ou seja, TIO ).
- Além disso, é altamente recomendável adicionar uma explicação para sua resposta.
Casos de teste:
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]
é bom (e[-9999,9999]
para as coordenadas é bem assim.Respostas:
05AB1E , 15 bytes
Saída é uma lista em
[space, time]
que 1 representax
e 0 representano x
Experimente online!
Explicação
fonte
-.±
em vez de.S
(daí a um byte ..) e‚
(par), em vez de)
Ùg3Q
, que parece o maior ladrão de bytes, mas não tenho certeza de que seja possível: /ê
alguma operação bit a bit ou deltas ou algo assim, mas não consigo encontrar nenhuma alternativa de 3 bytes.Python 2 ,
111109 bytesExperimente online!
fonte
Perl 6 ,
4746 bytes-1 byte graças a nwellnhof
Experimente online!
Bloco de código anônimo que pega duas listas e retorna uma tupla de booleanos, com o primeiro elemento sendo você viajando no tempo e o segundo sendo se você não viajou no espaço.
Explicação
fonte
Japonês, 22 bytes
Recebe entrada como uma matriz 2D de números inteiros para as dimensões do espaço e uma matriz 1D de números inteiros para os anos. Saídas
2
apenas para espaço, somente1
para tempo,3
para ambos e0
para nenhum.Tente
fonte
Japt , 25 bytes
Tenho 100% de certeza de que essa não é a melhor abordagem, ainda procurando uma maneira mais curta de fazer isso: c
Retorna uma tupla de booleanos. A primeira é se você viajou no espaço e a segunda se você viajou no tempo
Experimente online!
fonte
yâ
Transpõe, leva itens exclusivos, e transpõe para trás , então você provavelmente vai querer fazerUy e_â ʦ1Ã
em vez disso)â
usei oe
método na minha primeira tentativa, antes de movê-loy
por um capricho para ver se funcionaria.q
os vetores na matriz transposta mapeadatypeof q instanceof Array
... que bug conveniente: P Acho que não posso corrigi-lo agora até liberar o 1.4.6 ...JavaScript (ES6),
104100 bytes(space)(time)
24% do código é gasto para descobrir em que ano estamos ... \ o /
Experimente online!
Comentado
fonte
console.log(f([[5,4,2], [3,4,0], [1,4,2], [9,4,4]])([2020])) // neither
R ,
106, 105 bytesExperimente online!
Entrada :
Emita um valor inteiro igual a:
fonte
Lote, 353 bytes
Nota: Como vírgulas são separadores de argumentos no Lote, para inserir as coordenadas do espaço, é necessário citar, por exemplo,
Explicação:
Desligue a saída indesejada.
Configure duas máscaras de bits e também extraia o ano atual. (Nos locais AAAA-MM-DD, use
%date:~,4%
a mesma contagem de bytes.)Repita todos os argumentos. As
~
causas valores de coordenadas de ser dividido em parâmetros separados.Verifique se as máscaras de bits estão totalmente definidas e produza o resultado apropriado.
Veja se este é um par de coordenadas ou uma coordenada e um ano.
Se for uma coordenada, atualize a máscara de bits do espaço de acordo com a dimensão espacial relevante que foi visitada.
Se for um ano, atualize a máscara de tempo de acordo com a dimensão de tempo relevante que foi visitada.
fonte
Java 10, 154 bytes
Retorna
1
para espaço ,2
para tempo ,3
para ambos ,0
para nenhum . Experimente online aqui .Ungolfed:
fonte