Pythonで指定された3つの角度から正の面積を持つ三角形が作成できるか判定する方法
プログラミングの練習問題としてよく登場するのが、「与えられた3つの角度を使って、正の面積を持つ三角形を作成できるかどうかを判定する」という課題です。本記事では、Pythonを使ってこの問題を解く方法を、条件と実装例を交えながらわかりやすく解説します。
三角形が成立するための条件
3つの角度から三角形が成立するためには、以下の条件を満たす必要があります。
- 3つの角度がすべて0より大きい(0ではない)
- 3つの角度の合計がちょうど180度である
- 任意の2つの角度の和が、残りの1つの角度以上である
例えば、入力が a = 40、b = 120、c = 20 の場合、40 + 120 + 20 = 180 となるため、条件を満たし、出力は True になります。
解法のアプローチ
この問題は、次の手順に従って解くことができます。
- a、b、c がすべて0ではなく、かつ (a + b + c) が180と等しい場合:
- (a + b) >= c、または (b + c) >= a、または (a + c) >= b を満たせば True を返す
- そうでなければ False を返す
- 上記の条件を満たさない場合は False を返す
実装例
それでは、実際のコードを見てみましょう。
def solve(a, b, c):
if a != 0 and b != 0 and c != 0 and (a + b + c) == 180:
if (a + b) >= c or (b + c) >= a or (a + c) >= b:
return True
else:
return False
else:
return False
a = 40
b = 120
c = 20
print(solve(a, b, c))
入力
40, 120, 20
出力
True
まとめ
このアルゴリズムでは、まず「すべての角度が0より大きいこと」と「角度の合計が180度であること」を確認し、さらに「どの2つの角度の和も残りの角度以上になること」をチェックすることで、正の面積を持つ三角形が作成できるかどうかを判定しています。処理は定数時間(O(1))で完了するため、非常に効率的な解法です。幾何学の基本的な性質と条件分岐を組み合わせるだけで実装できるので、Pythonの初学者にとっても良い練習問題と言えるでしょう。
-
指定された文字列が母音回文であるかどうかを確認するPythonプログラム
はじめに この記事では、「与えられた文字列から子音をすべて取り除いたとき、残った母音だけの文字列が回文になっているかどうかを判定する」という問題を、Pythonプログラムで解く方法を解説します。 問題の概要 問題文:母音と子音の両方を含む文字列が与えられます。まず文字列からすべての子音を取り除き、その結果得られた文字列が回文(前から読んでも後ろから読んでも同じ並びになる文字列)であるかどうかを確認してください。 解決のアプローチ この問題は、以下の手順で解くことができます。 元の文字列を先頭から順に走査し、母音(a・e・i・o・u)だけを取り出して新しい文字列を作成します。 母音が1つも
-
Pythonで文字列がパングラムかどうかを判定するプログラムの作成方法
本記事では、与えられた文字列がパングラムであるかどうかを判定するPythonプログラムの解法とアプローチについて詳しく解説します。 問題の概要 文字列入力が与えられたとき、その文字列がパングラムであるかどうかを判定するPythonプログラムを作成します。 パングラムとは? パングラムとは、英語のアルファベット26文字すべてを少なくとも1回ずつ含む文章や一連の単語のことです。有名な例として「The quick brown fox jumps over the lazy dog」があります。 解法のアプローチ この問題は、以下の手順で解くことができます。 アルファベット全体を表す基準となる文字列