2009-01-01から1年間の記事一覧

配列から重複要素を取り除いてソート

# 配列から重複要素を取り除いてソート sub getUniqueArray{ my @items = @_; my %seen; my @uniq; foreach my $item (@items){ push(@uniq, $item) unless $seen{$item}++; } return sort @uniq; }

自動販売機クラス

自動販売機のクラス。ある程度の機能を付け足しただけなので、ちょい汚い。 Articleを配列化、add追加するようにする System.out.printlnもMainはもたないようにする public class Article{ private String name; private int price; public Article(String …

2つの長方形の衝突判定

public class Rectangle{ private double x;//位置x private double y;//位置y private double w;//幅x private double h;//高さx public Rectangle(){ System.out.println("Rectangle create default"); this.x = 10; this.y = 10; this.w = 70; this.h = 8…

2つの長方形の衝突判定 java.awt.Rectangle

Javaには便利なパッケージがあって、java.awt.Rectangleをインポートしてしまえば、これだけのコードで済んでしまう罠。 import java.awt.Rectangle; public class RecTest{ public static void main(String args[]){ Rectangle r1 = new Rectangle(10,20,30…

テキストファイルの入出力

FileReaderTest.java import java.io.*; class FileReaderTest { public static void main(String[] args) { try { FileReader in = new FileReader("file.txt"); int ch; while ((ch = in.read()) != -1) { System.out.print((char)ch); } in.close(); } ca…

Java5.0以降の配列

ArrayList import java.util.*; class ListTest { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add("AAA"); list.add("BBB"); list.add("CCC"); for (int i = 0; i < list.size(); i++) { System.out.println(list.ge…

配列の和集合と積集合

和集合 2つの配列、どちらかに入っている要素 (重複除く) 積集合 2つの配列、どちらにも存在する要素 my @a = (1,3,6,7,9,); my @b = (1,4,5,6,8,9,); my %union, %isect; foreach my $e (@a, @b){ $union{$e}++ && $isect{$e}++; } my @union = keys %union…

アルゴリズム課題

飛田先生からの挑戦状「特定条件の文字列を抜き取ってカンマ(,)と改行で区切ったテキストファイルを出力するソース」 - けろけろ修行記 飛田先生の挑戦状「カンマ(,)区切りの文字列を文字列長の短い順に並びなおすソース」 - けろけろ修行記 飛田先生の挑戦…

Javaの基本文法

識別子 プログラムで使用する変数名を「識別子」と呼ぶ。 名前付けのルールは次のとおり。 1文字目は英文字でなけれなばらない 2文字目以降は英文字でも数字でも構わない あんだーすこあ(_),やドル記号($)は英字とみなされる 予約語をそのままの形で使っては…

ウィンドウアプリケーションの窓を表示する

Win.java import java.awt.*; import java.awt.event.*; public class Win extends Frame{ static final int CANVAS_SIZE = 256; public static void main(String args[]){ new Win(); } public Win() { super("Hello"); pack(); setResizable(false); pack(…

文字を出力

Test1.java public class Test1{ public static void main(String[] args){ System.out.println("Hello."); } } javacでコンパイラ。 Test1.classを生成。 javac Test1.java java Test1

JAVA JDK 1.6 インストール

Java SE Development Kithttp://java.sun.com/javase/ja/6/download.html

リファレンス

ハッシュと似ていますが、括弧が()でなく{}、そして呼び出し方も違うことに注意。 my $ref = { name => 'ルーミア', skill => '闇を操る程度の能力', voice => 'そーなのかー', }; print $ref->{voice};

サブルーチンに引数を渡す

サブルーチンは引数をすべて無名配列として受け取るため、引数の受け渡しにリファレンスを利用する 配列のみを引数に渡す sub set_array{ my @array = @_; } my @array = ( '神奈子', '諏訪子', '早苗', ); set_array(@array); 配列とスカラー変数を引数に渡…

サブルーチン

サブルーチンの定義 「sub サブルーチン名{ } 」で定義する。 sub arithmetic{ # 引数を受け取る my ($num, $tiruno) = @_; # 演算を行う my $a = $num * $tiruno; # 戻り値を返す return $a; } my $a = arithmetic(3, 9); print $a; # 27

正規表現

正規表現を使ったパターンマッチング my $drag = '欠陥収縮剤塩酸テトラヒドロゾリン'; if ( $drag =~ /塩酸/){ print '配合'; } # 変数$dragが「塩酸」という文字列を含んでいる ^ 文字列の先頭 if ( $drag =~ /^欠陥収縮剤/){ print '配合'; } # 変数$drag…

標準入出力

open関数を使うとき、引数は3要素で渡す。 また、ファイルハンドル名は変数として宣言することで、重複を避ける安全なコードとなる ファイル読み込み open(my $fh, '<', 'in.txt'); my @lines = <$fh>; close($fh); ファイル書き込み open(my $fh, '>', 'out…

連想配列

連想配列(ハッシュ)の操作 連想配列の宣言 my %hash = ( name => '博麗霊夢', skill => '空を飛ぶ程度の能力', job => '脇巫女', ); ハッシュの要素呼び出し print $hash{skill}; # 空を飛ぶ程度の能力 ハッシュの要素変更 $hash{job} = '鬼巫女'; ハッシュ…

配列

配列の宣言 my @characters = ( '霊夢', '魔理沙', '妖夢', ); 配列の要素を得る (0から数える) print $characters[1]; # 魔理沙 配列の末尾の添え字 (全要素数-1)を得る print $#characters; # 2 配列の末尾から要素を削除する pop @characters; # (妖夢が@…

use Template

Template::Toolkitを使う 標準モジュールではないので、CPANからインストールする。 cpan install Templatetmpl.pl use strict; use warnings; use Template; my $tt = Template->new( WRAPPER => 'wrap.tt', ); my $tmpl_file = 'test.tt'; my $output; my …

use warnings

サブルーチン内の引数全てに初期値を与えていないのでエラーが起きる use warnings sub calc { my ( $a, $b ) = @_; return $a * $b; } print calc (2);

use strict

use strict; my $str = "ゆかりんファンタジア"; print $str; my や our で変数を宣言していないため、エラーがおきる use strict; $str = "ゆかりんファンタジア"; print $str;

標準入力をファイルに書き込む

文字を入力して100文字までテキストファイルに書き込むソース【ファイル操作とファイルハンドル】 - けろけろ修行記添削した。 use strict; use warnings; my $file = 'log.txt'; my $max = 100; print "以後の入力を$max文字を越えるまで$fileに記載しま…

use constant

定数を定義する。 use constant { REIMU => 'れいむ', YUKARI => 'ゆかり', }; print YUKARI. 'x'. REIMU. 'はジャスティス'; # ゆかりxれいむはジャスティス Readonly 定数を使うならば、use constant よりも use Readonly のほうが便利でしたね。失礼。 ".…

文字列

文字列の結合 ピリオド(.)を用いて、文字列を結合する my $touhou = "東方"; my $str = $touhou. "紅魔郷"; 文字列を囲むクォーテーションの役割の違い my $marisa = "魔理沙"; my $str; ダブルクォーテーションで囲むと、 変数をダブルクォーテーションの中…

条件分岐

if elsif else $tiruno = 9; if ($tiruno == 9){ print 'バカ'; } elsif ($tiruno > 9){ print 'バカじゃないもん!'; } else { print '算数教室はじまるよ〜'; } 数値の比較 $n = 123; if ($n == 123){ print 'ひふみひふみ'; } 文字列の比較 my $str = 'ス…

モダンfor文のポイント

オールド for文 for (@array){ print $_; } モダン for文 for my $line (@lines){ print line; } ポイントは 配列名を複数形にする。 for内の添え字は無名変数でなく、配列名の単数形でローカル変数宣言する。 メリットとして、パフォーマンスが上がり、for…

繰り返し

for for (my $i=0; $i<5;$i++){ print 'どんつー'; } # どんつーどんつーどんつーどんつーどんつー foreach foreach my $line (@lines){ print $line. "\n"; } while while(条件式) 条件式の値が真の間、繰り返される my $n = 0; while ($n < 9){ print $n. …

数値

my $n = 2; my $tiruno = 9; my $pi = 3.14;

csvを読み込んで辞書のようなハッシュにする

key val1 val2 val3 country 日本 アメリカ ドイツ star 地球 月 火星 土星のようなcsvから以下のように変換して情報を取得する my %hash = get_csv_hash('file.csv'); print $hash{country}[0] #日本 print $hash{star}[2] #火星 # cvs ->hash_array # 1列…