مسیرها
/
Python
Python
/
تمرین‌ها
/
سه‌گانه‌ی فیثاغورسی
سه‌گانه‌ی فیثاغورسی

سه‌گانه‌ی فیثاغورسی

آسان

مقدمه

شما حل‌کننده‌ی مسئله‌ای کارکشته‌اید و به توانایی‌تان در رویارویی با چالش‌برانگیزترین معماهای ریاضی مشهور هستید. یک شب، نامه‌ای فوری از مخترعی به اسم Triangle Tinkerer دریافت می‌کنید که روی پروژه‌ای نوآورانه کار می‌کند. در نامه آمده است:

ریاضیدان عزیز،

به کمکتان نیاز دارم. دستگاهی طراحی می‌کنم که بر ویژگی‌های منحصربه‌فرد سه‌گانه‌های فیثاغورسی متکی است، یعنی مجموعه‌هایی از سه عدد صحیح که در معادله‌ی a² + b² = c² صدق می‌کنند. این دستگاه ناوبری را دگرگون خواهد کرد، اما برای اینکه کار کند باید آن را با همه‌ی سه‌گانه‌های ممکن برنامه‌ریزی کنم، سه‌گانه‌هایی که مجموع a، b و c در آن‌ها برابر عدد مشخصی به اسم N است. محاسبه‌ی این سه‌گانه‌ها به‌صورت دستی سال‌ها طول می‌کشد، اما شنیده‌ام که شما قطعاً از عهده‌ی این کار برمی‌آیید.

وقت بسیار تنگ است. آینده‌ی اختراع من، و شاید حتی آینده‌ی نوآوری ریاضی، به توانایی شما در حل این مسئله بستگی دارد.

اهمیت این کار به شما انگیزه می‌دهد و برای یافتن همه‌ی سه‌گانه‌های فیثاغورسی که این شرط را برآورده می‌کنند، دست به کار می‌شوید. کار شما می‌تواند پیامدهای گسترده‌ای داشته باشد و امکان‌های تازه‌ای در علم و مهندسی بگشاید. آیا می‌توانید این چالش را بپذیرید و تاریخ‌ساز شوید؟

دستورالعمل‌ها

«سه‌گانه‌ی فیثاغورسی» مجموعه‌ای از سه عدد طبیعی است، {a, b, c}، که در آن:

a² + b² = c²

و به‌گونه‌ای که:

a < b < c

برای مثال:

3² + 4² = 5².

اگر یک عدد صحیح ورودی N داده شود، همه‌ی سه‌گانه‌های فیثاغورسی را بیابید که برایشان a + b + c = N برقرار است.

مثلاً با N = ۱۰۰۰، دقیقاً یک سه‌گانه‌ی فیثاغورسی وجود دارد که برای آن a + b + c = 1000 است: {200, 375, 425}.

Note

توصیف بالا به مجموعه‌های ریاضی اشاره می‌کند، اما همچنین می‌گوید که یک سه‌گانه‌ی فیثاغورسی {a, b, c} باید طوری مرتب شده باشد که a < b < c (به ترتیب صعودی).

همین باعث می‌شود که نوع set پایتون برای این تمرین مناسب نباشد، چون ذاتاً بدون ترتیب است. در عوض باید یک list از listها برگردانید (مثلاً [[a, b, c]]). خود سه‌گانه‌ها را می‌توانید به هر ترتیبی که می‌خواهید تولید کنید، چون ترتیب list دربرگیرنده در تست‌ها نادیده گرفته می‌شود.

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Python Exercism

آماده‌اید سه‌گانه‌ی فیثاغورسی را شروع کنید؟

در Exercism ثبت‌نام کنید تا Python را همراه با 17 مفهوم146 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.