Dados dos enteros, A y B, la salida A si AB (A menos B) está en AB (A a B), de lo contrario, la salida B.
"A menos B" es la resta estándar.
"A a B" es el rango de enteros que comienzan en A y terminan en B, incluidos A y B. Por ejemplo:
1 to 4: 1, 2, 3, 4
-2 to 5: -2, -1, 0, 1, 2, 3, 4, 5
3 to -1: 3, 2, 1, 0, -1
7 to 7: 7
El código más corto en bytes gana.
Casos de prueba
A B Output
1 4 4
-2 5 5
3 -1 -1
7 7 7
90 30 90
90 -30 -30
-90 30 30
-90 -30 -90
-2 -2 -2
-2 -1 -2
-2 0 -2
-2 1 1
-2 2 2
-1 -2 -2
-1 -1 -1
-1 0 -1
-1 1 1
-1 2 2
0 -2 -2
0 -1 -1
0 0 0
0 1 1
0 2 2
1 -2 -2
1 -1 -1
1 0 1
1 1 1
1 2 2
2 -2 -2
2 -1 -1
2 0 2
2 1 2
2 2 2
fuente
PHP, 58 bytes
fuente
$b
tarea no necesita paréntesis.JavaScript (ES6), 24 bytes
Casos de prueba
fuente
Python 2, 37 bytes
Invocar como
f(B, A)
.fuente
Python2,
555251 bytesPruébalo en línea!
Maneja todos los casos de prueba que OP ha mencionado (al momento de publicar esto), como sugiere el TIO.
fuente
JavaScript ES6,
4037 bytesExplicado:
Guardado 3 bytes gracias a Arnauld.
fuente
Mathematica, 16 bytes
Función pura que toma dos argumentos en el orden opuesto al OP (por ejemplo,
If[2#^2>1##,##]&[B,A]
). Un puerto de la respuesta de Python de xnor .fuente
R,
493028 bytesUtiliza la lógica de @ xnor para determinar si ab está en a: b.
fuente
pryr::f(match(a-b,a:b,b))
Clojure,
7141 bytes-30 bytes usando
<=
ymin
/ enmax
lugar derange
s.Comprueba si
(a - b)
está en el rango dea
ab
, enviando una devolución en consecuencia.fuente
PHP (7.1), 55 bytes
utiliza la nueva sintaxis de desestructuración de matrices:
Ejecutar con
-r
, proporcionar números como argumentos de línea de comando.fuente
PowerShell ,
373532 bytesPruébalo en línea!
Traducción literal del problema a PowerShell utilizando el
-notin
operador. Guardado tres bytes mediante el uso de múltiples asignaciones y encapsulación. Esto funciona porque-
tiene una precedencia de operador más alta que-notin
, y la( )
parte del código se ejecuta primero y se devuelve como una matriz@($a,$b)
. Sin embargo, como es$a,$b
más que necesario$b,$a
, debemos usar-notin
para voltear / flop el resultado de salida.fuente
Lote, 107 bytes
fuente
Pyth - 9 bytes
Esperaba usar más entradas implícitas ... :(
Pruébelo en línea aquí .
fuente
Röda , 30 bytes
Pruébalo en línea!
Utiliza la fórmula utilizada en la respuesta de xnor.
Otra solución (37 bytes):
Pruébalo en línea!
fuente
> <> , 21 bytes
Hace uso del truco de @ xnor . Usamos
-v B A
para prepoblar la pila. (-v A B
es +1 byte).Pruébalo en línea!
Explicación
fuente
Rubí ,
2722 bytesPruébalo en línea!
Nada innovador aquí. La matemática simple detrás de esto:
Se puede escribir como
es decir: si A-2B tiene el mismo signo que B, estamos en el rango.
fuente
SpecBAS - 38 btes
IIF
es un IF-THEN-ELSE en línea, para imprimir el valor correcto.fuente
Haskell, 21 bytes
Pruébalo en línea!
Legible
Explicación
Utiliza la fórmula de @ xnor para verificar si ab está dentro del rango. Nada especial además de eso.
fuente
Haskell, 58 bytes
Recientemente me enamoré de las flechas nuevamente. Lamentablemente, requieren que trabajemos con tuplas en lugar de funciones binarias. Y, por supuesto, Haskell no tiene una
range
función simétrica .fuente
PHP 7 - 45 bytes
fuente
Octava, 55bytes
Esto probablemente podría optimizarse aún más. Agregaré una explicación más tarde.
fuente
Nim, 60 bytes
Pruébalo en línea!
Bastante estándar en lo que respecta a las respuestas, no hay grandes trucos en este caso.
fuente
Swift -
383022 bytesGuardado 8 bytes gracias a @Matt
¡Pruébelo en IBM Swift Sandbox en línea!
O 21 bytes:
(gracias a la fórmula de @xnor ) y ahorré 8 bytes gracias a @Matt
Swift no es el mejor lenguaje para el golf (es muy rígido), por lo que si ve alguna otra oportunidad de golf, editaré totalmente la respuesta.
fuente
Java 7,
846058 bytesJava 8, 37 bytes
Explicación:
Código de prueba: Pruébalo aquí.
fuente
Ti-Basic (TI-84 Plus CE),
26 2423 bytesTI-Basic es un lenguaje tokenizado; Todas las fichas utilizadas son fichas de un byte .
Prompt
le pide los dos números.A-B≥A and A-B≤B
comprueba si AB está entre A y B (inclusive); esto devuelve un 1 si es verdadero y un cero si es falso, que se almacena enAns
.Como estamos devolviendo A si AB está entre A y B, multiplicamos A por Ans, que será A si se supone que devolveremos A, y 0 en caso contrario.
A continuación, le agregamos
Bnot(Ans
. Si Ans fue 1 (verdad), lo usamosnot(
y obtenemos 0, por lo tanto, nuestra suma es A. Si Ans fue 0 (falso), lo obtenemosnot(
para obtener 1, que multiplicamos por B y sumamos a 0 para obtener B.La última evaluación en TI-Basic se devuelve implícitamente.
-2 bytes gracias a Scott Milner
fuente
Y
y simplemente usarlaAns
en la cuarta línea.Pyt , 32 bytes
Toma A y B de stdin como dos entradas separadas
Explicación:
AABB -> ABBA -> ABAB -> ABABB -> ABBBA -> ABBBAA -> ABAABB -> ABABBA -> ABABC -> ABCBA -> ABCAB -> ABC [A, ..., B] -> ABD -> ABDD - > ADDB -> ADBD -> AD {B * (1-D)} -> {B * (1-D)} AD -> {B * (1-D)} + {A * D}
donde: C = BA y D = C∈ [A, ..., B] (1 si es verdadero, 0 si es falso)
fuente
Ohm , 10 bytes (CP437)
Probablemente haya una forma más golfista de hacer esto, pero la naturaleza estrictamente tipada de Ruby lo hace difícil.
fuente
Perl 6 ,
31 2924 bytesIntentalo
Intentalo
Intentalo
fuente