চতুর্ভুজ শ্রেণিবদ্ধ করুন | আমার গণিত পরীক্ষায় আমাকে সাহায্য করুন!


20

সাহায্য করুন! আমার গণিত পরীক্ষা শীঘ্রই আসছে এবং আমি পড়াশোনা করি না! 1 পরীক্ষার অংশটি হল একটি চতুর্ভুজের শ্রেণিবিন্যাস যা তার শীর্ষবিন্দু স্থানাঙ্কগুলি দিয়েছিল, যা আমি, দুর্ভাগ্যবশত, কীভাবে করব তা জানি না। 2

সুতরাং, আপনার চ্যালেঞ্জটি আমার পক্ষে এটি করার জন্য একটি প্রোগ্রাম লেখার জন্য যাতে আমি ব্যর্থ না হই!

চ্যালেঞ্জ

চারটি উল্লম্ব প্রদত্ত যেমন তাদের তিনটিই কোলিনার নয়, এই চারটি উল্লম্ব দ্বারা গঠিত চতুর্ভুজের সুনির্দিষ্ট শ্রেণিবিন্যাস নির্ধারণ করুন।

"সর্বাধিক সুনির্দিষ্ট শ্রেণিবদ্ধকরণ" বলতে আমি যা বোঝাতে চাইছি তা হল সমস্ত স্কোয়ার আয়তক্ষেত্রযুক্ত হলেও আকৃতিটি বর্গক্ষেত্র হিসাবে চিহ্নিত হওয়া উচিত তবে এটি একটি বর্গক্ষেত্র এবং এটি একটি আয়তক্ষেত্র নয় তা নির্দেশ করে না।

ইনপুট

চারটি (x, y) স্থানাঙ্ক হিসাবে ইনপুট দেওয়া হবে। এগুলি আপনি দৈর্ঘ্যের 4 দৈর্ঘ্যের তালিকাগুলির / তালিকাগুলির 2 তালিকা হিসাবে নিতে পারেন ternative বিকল্পভাবে, আপনি এক্স-স্থানাঙ্কের তালিকা এবং সংশ্লিষ্ট y- স্থানাঙ্কের একটি তালিকা হিসাবে ইনপুট নিতে পারেন।

উদাহরণস্বরূপ, যদি আমার আকৃতি বিন্দুতে কোণ রয়েছে (0, 0), (5, 0), (6, 1), এবং (1, 1), আপনি নিম্নলিখিত ফরম্যাটের বা অনুরূপ কিছু পারেন ইনপুট নিতে চয়ন করতে পারেন:

[(0, 0), (5, 0), (6, 1), (1, 1)]
([0, 5, 6, 1], [0, 0, 1, 1])

আপনি ধরে নিতে পারেন যে চতুর্ভুজটি স্বয়ং-ছেদকারী নয় এবং পয়েন্টগুলি সঠিক ক্রমে দেওয়া হয়েছে (অর্থাত্ ইনপুটটিতে টানা দুটি পয়েন্ট চতুর্ভুজটির একটি লাইন বিভাগ দ্বারা সংযুক্ত করা হবে)।

আউটপুট

চতুর্ভুজগুলির নীচের প্রতিটি শ্রেণির জন্য আপনার একটি অনন্য আউটপুট প্রয়োজন:

  • বর্গক্ষেত্র
  • আয়তক্ষেত্র
  • অসমকোণ সমবাহু চতুর্ভুজ ক্ষেত্র
  • সমান্তরিক-ক্ষেত্র
  • ট্র্যাপিজয়েড / অসমাস্তরাল বাহুবিশিষ্ট চতুর্ভুজ
  • ঘুড়ি
  • চতুর্ভুজ

এটি নিজেই সঠিক নাম, একটি চরিত্র, একটি পূর্ণসংখ্যা ইত্যাদি হতে পারে

বিধি

  • স্ট্যান্ডার্ড লুফোলস প্রয়োগ করুন
  • যদি আপনার প্রোগ্রামিং ভাষার কোনও অন্তর্নির্মিত অন্তর্ভুক্ত থাকে যা এই সঠিক কাজটি সম্পাদন করে তবে সেই বিল্ট-ইন অনুমোদিত নয়।
  • দুটি পয়েন্টের মধ্যে দূরত্ব সন্ধানের জন্য বিল্ট-ইনগুলি অনুমোদিত।
  • দুটি লাইনের মধ্যবর্তী কোণ খুঁজে পাওয়ার জন্য অন্তর্নির্মিত অনুমোদিত।

এই মুহুর্তে, আপনি যদি সমস্ত শর্তাদি জানেন তবে আপনি প্রোগ্রামিং শুরু করতে প্রস্তুত! (পরীক্ষার কেসগুলি শেষ হয়)

পরিভাষা

এই বিভাগটি যার জন্য বিভিন্ন আকারের সংজ্ঞা সম্পর্কে স্পষ্টতা প্রয়োজন for

বর্গক্ষেত্র

চতুর্ভুজটি একটি বর্গক্ষেত্র হয় এবং কেবল যদি এর চার পাশের 4 টি দৈর্ঘ্যে সমান হয় এবং সংলগ্ন দিকগুলির প্রতিটি জোড়া লম্ব হয় (এটি উভয়ই একটি আয়তক্ষেত্র এবং একটি গম্বুজ)।

আয়তক্ষেত্র

চতুর্ভুজটি একটি আয়তক্ষেত্র হয় এবং কেবল যদি সংলগ্ন পক্ষের প্রতিটি জোড়া লম্ব হয়।

অসমকোণ সমবাহু চতুর্ভুজ ক্ষেত্র

চতুর্ভুজটি হল একটি রম্বস এবং যদি এর চার দিকের 4 টি সমান হয় তবেই।

সমান্তরিক-ক্ষেত্র

চতুর্ভুজটি একটি সমান্তরালগ্রাম এবং যদি কেবলমাত্র বিপরীত পক্ষের প্রতিটি জোড়া সমান্তরাল হয় এবং বিপরীত কোণগুলির প্রতিটি জোড়া সমান হয়। এই উভয় শর্তই একে অপরকে বোঝায় তাই আপনার কেবলমাত্র তাদের একটির জন্য পরীক্ষা করা দরকার।

ট্র্যাপিজয়েড / অসমাস্তরাল বাহুবিশিষ্ট চতুর্ভুজ

চতুর্ভুজটি হ'ল ট্র্যাপিজয়েড / ট্র্যাপিজিয়াম যদি হয় এবং কেবলমাত্র এর কমপক্ষে সমান্তরাল দিকগুলির এক জোড়া থাকে।

ঘুড়ি

চতুর্ভুজটি একটি ঘুড়ি হয় যদি সংলগ্ন পক্ষের দুটি বিপরীত জোড়া দৈর্ঘ্যে সমান হয়; অর্থাৎ এর সংলগ্ন দুটি দিক সমান এবং অন্য দুটিও সমান।

পরীক্ষার মামলা

input as (x, y) * 4 -> full name
[(0, 0), (1, 0), (1, 1), (0, 1)] -> square
[(0, 0), (1, 1), (-1, 3), (-2, 2)] -> rectangle
[(0, 0), (5, 0), (8, 4), (3, 4)] -> rhombus
[(0, 0), (5, 0), (6, 1), (1, 1)] -> parallelogram
[(0, 0), (4, 0), (3, 1), (1, 1)] -> trapezoid/trapezium
[(0, 0), (1, 1), (0, 3), (-1, 1)] -> kite  
[(0, 0), (2, 0), (4, 4), (0, 1)] -> quadrilateral

লিঙ্কগুলি (দেশম গ্রাফিং ক্যালকুলেটর)

এখানে প্রতিটি পরীক্ষার কেসগুলির ভিজ্যুয়ালাইজেশনের লিঙ্ক রয়েছে।

বর্গক্ষেত্র
আয়তক্ষেত্র
সমম্বল
সমান্তরাল
ট্র্যাপিজয়েড / ট্র্যাপিজিয়াম
ঘুড়ি
চতুর্ভুজ

বিজয়ী মানদণ্ড

আমি পরীক্ষায় স্পষ্টতই একটি কম্পিউটার আনতে পারি না, সুতরাং আপনার প্রয়োজন সবচেয়ে কম সংক্ষিপ্ত কোডটি লিখতে হবে যাতে আমি এটি মুখস্ত করতে পারি। আপনার প্রোগ্রামটি যতটা সম্ভব ছোট হতে হবে তার মার্জিনে এটি ফিট করার জন্য আমার এটি মার্জিনে লিখতে হবে এবং ট্রাইআইটঅফলাইন টিএম ব্যবহার করে এটি চালানো দরকার!

1 অবশ্যই আমি করেছি: পি
2 অবশ্যই আমি আসলে করি: পি



@ রোহানঝুনঝুনওয়ালা আমি নতুন ফারম্যাট (আমার মনে হয় এটাই সঠিক ব্যক্তি?) তবে চমৎকার এক্সকেসিডি রেফ: পি
এক্সকেসিডি

সিএসভি কি ইনপুট অনুমোদিত?
tuskiomi

নির্দিষ্টকরণের আংশিক ক্রম কী?
পিটার টেলর

উত্তর:


6

এপিএল (ডায়ালগ) , 104 89 80 82 81 79 78 বাইট

⍙←{⍵⍺⍺1⌽⍵}
⎕←(|x){⍵≡2⌽⍵:≡⍙¨0⍺⍵⋄2 4=+/1=2|+⍙↑⍵(=⍙⍺)}2|1+-⍙(12x←-⍙⎕+.×1 0J1)÷○1

এটি অনলাইন চেষ্টা করুন!


ইনপুট আউটপুট

ইনপুট হিসাবে স্থানাঙ্কের 4 × 2 ম্যাট্রিক্স গ্রহণ করে

আউটপুট

  • 1 1 1 স্কয়ারের জন্য
  • 1 1 0 রম্বসের জন্য
  • 1 0 1 আয়তক্ষেত্রের জন্য
  • 1 0 0 সমান্তরাল জন্য
  • 1 0 ঘুড়ির জন্য
  • 0 1 ট্র্যাপিজিয়ামের জন্য
  • 0 0 চতুর্ভুজ জন্য

অ্যালগরিদম

প্রথমে চতুর্ভুজের 4 টি পাশের দৈর্ঘ্য এবং কোণগুলি সন্ধান করুন

যদি উভয় বিপরীত কোণগুলির সমান ( OA) হয় তবে আকারটি একধরণের সমান্তরাল। সমস্ত পাশের দৈর্ঘ্য সমান (নির্ধারিত পার্শ্ব AS) এবং সমস্ত কোণ সমান হলে ( AA) নির্ধারণ করুন।

+--------+----------------+----------------+
|        |       AA       |      ~AA       |
+--------+----------------+----------------+
|   AS   |     Square     |    Rhombus     |
|--------+----------------+----------------+
|  ~AS   |    Rectangle   |  Parallelogram |
+--------+----------------+----------------+

যদি না হয় OAতবে:

  • সমান সংলগ্ন দিকগুলির ঠিক 2 জোড়া রয়েছে কিনা এবং সেগুলি পৃথক করে ( aabbপরিবর্তে aaab) নির্ধারণ করুন। যদি তা হয় তবে আকারটি একটি ঘুড়ি।

  • সমান্তরাল বিপরীত দিকগুলির ঠিক 1 জোড়া আছে কিনা তা নির্ধারণ করুন। যদি তা হয় তবে আকৃতিটি ট্র্যাপিজিয়াম।

  • অন্যথায়, আকৃতিটি একটি চতুর্ভুজ।


কোড

⍙←{⍵⍺⍺1⌽⍵}একটি নতুন অপারেটর সংজ্ঞায়িত। এপিএলে একটি অপারেটর মানে একটি উচ্চতর অর্ডার ফাংশন । এই অপারেটরটি 1 টি কার্যকরী আর্গুমেন্ট গ্রহণ করে ( ⍺⍺) এবং এক মনাদিক ফাংশন দেয় যা:

  1. 1⌽আর্গুমেন্ট ( ) আবর্তন করে ( )
  2. ⍺⍺এটি এবং এর মধ্যে প্রয়োগ করুন

এটি স্কেলার ফাংশনগুলির জন্য বিশেষত কার্যকর যেহেতু তাদের বেশিরভাগই সুস্পষ্টভাবে অ্যারে যুক্তিগুলি জুড়ে ম্যাপ করে, চারপাশে মোড়ানো সাথে প্রতিটি সংলগ্ন উপাদানগুলির মধ্যে এটি প্রয়োগ করতে দেয় to উদাহরণস্বরূপ +⍙1 2 3 4হয় 1 2 3 4 + 2 3 4 1যা মূল্যায়ণ 3 5 7 5


x←-⍙⎕+.×1 0J1 আকারের 4 টি বাহকের ভেক্টরকে প্রতিনিধিত্ব করে জটিল সংখ্যার অ্যারেতে ইনপুট স্থানাঙ্ক ম্যাট্রিক্সকে রূপান্তর করে।

  • , যখন রেফারেন্স করা হয়, ইনপুট নেয় এবং ফেরত দেয়

  • 1 0J1[1, i] (গাণিতিক অর্থে "ভেক্টর" এবং "i" -1 এর বর্গমূল হিসাবে) উপস্থাপন করে। এপিএলে একটি জটিল সংখ্যা a+biলেখা থাকেaJb

  • +.×ম্যাট্রিক্সের গুণ গাণিতিকভাবে, ফলাফলটি 4 × 1 ম্যাট্রিক্স হবে। তবে +.×এপিএলে তাকে "অভ্যন্তরীণ পণ্য" বলা হয় যা ম্যাট্রিক্সের গুণ এবং ভেক্টরের অভ্যন্তরীণ পণ্যকে সাধারণীকরণ করে এবং এমনকি একটি 2-মাত্রিক একটি ত্রিমাত্রিক অ্যারে "গুণ" করার মতো স্টাফও করতে দেয়। এই ক্ষেত্রে, আমরা একটি 4 × 2 ম্যাট্রিক্স এবং একটি 2-উপাদান ভেক্টরকে গুণ করছি, ফলস্বরূপ একটি 4-এলিমেন্ট ভেক্টর (প্রদত্ত 4 টির কোণগুলির জটিল সংখ্যার উপস্থাপনা)।

  • -⍙উপরে উল্লিখিত হিসাবে চারপাশে মোড়কের সাথে জোড়াযুক্ত বিয়োগফল হয়। এটি আকৃতির চার পাশের ভেক্টরকে দেয় (জটিল সংখ্যা হিসাবে) এই ভেক্টরগুলি "বিপরীত" দিক নির্দেশ করে তবে তাতে কিছু যায় আসে না।

  • x← পরিবর্তনশীল মধ্যে যে স্টোর x


2|1+-⍙(12○x)÷○1 আকারের 4 টি শীর্ষে বহির্মুখী কোণগুলি (একটি উপস্থাপনা) সন্ধান করে।

  • 12○x4 টি পার্শ্বের ভেক্টরগুলির প্রত্যেকের রেডিয়ানে মূল যুক্তি খুঁজে বের করে ।

  • ÷○1by দ্বারা ভাগ হয় যাতে কোণগুলির সাথে কাজ করা সহজ হয়। সুতরাং, সমস্ত কোণ একটি সরল কোণের একাধিক হিসাবে প্রকাশ করা হয়।

  • -⍙উপরে উল্লিখিত হিসাবে চারপাশে মোড়ানো সঙ্গে জোড় বিয়োগ বিয়োগ। এটি 4 বহির্মুখী কোণ দেয়।

  • 2|1+ মূল আর্গুমেন্টটি ক্যাপড (-1,1] এবং জোড় বিয়োগ বিয়োগটি পরিসীমা তৈরি করে (-2,2] This একই কোণে 2 টি পৃথক উপস্থাপনা রয়েছে বলে এটি খারাপ। "1 মোড 2 যোগ করুন" করে কোণটি পুনরায়- (0,2] এ ক্যাপড। যদিও সমস্ত কোণগুলি হওয়া উচিত তার চেয়ে 1 টি বেশি, আমরা যদি তা মনে রাখি তবে এটি ঠিক।


|x4 টি পাশের ভেক্টরগুলির প্রত্যেকটির দৈর্ঘ্য সন্ধান করে


{⍵≡2⌽⍵:≡⍙¨0⍺⍵⋄2 4=+/1=2|+⍙↑⍵(=⍙⍺)}4 টি বাহ্যিক কোণগুলির অ্যারে যুক্ত করে সঠিক যুক্তি হিসাবে 4 টি বাহুর দৈর্ঘ্যের অ্যারের সাথে সঠিক আর্গুমেন্ট হিসাবে সংজ্ঞায়িত এবং প্রয়োগ করে

  • ফাংশনটির একটি রক্ষিত অভিব্যক্তি রয়েছে। এক্ষেত্রে,⍵≡2⌽⍵ প্রহরী হয়।
  • প্রহরী যদি 1পরবর্তী মূল্যায়ণটি মূল্যায়ন করে≡⍙¨0⍺⍵ কার্যকর করা হয় এবং এর মান ফিরে আসে।
  • গার্ড যদি এটির মূল্যায়ন করে 0, তবে সেই অভিব্যক্তিটি এড়িয়ে যায় এবং তার পরে 2 4=...=⍙⍺)তার পরিবর্তে কার্যকর হয়।

⍵≡2⌽⍵ উভয় জোড়া বিপরীত কোণ সমান কিনা তা পরীক্ষা করে।

  • 2⌽⍵ কোণগুলি অ্যারে 2 টি জায়গায় ঘোরান।
  • ⍵≡এটি নিজের মতো একই কিনা তা পরীক্ষা করে দেখুন

≡⍙¨0⍺⍵ প্রতিটি সমান্তরাল-টাইপ আকারের জন্য একটি অনন্য মান প্রদান করে।

  • 0⍺⍵স্কেলারের 3-উপাদান অ্যারে 0, পাশের দৈর্ঘ্যের অ্যারে এবং কোণগুলি অ্যারে
  • ≡⍙¨ , executes ≡⍙এই উপাদানগুলির প্রত্যেকের জন্য করে।
  • ≡⍙অ্যারের সমস্ত মান সমান কিনা তা পরীক্ষা করে এটি দ্বারা 1 দ্বারা ঘোরানো একই অ্যারে দেয় কিনা তা পরীক্ষা করে দেখুন। স্কেলারগুলি ঘুরবে না তাই ≡⍙0ফিরে আসে 1। উপরে উল্লিখিত হিসাবে, ≡⍙⍺একটি রম্বস ≡⍙⍵পরীক্ষা করে এবং একটি আয়তক্ষেত্র পরীক্ষা করে।

2 4=+/1=2|+⍙↑⍵(=⍙⍺)প্রতিটি অ সমান্তরাল-টাইপ আকারের জন্য একটি অনন্য মান প্রদান করে। এটি ঘুড়ি এবং ট্র্যাপিজিয়ামের জন্য চেকগুলি জড়িত করে অর্জিত হয়।


2=+/1=2|+⍙⍵ ট্র্যাপিজিয়াম পরীক্ষা করে দেখুন।

  • +⍙⍵সংলগ্ন কোণ যোগফল দেয়। সমান্তরাল রেখার অভ্যন্তরের কোণগুলি একটি সরল কোণের সমান হয়, এভাবে চতুর্ভুজটির সমান্তরাল বাহুর বাহ্যিক কোণগুলি ঘটে। সুতরাং, সমান্তরাল পক্ষের প্রতিটি জোড়া দুটি 1বা -1সংলগ্ন কোণের যোগফলগুলিতে নিয়ে যাওয়া উচিত।

  • 1=2|যাইহোক, মধ্যে কোণগুলি হওয়া উচিত তার চেয়ে 1 টি বেশি, সুতরাং কোণগুলি প্রকৃতপক্ষে যোগফল 1বা যোগফল 3। এটি "মোড 2 সমান 1" দ্বারা চেক করা যায়।

  • +/অ্যারের যোগফল। এই সন্নিহিত কোণ অঙ্কের যা একটি গণনা দেয় 1বা 3

  • 2= এটি 2 সমান কিনা তা পরীক্ষা করে দেখুন (সমান্তরাল দিকগুলির ঠিক এক জোড়া আছে কিনা)


4=+/1=2|+⍙(=⍙⍺) একটি ঘুড়ি জন্য চেক।

  • (=⍙⍺)কোন সংলগ্ন দিক সমান যা নির্দেশ করে একটি অ্যারে দেয়। ভিন্ন , =কাজ উপাদান অনুসারে। সুতরাং এটির সাথে একটি 4-উপাদান অ্যারে 1যেখানে পাশের দৈর্ঘ্য "পরবর্তী" পাশের সমান হয়।

  • +⍙ চারপাশে মোড়ানো সঙ্গে পেয়ারওয়্যার যোগফল।

  • 1=2|যেহেতু (=⍙⍺)একটি বুলিয়ান অ্যারের দেয় (শুধুমাত্র সঙ্গে এক 0s এবং 1গুলি), pairwise সমষ্টি একমাত্র সম্ভাব্য মান 0, 1এবং 2। সুতরাং 1=2|শুধু হিসাবে একই1=

  • +/অ্যারের যোগফল। এটি জোড় জোড়ের একটি পরিমাণ দেয় যা 1

  • 4=চেক করুন যে যদি 4. যদি একমাত্র উপায় যে এরকম হয় সমান (=⍙⍺)হয় 1 0 1 0বা 0 1 0 1। উপরে উল্লিখিত হিসাবে, এর অর্থ হ'ল একটি ঘুড়ি।


2 4=+/1=2|+⍙↑⍵(=⍙⍺) উপরের চেকগুলি intertwines

  • ⍵(=⍙⍺)অ্যারে এবং অ্যারের 2-উপাদান নেস্টেড অ্যারে হয়(=⍙⍺)

  • নেস্টেড অ্যারেটিকে যথাযথ ম্যাট্রিক্সে উন্নীত করে। যেহেতু ⍵(=⍙⍺)4-এলিমেন্ট অ্যারেগুলির 2-উপাদান অ্যারে, ফলাফলটি 2 2 4 ম্যাট্রিক্স।

  • +⍙যেহেতু (এবং, এক্সটেনশনের মাধ্যমে ) শেষ (অনুভূমিক) অক্ষটি ঘোরায়, +⍙একটি ম্যাট্রিক্সে +⍙পৃথকভাবে প্রতিটি সারিতে প্রয়োগ করার সমান ।

  • 1=2|উভয় অবশিষ্টাংশ / মোড ( |) এবং সমান ( =) উভয়ই প্রতি-মৌলিক ভিত্তিতে এমনকি ম্যাট্রিকগুলিতেও কাজ করে।

  • +/ডিফল্টরূপে, হ্রাস ( /) শেষ (অনুভূমিক) অক্ষ বরাবর কাজ করে। সুতরাং +/সারিগুলির সাথে যোগফলগুলি তৈরি করুন এবং একটি 2 × 4 ম্যাট্রিক্সকে 2-এলিমেন্টের সহজ অ্যারেতে পরিণত করুন।

  • 2 4=যেহেতু =প্রতি উপাদান উপাদান কাজ করে, তাই এটি ঘুড়ি এবং ট্র্যাপিজিয়াম শর্তগুলি একই সাথে পরীক্ষা করে।


3

গণিত, 195 বাইট

Which[s=Differences@{##,#};l=Norm/@s;r=#.#2==#2.#3==0&@@s;Equal@@l,If[r,1,2],#==#3&&#2==#4&@@l,If[r,3,4],MatchQ[l,{a_,b_,b_,a_}|{a_,a_,b_,b_}],5,#+#3=={0,0}||#2+#4=={0,0}&@@Normalize/@s,6,1>0,7]&

সাদা স্থান সহ:

Which[
    s = Differences @ {##,#};
    l = Norm /@ s;
    r = #.#2 == #2.#3 == 0& @@ s;

    Equal @@ l, If[r, 1, 2],
    # == #3 && #2 == #4& @@ l, If[r, 3, 4],
    MatchQ[l, {a_,b_,b_,a_}|{a_,a_,b_,b_}], 5,
    #+#3 == {0,0} || #2+#4 == {0,0}& @@ Normalize /@ s, 6,
    1 > 0, 7
]&

1স্কোয়ারের জন্য আউটপুট , 2রোম্বি, 3আয়তক্ষেত্রের 4জন্য, সমান্তরালীদের 5জন্য, ঘুড়িগুলির 6জন্য, ট্র্যাপিজয়েডগুলির জন্য এবং7 জন্য অন্য কোনও কিছুর । আমি একটি টিআইও লিঙ্ক পোস্ট করব, তবে এটি ম্যাথিক্সে দৃশ্যত কাজ করে না।

চার পয়েন্ট হন P, Q, R, এবং S, তারপর {##,#}হয় {P,Q,R,S,P}, তাই sপাশ ভেক্টর তালিকা {Q-P,R-Q,S-R,P-S}, lযারা ভেক্টর লেন্থ, এবং rএই শর্তে যে মধ্যবর্তী কোণ হল Q-Pএবং R-Qসেইসাথে মধ্যে কোণ R-Qএবং S-Rউভয়90 ডিগ্রি।

সুতরাং, যদি সমস্ত পক্ষের দৈর্ঘ্য সমান হয়, তবে চতুর্ভুজটি একটি রম্বস হয়। যদিr এটি ধারণ করে তবে এটি আসলে একটি বর্গক্ষেত্র, অন্যথায় এটি কেবল একটি সরল গড়াগড়ি।

রম্বি বিধান, বিপরীত দিকের দৈর্ঘ্যের উভয় জোড়া যদি সমান হয়, তবে চতুর্ভুজটি এখনও সমান্তরাল হয়। যদি rএটি ধারণ করে তবে এটি আসলে একটি আয়তক্ষেত্র, অন্যথায়, এটি কেবল একটি সরল সমান্তরাল।

Parallelograms আউট বিধান, পাশের লেন্থ তালিকা lফর্ম হল {a,b,b,a}বা {a,a,b,b}কিছু জন্য aএবং bতারপর, চতুর্ভুজ একটি ঘুড়ি হয়। দ্রষ্টব্য যে এটি অতিরিক্তভাবে ট্র্যাপিজয়েড হতে পারে না বা এটি আসলে একটি রম্বস হতে পারে।

সমান্তরালোগ্রাম এবং ঘুড়ি বিধান, যদি চতুর্ভুজ সমান্তরাল পাশের একটি জোড়া থাকে, তবে এটি ট্র্যাপিজয়েড। আমরা Normalizeপাশের ভেক্টরগুলিকে আইএন করে পরীক্ষা করে এবং বিপরীত ভেক্টরগুলির একটি জোড়া যুক্ত করে কিনা তা খতিয়ে দেখছি{0,0}

উপরোক্ত সমস্ত বিধি বিধান, যদি 1 > 0(এটি আরও ভাল হয়), তবে চতুর্ভুজটি কেবল একটি সরল পুরাতন চতুর্ভুজ।


1

পাইথন 2 , 463 410 408 397 বাইট

তালিকায় সূচকের পরিবর্তে ষষ্ঠ লাইনে একটি টুপল ব্যবহার করে 53 বাইট সংরক্ষণ করা হয়েছে Sa

প্রতিটি আকারের প্রথম বর্ণের পরিবর্তে আউটপুট পূর্ণসংখ্যা 1 থেকে 7 পর্যন্ত স্থানান্তরিত করে 11 বাইট সংরক্ষণ করা হয়েছে। পূর্ণসংখ্যা নিম্নরূপ:

  1. বর্গক্ষেত্র
  2. আয়তক্ষেত্র
  3. অসমকোণ সমবাহু চতুর্ভুজ ক্ষেত্র
  4. সমান্তরিক-ক্ষেত্র
  5. ট্র্যাপিজয়েড
  6. ঘুড়ি
  7. চতুর্ভুজ
from numpy import *;D=dot
from numpy.linalg import *;N=norm
def P(a,b):x=D(a,b);y=N(a)*N(b);return x==y or x==-y
def Q(a,b):return int(N(a)==N(b))
L=input()
a,b,c,d=tuple([(L[i][0]-L[(i+1)%4][0],L[i][1]-L[(i+1)%4][1]) for i in range(4)])
g=7
e=Q(a,c)+Q(b,d)
if e==2:
 g=(1if D(a,b)==0 else 3) if Q(a,b) else 2 if D(a,b)==0 else 4
elif P(a,c) or P(b,d):
 g = 5
elif Q(a,b) or Q(b,c):
 g = 6
print g

এটি অনলাইন চেষ্টা করুন!

যুক্তি প্রদর্শন করতে অসমাপ্ত

বিভিন্ন পরীক্ষার ইনপুটটির জন্য আউটপুট দেখানোর জন্য একটি ফাংশন হিসাবে দেখানো হয়েছে। নোট আমি প্রশ্নের প্রাথমিকভাবে সরবরাহ করা একটি থেকে "আয়তক্ষেত্র" পরীক্ষার উদাহরণটি পরিবর্তন করেছি, যা আয়তক্ষেত্র নয়।

বাহুগুলির দৈর্ঘ্য সমান, বিপরীত দিকের সমান্তরাল বা সংলগ্ন দিকের লম্ব লম্বা কিনা তা নির্ধারণের জন্য চতুর্ভুজাকার পক্ষ দ্বারা গঠিত ভেক্টরগুলির আদর্শ (দৈর্ঘ্য) উপর যুক্তি যুক্ত থাকে।

def S(va, vb):
    return (va[0]-vb[0], va[1]-vb[1])
def dot(sa,sb):      # Eventually replaced with numpy.dot
    return(sa[0]*sb[0]+sa[1]*sb[1])
def norm(s):         # Eventually replaced by numpy.linalg.norm
    return (s[0]**2+s[1]**2)**.5
def isperp(a,b):     # Test if lines/vectors are perpendicular
    return dot(a,b)==0
def ispar(a,b):      # Test if lines/vectors are parallel
    x = dot(a,b)
    y = norm(a)*norm(b)
    return x == y or x == -y
def iseq(a,b):       # Test if lines/vectors are equal in length
    return norm(a)==norm(b)
   
def f(L):
    #Define the four sides
    s = []
    for i in range(4):
        s.append(S(L[i],L[(i+1)%4]))  # I refer often so shorter names may eventually

    guess = 'Q'
    eqsides = 0           # These 6 lines eventually golfed using integer arithmetic by returning an int from iseq()
    if iseq(s[0], s[2]):
        eqsides += 1
    if iseq(s[1],s[3]):
        eqsides += 1
    if eqsides == 2:
    # Opposite sides are equal, so square, rhombus, rectangle or parallelogram
        if iseq(s[0],s[1]):       #Equal adjacent sides, so square or rhombus
            guess='S' if isperp(s[0], s[1]) else 'H'
        else:                     # rectangle or Parallelogram
            guess='R' if isperp(s[0], s[1]) else 'P'
    elif ispar(s[0],s[2]) or ispar(s[1],s[3]):
        guess = 'T'
    elif iseq(s[0],s[1]) or iseq(s[1],s[2]):
        guess = 'K'
    return guess
    

#test suite:
print f([(0, 0), (1, 0), (1, 1), (0, 1)]) # -> square
print f([(0, 0), (1, 1), (-1, 3), (-2, 2)]) # -> rectangle
print f([(0, 0), (5, 0), (8, 4), (3, 4)]) #  -> rhombus
print f([(0, 0), (5, 0), (6, 1), (1, 1)]) #  -> parallelogram
print f([(0, 0), (4, 0), (3, 1), (1, 1)]) # -> trapezoid/trapezium
print f([(0, 0), (1, 1), (0, 3), (-1, 1)]) #-> kite  
print f([(0, 0), (2, 0), (4, 4), (0, 1)]) #-> quadrilateral

এটি অনলাইন চেষ্টা করুন!


1
[(0, 0), (2, 2), (4, 0), (0,-2)]ঘুড়ি হিসাবে বিভক্ত শ্রেণিতে
টুইনাইট

এই কাজ করবে? repl.it/JRzE
জাকারিয়া

@ টুইনাইট ধন্যবাদ এই সম্ভাবনাটি দেখেনি। সমস্যাটি হ'ল আমার প্রাথমিক অ্যালগরিদমটি কেবল মিলে যাওয়া দৈর্ঘ্যের একজোড়া দিক রয়েছে কিনা তা পরীক্ষা করে দেখে। যেমন আপনি উদাহরণস্বরূপ দেখান, এটি যথেষ্ট নয়। আমার এক জোড়া ম্যাচযুক্ত পক্ষের জন্য পরীক্ষা করা উচিত এবং তারপরে বিপরীত জোড়ও দৈর্ঘ্যে সমান কিনা তা পরীক্ষা করে দেখুন। এটি বাস্তবায়নে খুব ব্যস্ত হয়ে পড়েছেন।
সিসিবি 60

0

ব্যাচ, 287 বাইট

@set/aa=%3-%1,b=%4-%2,c=%5-%1,d=%6-%2,e=%7-%1,f=%8-%2,g=a*a+b*b,h=(h=c-a)*h+(h=d-b)*h,i=(i=c-e)*i+(i=d-f)*i,j=e*e+f*f,p=!(i-g)+!(j-h),q=!(h-g),r=!(a*e+b*f),k=q+!(j-i)^|!(j-g)+!(h-i),t=!(a*(f-d)-b*(e-c))+!((c-a)*f-(d-b)*e)
@if %p%==2 (echo 1%r%%q%)else if %k%==2 (echo 1)else (echo 1%t%)

বাইনারি ফলাফল: 1= ঘুড়ি,10 = চতুর্ভুজ, 11= ট্র্যাপিজিয়াম, 100= সমান্তরাল, 101= রম্বস, 110= আয়তক্ষেত্র, 111= স্কোয়ার। ব্যাখ্যা: g, h, i, jবাহুর দৈর্ঘ্যের বর্গক্ষেত্র। pএকই দৈর্ঘ্য সঙ্গে বিপরীত পক্ষের জোড়া সংখ্যা qকিনা তা পরীক্ষা করে বিপরীত জোড়া আসলে হয় সমান দ্বারা মধ্যে parallelograms / আয়তক্ষেত্র এবং rhobmi / স্কোয়ার আলাদা rমধ্যে parallelograms / rhombi এবং আয়তক্ষেত্র আলাদা / একটি উল্লম্বতা চেক মাধ্যমে স্কোয়ার, kএকটি জন্য চেক সমান পার্শ্ববর্তী পাশের জোড়া এবং tসমান্তরাল পার্শ্ব চেকগুলির একটি দম্পতির মাধ্যমে ট্র্যাপিজিয়ামের জন্য চেকগুলির জন্য ঘুড়ি ।



@ তুইনাাইট বাহ, একটি ঘুড়ির জন্য পরীক্ষা করা সত্যিই বিশ্রী।
নীল

হ্যাঁ, আমি এটি করার একটি কমপ্যাক্ট
উপায়টি

@ টোয়াইনাইটে আমি আপনার কথাটি গ্রহণ করব; এপিএল আমার কাছে সম্পূর্ণ অপঠনযোগ্য।
নীল

আমি যে অংশটি ঘুড়ির জন্য যাচাই করি সেটাই 2=|-.=⍙⍺। আপনি যদি কাজের গণনা (4 পাশের দৈর্ঘ্য) এবং সংজ্ঞা
দেওয়ার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.