Soy programador, así que aquí está mi proceso de pensamiento sobre cómo solucionar este problema. Te guiaré a través de una serie de pasos para simplificar el problema hasta que sea algo trivial. Me he dado cuenta de que algunas respuestas hablan de cascos convexos, pero el perímetro no tiene forma convexa, es cóncavo.
El perímetro es necesariamente la suma de las longitudes de segmentos de líneas. El problema ahora se puede dividir en encontrar aquellos segmentos de líneas que contribuyen al perímetro.
Tratemos cada rectángulo como cuatro líneas individuales y tratemos cada línea por separado. ¿Qué parte de una línea dada es parte del perímetro? Después de pensar un poco, de hecho es la parte de la línea que no está dentro de ningún otro rectángulo. El problema ahora es: dada una línea y un montón de rectángulos, ¿cómo encuentras la longitud de la línea que se encuentra completamente fuera de todos los rectángulos?
- ¿Qué debo decir si un entrevistador me pregunta si estoy desesperado por conseguir el trabajo?
- ¿Cómo es una entrevista típica de Goldman Sachs si uno solicita el programa de analista de banca de inversión? Llévame a través de las diferentes rondas de entrevistas y algunas trampas comunes que presentan para los candidatos.
- ¿Por qué los empleadores hacen preguntas aparentemente sin sentido como, 'Si tu madre y tu esposa se están ahogando y solo puedes salvar a una, a quién salvarías'?
- ¿Cuáles son las cosas que no debes preguntar en una entrevista?
- ¿Qué consejos le darías a alguien que tiene una entrevista de trabajo para un puesto para el que está calificado en un 70%?
Vamos a simplificar eso aún más. Dado un rectángulo y un segmento de línea que lo atraviesa, ¿qué parte de la línea está dentro del rectángulo? Esto puede desglosarse aún más. ¿Qué parte de un segmento de línea se encuentra entre dos líneas paralelas? Finalmente hemos encontrado un problema que podemos resolver.
Solución para parte de un segmento de línea entre dos líneas paralelas: Proyectamos todo en una línea perpendicular para que todo se vuelva unidimensional. Piense en las dos líneas paralelas como dos torres, y la línea en la que estamos proyectando como el suelo. Si el sol estuviera directamente sobre nosotros, la sombra sería la proyección. Las proyecciones se pueden hacer con matemática vectorial simple usando productos de puntos. Ahora, la proyección de las dos líneas paralelas es un intervalo (como un intervalo en una línea de tiempo), junto con la proyección del segmento de línea que también es un intervalo. La parte del segmento de línea entre dos líneas paralelas es la intersección de estos dos intervalos. La intersección de intervalos es bastante trivial de calcular. Una vez que tenemos la intersección en la proyección, podemos encontrar el mismo intervalo en el segmento de línea original usando razones y proporciones.
Ahora que tenemos resuelto el problema de bajo nivel, comencemos a volver al problema original.
Solución para calcular parte de un segmento de línea dentro de un rectángulo: encuentre el intervalo para un par de líneas paralelas y haga lo mismo para el otro par. La intersección de estos intervalos es la parte del segmento de línea que está dentro del rectángulo.
Solución para calcular parte de un segmento de línea que está dentro de varios rectángulos: esto es trivial. Itere a través de todos los rectángulos para encontrar sus intervalos en el segmento de línea y luego aplique una operación de unión en todos los intervalos. La operación sindical es bastante trivial y, por lo tanto, no la explicaré aquí.
Finalmente, proporcione un segmento de línea, podemos calcular fácilmente la longitud de la línea que está fuera de todos los rectángulos. Solo es necesario restar la longitud del conjunto de unión calculado en el paso anterior de la longitud total.
Suma este valor para todas las líneas. El resultado es la suma de las longitudes de las partes de los lados de los rectángulos que no están dentro de ningún otro rectángulo. Este es el perímetro.
PD: Podría agregar diagramas si encuentro que a suficientes personas les gusta esta respuesta.