Dieses Problem (siehe unten) wurde als Code-Golf-Herausforderung für die High School Programming League angegeben. Die kürzesten Codes, die während des Wettbewerbs eingereicht wurden, waren: 177 Bytes in Ruby, 212 Bytes in Python 2.5, 265 Bytes in C. Kann jemand es kürzer machen? Andere Programmiersprachen sind ebenfalls erlaubt.
Problemformulierung : Gegeben 8 ganze Zahlen: -1000 <x1, y1, x2, y2, x3, y3, x4, y4 <1000. Überprüfen Sie die Form des Schnittpunkts zweier achsenausgerichteter Rechtecke: P1 = (x1, y1) , (x1, y2), (x2, y2), (x2, y1) und 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*.
Eingabedatenspezifikation : Die erste Zeile enthält die Anzahl der Testfälle t (1 <= t <1000). Jede der folgenden t Zeilen enthält 8 Ganzzahlen: x1, y1, x2, y2, x3, y3, x4, y4 (Die Fläche beider Rechtecke ist größer als 0).
Sie können Ihre Lösung testen hier .
Antworten:
Python, 200 Zeichen
f
kehrt zurück:quelle
OCaml, 265 Zeichen
Verwendet (missbraucht) die Tatsache, dass der Vergleich 0, 1 oder -1 zurückgibt. Dies ist laut Dokumentation nicht garantiert, gilt jedoch für OCaml 3.10.1.
quelle