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

文字クラスに関して

文字クラスとして、[1-3]とか[w-y]とかできるかな? 今まで文字クラスとして[0-9]や[0-9a-zA-Z_]などを学んだけど、[3-5]とか[w-y]とか行けるのかな?やってみた。 my @filename = ('hoge_3.log', 'hoge_4.log', 'hoge_5.log', 'hoge_6.log'); foreach (@fil…

第7章「正規表現の基本」

ある部分文字列を検索(または置換など)したい場合に、探したい文字列をパターンによって指定できる。その指定するパターンのことを正規表現と呼ぶ。 Perlでは、正規表現は /hoge/ のように、スラッシュで囲んで表現する。で、このパターンを演算子=~と組み…

第6章「繰り返し」つづき

foreach, while, forという3種類の繰り返しの構文について見てきた。これ以外にも繰り返しの構文(じゃないものも含む)があるらしい。 do until文、do while文(p163) 他の言語にもdo while文は見たことがあるね。条件判断をループの最後で行うパターン。…

第6章「繰り返し」

これまでforeachはやってきたけど、その他にもいくつか繰り返しのための構文がある。 foreach リストに対して次のような形で使える。 foreach (リスト) { # 要素へのアクセスは $_ でできる } じつはforと全く同じ(後述)。 while おなじみwhileループもあ…

ハッシュをリストとして扱ってみる

前回のエントリで、ハッシュを作るときの書式 my %hash = ('foo'=>42, 'bar'=>23, 'baz'=>3.14); が、リストを代入しているように見えて仕方が無い、みたいな話しをしたけど、それの続きっぽい感じで。じゃあ、%hashをリストとしてforeachにぶち込んでみると…

第5章「ハッシュ」

辞書の実装として用いられるハッシュをプリミティブなデータ構造として持っているのね。ミ・д・ミ ホッシュホッシュ ハッシュの作り方 my %map = ( 'foo' => 42, 'bar' => 23, 'baz' => 3.14, ); 値をカンマで区切るとリストになるという事は始めの方で知ったけど、 ('…

第4章の章末問題

面白そうだったのでやってみた。http://ideone.com/lhMlf 以下の文をspliceを使って書いてください。 push(@array, $item); splice(@array, $#array+1, 0, $item); $item = pop(@array); $item = splice(@array, $#array, 1); リストをスカラーコンテキスト…

sort関数について

数値で昇順にしたい場合、比較のためのコードの断片を書いたけど、それに関して。 このコードブロックは、引数なのか? 引数なら普通カンマで区切るよねー、ということで書いてみた。http://ideone.com/ndKeH my @nums = (31, 41, 59, 26, 53, 58, 9, 93); m…

第4章「配列とリスト」つづき

「配列とリストに関する関数」節ということで、しばらくは配列とリストで使える関数の紹介。 配列の要素を連結して文字列化 joinでできますよ、と。C#ではSystem.String.Joinメソッドがあるね。 my @score = (64, 90, 75); print join(',', @score), "\n"; …

二重引用符内の変数の展開に関して

二重引用符内に変数名があったら、展開してくれることはつい最近勉強した。たとえば、 my $n = 42; print "$n\n"; っていうコードがあったとき、ちゃんと42と改行文字を表示してくれるってことは、 現在の環境から識別子 $n を検索し、42という数値を見つけ…

配列の変な場所に要素を追加したらどうなるのかな?

PHPではインデックスに欠番ができるけど、Perlではどうなるか実験。 use strict; use warnings; my @nums = (1, 2, 3,); # 添字が9の場所に代入すると、添字の欠番ができる? $nums[9] = 10; my $len = @nums; print "length of array: $len\n"; foreach (@n…

第4章「配列とリスト」

ここら辺からペースダウンしよう。 スクリプト実行の際に スクリプトを写経して実行するときに重要そうなことが第1章に書いてあったのでまとめとく。 自分に厳しく ソースコードの先頭に use strict; use warnings; をつけると、処理系によるチェックが厳し…

第3章「条件判断」

第3章「条件判断」。これもサラッと。 ifの基本 中カッコを省略できない 他の多くの言語と同じく、if文、if-else文、if-elsif-else文が使える。else ifとかelseifじゃないので注意。 論理和演算にor演算子または||演算子が使える(働きは同じだけど、優先順…

第2章「数と文字列」

第1章は割愛。第2章はサラッと。 数と変数 変数名の先頭には$がつく printを使うと、標準出力に出力できる 変数を初めて使うときにはmyをつける =演算子を使うと、右辺を左辺に代入できる 変数名は何を表しているか分かりやすいように決めよう #から行末ま…

Perl入門開始

2012年2月某日に id:sakurako_s さんが「Yamaguchi.pm準備会」なるイベントをやるそうで、それに参加するためにPerlに入門してみようかな、みたいな。 電脳書房さんで以下の書籍を約1,600円で購入。綺麗でほとんど新品だったよ。お安い!新版Perl言語プログ…

外部イテレータもできた!

C#

前回 のForEachDetailを、外部イテレータからも利用できるためには、外部イテレータが「現在の値」を取得できるようにしないとダメ。2分木のイテレータに関して再開 - チキン煮込みチーズミックス4辛 からは内部イテレータだけに話を絞っていたので、ForEach…

内部イテレータできた!

C#

ForEachDetailLeftとForEachDetailRightを単純に組み合わせてできるわけじゃなかった。だけどヒントにはなった気がする。やり方は違うけど、結果的に 木構造の外部イテレータ - チキン煮込みチーズミックス4辛 となんか似てる。何がって言われてもよくわから…

再左の葉から根へ

C#

できたっぽい?こんな感じ。 /// <summary>左と自分を処理する</summary> static void ForEachDetailLeft( TreeNode<T> root, Action<T> action, JobHolder holder) { // nodeを根として、最小のノードまで進む TreeNode<T> n = root; while (n._left != null) n = n._left; // そこから</t></t></t>…

問題を単純にしてみる

C#

難しい原因は、 左の部分木を走査 自分の値を走査 右の部分木を走査 という感じで、再帰する部分が2ヶ所あることだと思う。ということで、まずは、 左の子を無視して、自分→右の子と走査する という感じで、ものすごく簡単にしてみた。するとこうなる。 /// <summary></summary>…

配列との違いは何だろう

C#

木構造の内部イテレータでつまづいている話の続き。木構造で考える前に、配列で考えていたので、それに戻ってみる。配列をラップしたMyArrayクラスのソースコードは以下の通り。 class MyArray<T> : IIterableIn<T> { T[] _ar; public MyArray(T[] ar) { _ar = ar;</t></t>…

2分木のイテレータに関して再開

C#

数か月放置していたこのテーマ。またこの数日考え始めたけど、まだ解決してない。yield returnで2分木の外部イテレータ作れたから、考える意味なくなったけど。いや!意味がないはずはない。どこかで役に立つはず!NextJobSetterやNextJobAccessorは、次に行…

yield returnで2分木の外部イテレータ

C#

yield return - チキン煮込みチーズミックス4辛 で、できないとか言ってたけどできるやんけ。なんでこんな事思いつかんのじゃ...。 // NodeクラスのGetEnumeratorだけ抜粋 public IEnumerator<int> GetEnumerator() { if (_left != null) { foreach (int n in _le</int>…

仕事やめた

次の仕事も決まらないままに、仕事を辞めてしまいました!僕の人生、どうなることやら。とりあえず、少し貯金があるので、すぐ生活に困るわけじゃないけど、健康保険とか年金とかどうにかしないといけない。どこに行けばいいのかな。市役所かな。てか無職の…

久しぶりにVBA書いたよ

VBA

Option Explicit ' 文字長を指定して、乱数で適当な文字列を作成します Function get_unique_name(length As Integer) As String Dim offset As Integer Dim base As Integer base = Asc("a") Dim result As String result = "" ' 指定された文字列分だけ連…

はてなブログ始めたよ!

http://yagiey.hatenablog.jp これからどんどん機能強化されていくんだろうね。どうなるか期待! 始めたい方は、はてなにログインしてここのコメント欄にその旨書いてもらえれば招待しますよー(気づいたら)。

オブジェクトのクローンの作製

PHP

クローンを作るための__cloneってメソッドがあるらしいけど、あんまり調べずに、C#の感覚で使ってたら、全然違ってハマりましたよ、という話。ましたっていうか現在進行形だけど。 ってやると__cloneなるメソッドが呼ばれるらしいけど、呼ばれる__cloneメソ…

連想配列のキーには、整数か文字列しか使えない

PHP

解決した。 key は、整数 または 文字列です。 あるキーが、整数の標準的な表現形式である場合、 そのように解釈されます (つまり、"8" は 8 として解釈されます。一方、 "08" は "08" として解釈されます)。 key に浮動小数点数値を指定すると、 その値は i…

PHPの連想配列に実数のキーを使ってみた

PHPの連想配列に対し、1未満の実数値をキーとしていくつか要素を追加してみたけど、どういうわけか要素が1個から増えない。キーが勝手にintになってしまい、最後の要素だけが残ってるのかな?

とうとう言っちゃった

「今年度限りで仕事辞めさせてください」 僕にはプログラミングくらいしか取り柄が無いけど、エンジニアとして中途採用されるほど実績もスキルも無いしなぁ。 とりあえず今年度で次の仕事見つけないと。 どうなることやら。

When I Look Into Your Eyes

From "Good Acoustics", by Firehouse オリジナルもいいけど、アコースティックバージョンも捨てがたい。