Supongamos dos números enteros arbitrarios $a$ y $b$ . Estoy buscando alguna función $f(a,b)$ con las siguientes propiedades:
- $f(a,b)\in\mathbb{Z}$ .
- $f(a,a)=a$ .
- $f(a,b)=f(b,a)$ .
- $\min\{a,b\}< f(a,b)< \max\{a,b\}$ , aceptando " $\leq$ " si $a$ y $b$ son consecutivos ( $a=b\pm 1$ ).
¿Hay algún ejemplo de esta función?
Mejora: ¿Alguna solución que evite las funciones de "suelo/techo"?
2 votos
¿Qué pasa con $f(a,b)=\lfloor \frac{a+b}{2}\rfloor$ ? Ya sabes... la media de los enteros :-)
0 votos
El problema de la función media $f(x,y) = \dfrac {x+y}{2}$ es que a veces se obtiene un extra $\dfrac 12$ . Así, se puede redondear hacia arriba o hacia abajo para obtener una "media entera". Estas funciones redondeadas corresponderían a $f_{down}(x,y) = \left\lfloor \dfrac {x+y}{2} \right\rfloor$ & $f_{up}(x,y) = \left\lceil \dfrac {x+y}{2} \right\rceil$ . Sólo tienes que elegir el más apropiado para lo que estás haciendo.
0 votos
¡Gracias por las soluciones! ¿Alguna idea para evitar las funciones de suelo/techo?
8 votos
No entiendo la resistencia a los suelos y techos. Lo vemos con frecuencia. Son buenas funciones cuando hacen lo que uno quiere. Como dijo Peter Košinár, sólo los esconde.
0 votos
@HenningMakholm: Creo que a la gente no le gustan las funciones discontinuas, y también las declaraciones de caso. Creo que el problema empieza cuando vamos a la pizarra y "dibujamos una función". Siempre es no sólo continua, sino diferenciable. Por supuesto, la mayoría de las funciones no lo son.
0 votos
@Ross: Menos caprichosamente, creo que es porque la gente se plantea implementar las fórmulas en un ordenador. Para aplicar el suelo/techo necesitas un <s>floating-point</s>. no integral cociente primero, y si todo lo que sabes sobre el punto flotante del ordenador es que "no es exacto, así que espera siempre pequeños errores de redondeo", entonces la discontinuidad del salto justo en un valor probable del cociente puede ser bastante aterrador. La gente puede sentir que estaría escribiendo código no determinista.
1 votos
@Henning En realidad, esto es irrelevante en el contexto de esta pregunta. Calcular el piso de la división (es decir, el "cociente de enteros") es algo que hacen los ordenadores sin necesidad de invocar cualquier aritmética de punto flotante. Además, son realmente feliz por haber calculado $\lfloor \frac{x}{2}\rfloor$ ya que corresponde sólo a desplazar el número un bit a la derecha.
0 votos
@Peter: Yo lo sé, tú lo sabes, Ross lo sabe. Estoy sugiriendo que los preguntadores que quieren evitar el suelo/techo no lo saben.
0 votos
@NessunDorma Así que quieres un elemental ¿función? ("Elemental" significa que es una combinación de $+,-,\times,\div$ , la exponenciación (es decir $a^b$ ), logaritmos y trigonometría).
0 votos
@columbus&Henning&Ross&Peter: Ciertamente el techo y el suelo son funciones perfectamente válidas y te agradezco que contestes. Sin embargo suena un poco "artificial" utilizar una función techo o suelo en el contexto que me interesa, que es el campo de los invariantes topológicos (por ejemplo, género, característica de Euler). Me gustaría construir algún invariante topológico a partir de otros dos invariantes topológicos que satisfagan la propiedad media anterior. Por lo tanto, estaba buscando algo que implicara más operaciones "algebraicas". Pero parece que no hay tal solución. Gracias también al resto de personas por responder.
0 votos
@NessunDorma ¿Hay alguna razón en particular por la que tenga que ser un número entero?