高卒認定試験を受けるのにかかったお金

2017年の11月11日と12日に高卒認定試験を受けました。

ここで、その経験に基づき、今後、受ける人のために、かかったコストを書いていきます。

  •  資料請求の後払い:215円+ゆうちょ銀行ATM手数料80円
  • 受験料:収入印紙をゆうちょ銀行で購入。7科目以上:8500円
  • 証明写真代:800円(証明写真機によって価格は違うと思います)
  • 住民票又は戸籍沙本(本籍地記載のあるもの):300円(市役所へ行って取得しました)
  • 願書を提出する際の簡易書留郵便の手数料:430円(ゆうちょ銀行で支払いました)

計10295円です。

 

ついでに自分の勉強法も

次に、勉強方法として、過去問が文部科学省のサイトに掲載されているので、選択科目分の過去問を最初は解けなくてもいいし、解けなかったら飛ばして、終わってから、答え合わせをして、分からなかった部分、適当に書いた部分、間違った部分の答えや解説をメモして、それを繰り返し暗記します。ここは、改善してもらいたいですが、文部科学省のサイト内にある高卒認定試験の過去問の答えは基本的に番号だけで、解説は書いてないのて、自分でネットで調べたり、参考書を買ってチェックする必要があります。

 

自分の場合は、苦手意識のある国語のみ参考書を買って、書いてある内容を繰り返し読んだり、図書館にある古文や漢文の本を借りて、暗記しました。ただ、試験を受けて振り返ってみると、そこまで役に立った印象はありませんでした。これは、本番の問題と自分との相性なので、受けてみるまでは分かりません。それまではとにかく、不安だったので、繰り返し読んで暗記しました。結果として、自己採点した結果、受けた科目の中で一番得点が高かったです。科目に対する苦手意識も、繰り返し暗記してできるようになると薄れてきます。

 

 それ以外の科目は、過去問を解いてできなかった部分の丸暗記で十分対処できました。

 

受験当日

・1日目は前日に、数時間しか寝られず、試験中に寝てしまうかと思い、昼食を一切取らずに、自動販売機で缶コーヒーを買って、飲んで、何とかやり過ごす。その日の夜はぐっすりと眠れ、2日目は楽に受験できた。

マークシートの記入に間違いがないか3回ほどチェックさせられる。

・問題を全部解き終わっても、油断せずに、間違いがないか3回ほどチェックする。得意な科目ほど早く解き終わって、余裕をかまし、問題チェックしないで、後から、間違いに気づくというパターンがあるので注意。逆に、苦手な科目は試験時間ギリギリになって、解き終わるので、見返す余裕がないのも注意。

 

 

 

 

 

 

Pythonで二次元配列の任意の要素の周辺の値を足し合わせる

開発環境はWindows7 Professional(32bit) + ActivePython 2.7.10.12(Python 2.7.10)

二次元配列の任意の要素の周辺の値を足し合わせるプログラムを作ります。周辺の要素数は四隅であれば3つ、四隅以外の隅であれば5つ、それ以外は8つになります。
正しい値を入力すれば合計値を返し、間違った値を入力すれば、-1を返します。

任意の要素の左上から時計回りに足し合わせていきます。任意の要素が隅にあって、要素が存在しない場合は、足し合わせない仕組みになっています。

二次元配列arrとして、len(arr)とすると、列の数を指し、len(arr[0])だと、行の数を指します。

今回は5×5の二次元配列でやってみます。

# -*- coding:utf-8 -*-

# 配列のある箇所の周辺(最大8つ)の値を足した値を返す
def around(arr,y,x):
	result = 0
	arr = arr
	x = x
	y = y

	if check(arr,y,x) == -1:
		return -1

	if check(arr,y-1,x-1) != -1:
		result += arr[y-1][x-1]

	y = y-1
	x = x-1

	if check(arr,y,x+1) != -1:
		result += arr[y][x+1]

	x = x+1
	
	if check(arr,y,x+1) != -1:
		result += arr[y][x+1]
	
	x = x+1
	
	if check(arr,y+1,x) != -1:
		result += arr[y+1][x]
	
	y = y+1
	
	if check(arr,y+1,x) != -1:
		result += arr[y+1][x]
	y = y+1

	if check(arr,y,x-1) != -1:
		result += arr[y][x-1]
	x = x-1

	if check(arr,y,x-1) != -1:
		result += arr[y][x-1]

	x = x-1

	if check(arr,y-1,x) != -1:
		result += arr[y-1][x]

	return result

# 今チェックしている要素が『0』以上『配列の要素-1』の範囲内かチェックする
def check(arr,y,x):
	arr = arr
	x = x
	y = y

	if x < 0 or x > len(arr[0]) - 1 or y < 0 or y > len(arr) -1:
		return -1
	else:
		return 0


arr = [[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]]
print(around(arr,3,3))# 32

Perlで2つの配列で重複する値 or しない値を抜き出す

開発環境はWindows 7 Professional(32bit)+Perl 5.24.0。

use strict;
use warnings;

my @arr1 = qw(30 20 60 100 90 10 40 80);
my @arr2 = qw(20 50 110 1200 40 100);

my %count;
my @unique;
$count{$_}++ for(@arr1,@arr2);

# (20,40,100) - 重複する値を抜き出す
@unique = grep{ $count{$_} >= 2 } keys %count;

# (30,60,90,10,80) - 重複しない値を抜き出す
@unique = grep{ $count{$_} < 2 } keys %count;

for文のこういう使い方は初めて見た。

■参考リンク
Perlで2つの配列の要素から重複を排除する、重複した要素だけ抽出する - Qiita
grep関数 - 特定の条件を満たす配列要素のみ取得 - PerlならサンプルコードPerl入門

JavaScriptのグローバル変数を関数の引数にする方法

JavaScriptグローバル変数を関数の引数として渡したときに思ったような挙動にならないのでおかしいな?と思って調べたら、JavaScriptにおいて関数の引数は、ローカル変数になるようだ。調べたところ、対処法が書いてあったのでメモ。

var global = 0;

function test(a,b){
	window[a] = b;
}

test("global",5); // 変数名は文字列としてクォーテーションで囲って渡すことに注意。

結局、グローバル変数はwindow連想配列のキーになるのか?

■参考リンク
JavaScriptの引数について。関数の引数にグローバル変数を代入すると、ローカ... - Yahoo!知恵袋

Perlで配列の要素をシャッフルする

開発環境はWindows 7 Professional(32bit)+Perl 5.24.0。

配列の要素をシャッフルした配列を返すプログラムを作ります。
今回は、各要素をトランプに見立てて、53個用意して、それをシャッフルするプログラムにします。

use strict;
use warnings;

my @trump = (
"h1","h2","h3","h4","h5","h6","h7","h8","h9","h10","h11","h12","h13",
"d1","d2","d3","d4","d5","d6","d7","d8","d9","d10","d11","d12","d13",
"c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","c12","c13",
"s1","s2","s3","s4","s5","s6","s7","s8","s9","s10","s11","s12","s13",
"joker"
);

my @trump2 = ();
my $t = 0;

for(my $i = 0; $i < @trump; $i++){

	# 乱数で要素数を出す
	$t = int(rand(@trump));

	# 指定の要素を新しい配列に追加する
	push(@trump2,$trump[$t]);

	# 要素を抜き出した要素を削除する
	splice(@trump,$t,1);
}

my $count = 1;
# シャッフルした結果を表示
for(@trump2){
	print $count.":".$_."\n";
	$count++;
}

Pythonの再帰関数で階乗を求めるプログラムを作る

開発環境はWindows7 Professional(32bit) + ActivePython 2.7.10.12(Python 2.7.10)

昔、読んでいたC言語の入門の本に書いてあった再帰関数で階乗を求めるプログラムの構造を思い出しながら、Pythonで書いてみました。

def kaijyo(n):
	if n ==0 or n == 1:
		return 1
	else:
		return n * kaijyo(n-1)

print(kaijyo(9)) # 362880

Pythonでマージソートを書く

開発環境はWindows7 Professional(32bit) + ActivePython 2.7.10.12(Python 2.7.10)


マージソートとは、ソートの一種で、数列を分割して、それぞれをソートして、最後に、分割されたファイルを比較しながら、1つに統合していくアルゴリズムです。

arr = [5,9,2,4,8,6,1,3,7]
ar1 = arr[0::2]
ar2 = arr[1::2]


# メソッドを作ったが、作らずに、list.sortメソッドで良い。
def st(ar1):

	dummy = None
	while True:

		flug = True

		for i in range(len(ar1)):
			if i < len(ar1)-1 and ar1[i] > ar1[i+1]:
				dummy = ar1[i+1]
				ar1[i+1] = ar1[i]
				ar1[i] = dummy
				flug = False

		if flug == True:
			break

	return ar1

def merge(ar1,ar2):
	ar1 = st(ar1) # ar1.sort()でも良い
	ar2 = st(ar2) # ar2.sort()でも良い
	ar3 = []

	num = len(ar1)

	if len(ar1) >= len(ar2):
		num = len(ar2)

	while True:
		
		if len(ar1) == 0 and len(ar2) == 0:
			break

		elif len(ar1) == 0 or len(ar2) == 0:
			if len(ar1) == 0:
				ar3.append(ar2[0])
				del ar2[0]
			else:
				ar3.append(ar1[0])
				del ar1[0]
		else:

			if ar1[0] < ar2[0]:
				ar3.append(ar1[0])
				del ar1[0]
			else:
				ar3.append(ar2[0])
				del ar2[0]

	return ar3

print(merge(ar1,ar2)) # [1, 2, 3, 4, 5, 6, 7, 8, 9]