فئة لإدارة التسلسل الهرمي المعقد للأشكال الهندسية مع التحقق من التقاطعات
Kotlin
Hard
classes
مهمة «فئة لإدارة التسلسل الهرمي المعقد للأشكال الهندسية مع التحقق من التقاطعات»
أنشئ فئات لتمثيل الأشكال الهندسية: Point، Circle، Rectangle. تحتوي الفئة Point على إحداثيات x و y (Double). تحتوي الفئة Circle على مركز (Point) ونصف قطر (Double). تحتوي الفئة Rectangle على الزاوية العلوية اليسرى (Point) والزاوية السفلية اليمنى (Point). قم بتنفيذ دالة في كل فئة باسم intersects(other: Any): Boolean، والتي ترجع true إذا كان الشكل يتقاطع مع شكل آخر (دائرة مع دائرة، مستطيل مع مستطيل، دائرة مع مستطيل). بالنسبة للدائرة والمستطيل، استخدم التحقق من المسافة من مركز الدائرة إلى أقرب نقطة في المستطيل. في الدالة main()، اقرأ من stdin عدد الأشكال N (1 ≤ N ≤ 100)، ثم لكل شكل سطر: النوع ("Point"، "Circle"، "Rectangle") والإحداثيات. بالنسبة لـ Point: x y. بالنسبة لـ Circle: x y r. بالنسبة لـ Rectangle: x1 y1 x2 y2. اطبع لكل زوج من الأشكال (i < j) نتيجة التحقق من التقاطع: "YES" أو "NO" بترتيب تصاعدي للأزواج.
تنسيق الإدخال
عدد صحيح N. ثم N سطر، كل سطر يحتوي على نوع الشكل ومعلماته (إحداثيات من نوع Double).
تنسيق الإخراج
لكل زوج (i, j) حيث i < j، اطبع "YES" أو "NO" بترتيب تصاعدي لـ i، ثم j.
أمثلة
مثال 1
الإدخال
5
1 100 100
2 200 200
3 150 300
4 300 400
5 50 1500
الإخراج
100 400 4 750 187
1500 1500 1 50 50
مثال 2
الإدخال
0
الإخراج
main.kt