Aizu Online Judge(AOJ)が提供している「プログラミング入門」(ITP1)の3_C問題をC++とPython で解いてみました。
ITP1 のトピック3では、繰り返し処理を学びます。「条件に従って処理を繰り返し、反復処理を行う構造文を学習します。」とあります。この学習コースを通じて、Python に慣れていきたいと考えています。
問題(3_C: Swapping Two Numbers)
問題はリンク先をご覧ください。
AOJ ITP1 3_C問題:Swapping Two Numbers
繰り返し、条件判断を行うプログラムを学びます。
解答案
C++ プログラム例(ITP1 3_C)
この問題では、読み込む整数 x と y がどちらも 0 になれば無限ループから抜けます。
#include <iostream>
using namespace std;
int main()
{
int x, y;
while (1) {
cin >> x >> y;
if ((x == 0)&&(y == 0)) {
break;
}
if (x >= y) {
cout << y << " " << x << endl;
} else {
cout << x << " " << y << endl;
}
}
return 0;
}
すでに紹介した 3_B(Print Test Cases)問題と同じ構造のコードとなります。
Python プログラム例(ITP1 3_C)
Python でも同じ書き方ができます。
while True:
x, y = map(int, input().split())
if x == 0 and y == 0:
break
if x > y:
x, y = y, x
print(x, y)
上記プログラムは、すべて AOJ で「AC(Accepted=正解)」と判定されます。
最後に
C++ では、条件分岐により分けて出力しました。一方、Python は、変数の swap が楽に書けるため、swap してから出力しました。そのプログラム言語により自然な書き方を紹介できればと思います。
引き続き、ITP1 の問題を紹介していきます。