Esse problema (veja abaixo) foi apresentado como um desafio de golfe com código da High School Programming League. Os códigos mais curtos enviados durante o concurso foram: 177 bytes em Ruby, 212 bytes em Python 2.5 e 265 bytes em C. Alguém pode torná-lo mais curto? Outras linguagens de programação também são permitidas.
Formulação do problema : Dado 8 números inteiros: -1000 <x1, y1, x2, y2, x3, y3, x4, y4 <1000. Verifique qual é a forma da interseção de dois retângulos alinhados ao eixo: P1 = (x1, y1) , (x1, y2), (x2, y2), (x2, y1) e P2 = (x3, y3), (x3, y4), (x4, y4), (x4, y3).
* If the rectangles do not intersect print *nothing*.
* If there is exactly one point in common print *point*.
* If the intersections of P1 and P2 is a line segment print *line*.
* If they have a rectangular area in common print *rectangle*.
Especificação dos dados de entrada : A primeira linha contém o número de casos de teste t (1 <= t <1000). Cada uma das seguintes linhas t contém 8 números inteiros: x1, y1, x2, y2, x3, y3, x4, y4 (a área de ambos os retângulos é maior que 0).
Você pode testar sua solução aqui .
Respostas:
Python, 200 caracteres
f
retorna:fonte
OCaml, 265 caracteres
Usa (abusa) o fato de comparar retornar 0, 1 ou -1. Isso não é garantido de acordo com a documentação, mas é verdade no OCaml 3.10.1.
fonte