Aquí hay cinco imágenes de peras y una rampa de acero :
Estas son solo miniaturas, ¡haz clic en ellas para agrandarlas!
(Hice esto con Algodoo ).
Esta clase de imágenes siempre tiene las siguientes propiedades:
- Siempre tienen 400 × 400 píxeles con un fondo blanco. (Puede que no sea exactamente blanco ya que las imágenes SE están comprimidas con pérdida).
- Tienen de 1 a 4 peras idénticas, cada una rotada y posicionada (casi) de cualquier manera.
- Tienen una rampa vertical de acero que llega hasta la parte inferior de la imagen.
- Aparte de la parte inferior de la rampa, la rampa y los cuadros delimitadores de pera ( ejemplo de cuadro delimitador ) nunca tocan ni salen de los límites de la imagen.
- Las cajas delimitadoras de las peras nunca se superponen entre sí ni se superponen a la rampa.
- Las peras pueden estar bajo la parte en pendiente de la tolva, como en B , C , y D . (Por lo tanto, el cuadro delimitador del conducto puede superponerse al cuadro delimitador de una pera).
- La rampa puede tener cualquier posición horizontal y vertical siempre que haya espacio suficiente para que todas las cajas delimitadoras de las peras se ajusten libremente por encima (no se probarán casos de "apenas ajustes") y parte de la parte de la columna es visible.
Desafío
Escriba un programa que tome esa imagen y genere otra imagen de 400 × 400 con la rampa en el mismo lugar, pero con las peras reposicionadas para que estén todas por encima de la rampa (para que puedan caer en ella y exprimirlas, etc.).
Los requisitos para la imagen de salida son:
- Todas las peras en la imagen de entrada deben reposicionarse de modo que estén sobre la rampa, entre el borde izquierdo y derecho de su embudo. (Por encima de un borde no está bien).
- Cada pera debe mantener su ángulo de rotación. (Por lo tanto, debe cortar y pegar las peras, no volver a dibujarlas).
- Las peras no deben solaparse ni tocarse entre sí ni con el conducto. (Sin embargo, los cuadros delimitadores de pera pueden superponerse).
- Las peras no deben tocar ni salir de los límites de la imagen.
Aquí hay ejemplos de salidas válidas para las cinco imágenes de muestra:
Estas son solo miniaturas, ¡haz clic en ellas para agrandarlas!
Tenga en cuenta que la imagen de entrada para E ya era una salida válida, pero reorganizar las peras cuando no es técnicamente necesario está bien.
Detalles
- Tome el nombre de archivo de la imagen o los datos de la imagen sin procesar a través de stdin / línea de comando / llamada a función.
- Envíe la imagen a un archivo con el nombre de su elección o envíe los datos del archivo de imagen sin procesar a stdout o simplemente muestre la imagen.
- Se puede utilizar cualquier formato de archivo de imagen sin pérdida común.
- Se pueden usar bibliotecas de gráficos e imágenes.
- Unos pocos píxeles incorrectos aquí y allá (debido a la pérdida o algo así) no es gran cosa. Si no puedo decir que algo está mal visualmente, entonces probablemente esté bien.
El código más corto en bytes gana. Tiebreaker es la publicación más votada.