Temos objetos que oscilam entre dois pontos inteiros [l, r]
, na velocidade de uma unidade por unidade de tempo, iniciando l
em t=0
. Você pode assumir l < r
. Por exemplo, se um objeto oscila [3, 6]
, então temos:
t=0 -> 3
t=1 -> 4
t=2 -> 5
t=3 -> 6
t=4 -> 5
t=6 -> 4
t=7 -> 3
t=8 -> 4
Etc. Mas os objetos oscilam continuamente, então também temos t=0.5 -> 3.5
e t=3.7 -> 5.3
.
Dado dois objetos oscilando entre [l1, r1]
, [l2, r2]
, determinar se há sempre um tempo t
tal que os dois objetos compartilham a mesma posição. Você faz o take l1, r1, l2, r2
em qualquer formato conveniente e gera quaisquer valores de verdade / falsidade.
Entradas de verdade:
[[3, 6], [3, 6]]
[[3, 6], [4, 8]]
[[0, 2], [2, 3]]
[[0, 3], [2, 4]]
[[7, 9], [8, 9]]
Entradas falsas:
[[0, 3], [3, 5]]
[[0, 2], [2, 4]]
[[5, 8], [9, 10]]
[[6, 9], [1, 2]]
[[1, 3], [2, 6]]
code-golf
array-manipulation
decision-problem
code-golf
math
number-theory
palindrome
integer-partitions
code-golf
math
decision-problem
geometry
code-golf
string
random
code-golf
ascii-art
code-golf
kolmogorov-complexity
primes
code-golf
kolmogorov-complexity
code-golf
graphical-output
code-golf
number-theory
primes
integer
factoring
code-golf
sequence
array-manipulation
integer
code-golf
array-manipulation
matrix
code-golf
sequence
binary
code-golf
game
cellular-automata
game-of-life
binary-matrix
code-golf
string
ascii-art
code-golf
random
generation
logic
code-golf
string
code-golf
code-golf
sequence
array-manipulation
random
apl
code-golf
code-golf
sequence
primes
code-golf
math
sequence
integer
code-golf
number
arithmetic
array-manipulation
decision-problem
code-golf
ascii-art
number
code-golf
restricted-source
quine
code-golf
chess
board-game
code-golf
math
sequence
code-golf
number
sequence
kolmogorov-complexity
code-golf
number
sequence
arithmetic
code-golf
math
number
alphabet
code-golf
ascii-art
classification
statistics
apl
code-golf
array-manipulation
matrix
code-golf
string
kolmogorov-complexity
code-golf
sequence
binary
base-conversion
binary-matrix
code-golf
string
classification
code-golf
tips
python
code-golf
combinatorics
binary
subsequence
restricted-time
code-golf
number
number-theory
code-golf
math
number
complex-numbers
code-golf
string
code-golf
string
code-golf
string
random
game
king-of-the-hill
python
code-golf
number
sequence
code-golf
number
sequence
code-golf
code-golf
math
number
array-manipulation
code-golf
array-manipulation
decision-problem
code-golf
string
code-golf
sequence
integer
orlp
fonte
fonte
0
e realmente qualquer número inteiro positivo ou deve ser consistente. Ainda mais, pode ser falsamente a lista vazia e realmente qualquer lista não vazia?[[1,3],[2,6]]
: isso falsifica a heurística "os intervalos se sobrepõem e não têm o mesmo comprimento".Respostas:
Python 2 , 69 bytes
Experimente online!
fonte
Casca , 13 bytes
Recebe entrada no formato
[[l,r],[L,R]]
. Retorna0
para instâncias falsas e um número inteiro positivo para instâncias verdadeiras. Experimente online!Explicação
As principais idéias são
Aqui está o código anotado.
fonte
JavaScript (ES6),
104100 bytesUma implementação ingênua que apenas executa a simulação. Toma (a, b, c, d) como 4 variáveis distintas.
Casos de teste
Mostrar snippet de código
fonte
Wolfram Language (Mathematica) ,
776961 bytesUma função pura, tendo os quatro argumentos
l1, r1, l2, r2
como entrada: por exemplo,[0,3,2,4]
quando os intervalos são[0,3]
e[2,4]
.Experimente online!
Como funciona
Para chegar
[a,b]
perto de um ponto[c,d]
, supondoa<c<b<d
que queremos um múltiplo ímpar deb-a
dentrob-c
de um múltiplo par ded-c
. Seb-a
houver mais fatores2
qued-c
, podemos fazer com que isso aconteça exatamente: haverá um momento em que o primeiro ponto está emb
e o segundo ponto está emc
, e então estamos em boa forma. Caso contrário, o melhor que podemos fazer é o MDC deb-a
ed-c
.fonte
JavaScript (ES6), 89 bytes
Toma
l1,r1,l2,r2
como argumentos separados. Explicação: É garantido que a simulação se repita após as(r1-l1)*(r2-l2)*2
unidades de tempo (ou um fator disso);g
calcula o deslocamento do objeto apropriado após asi/2
unidades de tempo e, portanto,i
precisa variar até(r1-l1)*(r2-l2)*4
.fonte
05AB1E ,
121014 bytes+4 bytes para lidar com intervalos negativos
Retorne 0 se falso, ou um número inteiro positivo caso contrário
Use a ideia de duplicar valores da Zgarb para facilitar a detecção da mesma posição
Obrigado a @ Zacharý por apontar meus erros
Experimente online!
Explicações:
fonte
[[0,n],[n-1, n]]
e, mesmo nesse caso, a segunda lista seria repetida várias vezes (e mais) para que a primeira atingisse seu limite superior. Mas eu esqueci de levar em consideração os números negativos:[[-100, 1], [0, 1]]
não funciona. Corrigindo-o a um custo de 4 bytes :-(Java (OpenJDK 8) , 81 bytes
Experimente online!
Reutilizando o algoritmo Python do xnor .
fonte