初級問題集

Beginner's class problems collection

目次 Table of contents

ファイルの読み書きと行列計算 File Read/write and matrix calculation

概要 Abstract
行列をファイルから読み込んで,演算を行うプログラムを作る.
Create program to read matrix from file and perform calculating.

行列がテキストファイルに

In the text file, assume that matrix is

file1.dat:

3x3
1, 3,  4
5, 4,  4
2, 4,  4

file2.dat:

3x2
5.5, 10
3,   4
4,   20

のように保存されているとする.ただし,

saved as above. But,

  • ファイルの1行目 (3x3 など) は行列の大きさを表している. The first line of file (e.g. 3x3) indicates matrix size.
  • 2行目以降はデータ.数字の間は,コンマ `,' やスペース ` ' でわける. After the second line is data. Between number, separate it by comma ',' and space ' '.

このとき,file{1,2}.dat からファイルを読み取って行列間の演算を行い,出力するプログラムを書け.

At this time, write program to read file from file{1,2}.dat and perform operation between matrix to output.

結果例:

Result example:

A*B=
 30.5  102
 55.5  146
   39  116

ルール:

Rule:

  • 必ず行列クラスを作ること. Create matrix class definitely.
  • 行列クラスに,「ファイルから読み込む」メンバ関数を作ること. In matrix class, create member function to "read from file".
  • ファイル内の空白に対して頑健にすること(空白の数が任意でも読み込めるようにする). Make it strong for blank in file (Read it even if the number of blank is at random).

ノート:

Note:

  • 演算の種類の指定方法と言ったインターフェイスは自由に決めてよい. You may decide interface freely such as specifying method of operation kind.
  • 「演算子のオーバーロード」などにも挑戦してみよう. Let's challenge such as "Overload of operator".

AAテンプレートマッチング AA template matching summary

概要 Abstract
アスキー文字で描かれた画像の中から,与えられたテンプレートの位置を探すプログラムを作成する.
Create program to search for position of given template from image drawn by ASCII character.
参考 Reference

アスキー文字で描かれた画像が,例えば

For example, assume that image which was drawn by ASCII character

picture1.txt :

------------------------------------------
---***-------------------------**---------
--**---------------------------*--*-------
---*---------*******-----------*--*-------
--------*****-------*****------*--**------
-------**---------------**-----*---*------
--------*****-------*****-----------------
-------------*******----------------------
------------------------------------------
-----------------------***----------------
--------*---------*****-------------------
--------***------**-----------------------
------------------***---------------------
------------------------------------------
------------------------------------------

のように与えられ,テンプレートが

is given as above. And template is

template1.txt :

      *******
 *****-------*****
**---------------**
 *****-------*****
      *******

と与えられたとする.このとき,

is given as above. At this time,

./a.out picture1.txt template1.txt

と実行すると,テンプレートが画像のどこに位置するかを返すプログラムを作れ.例えば上の例だと,

When execute as above, create program to return where image template is located. for example, for examples above,

テンプレート画像が (7, 3) に見つかりました!
Template image was found in (7, 3)!

のような結果を出力させよ.

output result as above.

一つもテンプレート画像が見つからない場合は

If no template image is not found,

テンプレート画像は見つかりませんでした.
Template image was not found.

などと出力させること.

Output such as above.

ルール:

Rule:

  • 「アスキー画像クラス」を作ること. Create "ASCII image class".
  • 任意のアスキー画像とテンプレートに対して位置を探索出来るプログラムを作ること. Create program that can search for position for any ASCII image and template.
    • 文字を'*'と'-'に限定してはならない. Must not limit character as '*' and '-'.
    • アスキー画像を長方形に限定してはならない(行ごとに文字数が違うかもしれない). Must not limit ASCII image as rectangle (Text length may be different by every line).

ノート:

Note:

  • アルゴリズムを考えてからプログラムを作ろう. Let's create program after thinking about algorithm.

オプション:

Option:

  • 複数箇所でマッチングする場合には,複数の結果を書き出せるようにしよう. When make matching at plural points, let it write plural results.

シリアライズ Serialization

概要 Abstract
格子空間上の点データを生成し,ベクタにシリアライズして格納する.
Generate point data on grid space, and perform serialization to vector to store it.

下図のような格子上のすべての点群(赤色の点群)のx,y座標を,1次元のベクタ (vector<double>) に格納するプログラムを作れ.

Create program to store, x,y coordinate of all point groups on grid such as the chart below (red point group), in one-dimensional vector (vector<double>).

grid.png

さらに,格納したベクタから (u,v) 番目の要素(横方向にu番目,縦方向にv番目という意味)を取得するインターフェイスを作成せよ.ただし,(u,v) はユーザが入力した整数値とする.

Furthermore, create interface to acquire (u,v)th element (meaning u th transversely, v th in lengthwise direction) from vector which you stored. But, assume that (u,v) is Integer value that user input.

ルール: Rule:

  • 格子は横・縦の分割数 size1,size2 (int 型), 横・縦の最小値・最大値 x1min,x1max,x2min,x2max (double 型) で定義されるものとする. Grid is defined as, number of partitions of width, vertical size1,size2 (int type), min and max of width, vertical x1min,x1max,x2min,x2max (double type).
  • これらの値は各自で設定してよいが,後で自在に変更できるようにせよ. You may set these values by each person, but allow to change it freely later.
  • 格納する順番は任意に決めてよいが,少なくとも同じ点の x,y 座標は隣り合うように格納せよ. You may decide order to store voluntarily, but at least store it to be next to each other for x,y coordinate of the same point.

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-08-30 (木) 07:17:05 (75d)