Tenemos objetos que oscilan entre dos puntos enteros, [l, r]
a la velocidad de una unidad por unidad de tiempo, a partir de l
el t=0
. Puedes asumir l < r
. Por ejemplo, si un objeto oscila [3, 6]
, entonces tenemos:
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. Pero los objetos oscilan continuamente, por lo que también tenemos t=0.5 -> 3.5
y t=3.7 -> 5.3
.
Dados dos objetos que oscilan entre [l1, r1]
, [l2, r2]
determine si alguna vez hay un tiempo t
tal que los dos objetos compartan la misma posición. Puede tomar l1, r1, l2, r2
en cualquier formato conveniente y generar cualquier valor verdadero / falso.
Entradas de verdad:
[[3, 6], [3, 6]]
[[3, 6], [4, 8]]
[[0, 2], [2, 3]]
[[0, 3], [2, 4]]
[[7, 9], [8, 9]]
Entradas de falsa:
[[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
fuente
fuente
0
verdadero y ser un número entero positivo o deben ser consistentes? Aún más, ¿puede ser falsa la lista vacía y la verdad puede ser cualquier lista no vacía?[[1,3],[2,6]]
: esto falsifica la heurística "los intervalos se superponen y no tienen la misma longitud".Respuestas:
Python 2 , 69 bytes
Pruébalo en línea!
fuente
Casco , 13 bytes
Toma entrada en formato
[[l,r],[L,R]]
. Devuelve0
para instancias falsas y un entero positivo para instancias verdaderas. Pruébalo en línea!Explicación
Las ideas principales son
Aquí está el código anotado.
fuente
JavaScript (ES6),
104100bytesUna implementación ingenua que solo ejecuta la simulación. Toma (a, b, c, d) como 4 variables distintas.
Casos de prueba
Mostrar fragmento de código
fuente
Wolfram Language (Mathematica) ,
776961 bytesUna función pura que toma los cuatro argumentos
l1, r1, l2, r2
como entrada: por ejemplo,[0,3,2,4]
cuando los intervalos son[0,3]
y[2,4]
.Pruébalo en línea!
Cómo funciona
Para obtener un punto
[a,b]
cercano a un punto adentro[c,d]
, suponiendoa<c<b<d
, queremos un múltiplo imparb-a
dentrob-c
de un múltiplo par ded-c
. Sib-a
tiene más factores de2
qued-c
, podemos hacer que esto suceda exactamente: habrá un momento en que el primer punto esté enb
y el segundo punto esté enc
, y entonces estamos en buena forma. Si no, entonces lo mejor que podemos hacer es el MCD deb-a
yd-c
.fuente
JavaScript (ES6), 89 bytes
Toma
l1,r1,l2,r2
como argumentos separados. Explicación: Se garantiza que la simulación se repetirá después de las(r1-l1)*(r2-l2)*2
unidades de tiempo (o un factor de la misma);g
calcula el desplazamiento del objeto apropiado después de lasi/2
unidades de tiempo, por lo quei
debe variar hasta(r1-l1)*(r2-l2)*4
.fuente
05AB1E ,
121014 bytes+4 bytes para manejar rangos negativos
Devuelve 0 si es falso o un entero positivo de lo contrario
Usa la idea de Zgarb de de duplicar valores para facilitar la detección de la misma posición
Gracias a @ Zacharý por señalar mis errores
Pruébalo en línea!
Explicaciones:
fuente
[[0,n],[n-1, n]]
e incluso en ese caso, la segunda lista se repetiría suficientes veces (y más) para que la primera alcanzara su límite superior. Pero olvidé tener en cuenta los números negativos:[[-100, 1], [0, 1]]
no funciona. Arreglando a un costo de 4 bytes :-(Java (OpenJDK 8) , 81 bytes
Pruébalo en línea!
Reutilizando el algoritmo Python de xnor .
fuente