AIZU ONLINE JUDGE

AOJ ITP1 1_C(Rectangle)を解く

AOJ_ITP1_1_C

Aizu Online Judge(AOJ)が提供している「プログラミング入門」(ITP1)の1_C問題をC++とPython で解いてみました。

ITP1 のトピック1では、「プログラミングの入門として、基本構造、変数、入出力、計算式を学習します。」とあります。わたしは、C と C++ には、ある程度習熟しています。この学習コースを通じて、Python に慣れていきたいと考えています。

問題(1_C: Rectangle)

問題はリンク先をご覧ください。

AOJ ITP1 1_C問題:Rectangle

整数を二つ入力して計算結果を出力する問題です。

解答案

C++ プログラム例(ITP1 1_C)

#include <iostream>

using namespace std;

int main()
{
	int a, b;

	cin >> a >> b;
	cout << a * b << " " << 2 *(a + b) << endl;

	return 0;
}

整数を二つ読み込み、面積、周の長さを出力します。

Python プログラム例(ITP1 1_C)

ITP1 1_B で解いたように、input() で1行読み込むことができます。

ここで、a = 1 と b = 2 とすると、文字列、”1 2″ を読み込みます。この結果に対して、split() で、空白で区切ったリストを返します。つまり内部的には、input().split() は、[“1”, “2”] を返します。このリストに対して、整数化して、変数 a と b に代入するための書き方が2つあります。

Python では、以下のように多重代入が使えます。

a, b = 1, 2

map() を使う

リストのそれぞれの要素に対して、整数化するための int() を適用するために map() を使います。こちらの記法の方が見る機会が多い気がします。

a, b = map(int, input().split())
print(a * b, 2 * (a + b))

内包記法を使う

Python には、内包記法と呼ばれる書き方があります。以下のコードをみてください。入力以外でも、内包記法を使って書くと、すっきり書ける場合があるようです。

a, b = [int(elem) for elem in input().split()]
print(a * b, 2 * (a + b))

最後に

このブログでは、変数の入力で map を使っています。まだ Python に、それほど習熟しているわけではないため、将来は方針を変えるかもしれません。

簡単なプログラムでも、解説を書くために学ぶことができました。

引き続き、ITP1 の問題を紹介していきます。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA