スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Rubyについて
標準の関数は、中で勝手に型変換してくれないので、
.to_i か
.to_s で型変換して渡す。


配列とか、たくさん扱うものは、
Enumerable
を継承している。
スポンサーサイト
こういうのって邪道かなぁ
use strict;
use Data::Dumper;

my $c;
$c = {
      'age'       => 14,
      'next_year' => sub {
                           print '1年たちました', "\n";
                           $c->{'age'}++;
                         }
     };


print Dumper \$c;
$c->{'next_year'}->();
$c->{'next_year'}->();
print Dumper \$c;


結果:
$VAR1 = \{
            'next_year' => sub { "DUMMY" },
            'age' => 14
          };
1年たちました
1年たちました
$VAR1 = \{
            'next_year' => sub { "DUMMY" },
            'age' => 16
          };


blessを使え?
じゃんけんの問題がやっとわかった
http://bingobingobingo.blog49.fc2.com/blog-entry-354.html

やっと、理屈がわかった。


必要な知識:

知識その1
3x + 0, 3x + 1, 3x + 2
という3つのパターンを考えた場合。
x が邪魔である。
xを消すには mod を使う。
正確にいうと mod 3を使う。
さすれば、それぞれ、
0, 1, 2
に集約できる(ループがなくなった)。



知識その2
じゃんけんの「勝ち」、「負け」、「ひきわけ」というのは、
3x + 0, 3x + 1, 3x + 2
という関係のどれかに、ぴったりあてはまる(というかそういう風にルールがなっている)。


知識その3
modの概念とは、
X = 3x + 2なら、 X mod 3 = 2
であるということ。

このmod、どういう風に使うかというと、
9という数字が、
3x + 0, 3x + 1, 3x + 2
のどのパターンにあてはまるか知りたいとして、それを求められる。

9 mod 3 = 0 なので、
9 は、 3x + 0のパターンにあてはまる。

10 mod 3 = 1 なので、
10は、 3x + 1のパターンにあてはまる。

こういう風に使う。



知識その4
じゃんけんの勝敗を1次元の線分とみなして、
COMと人との差をもとめる。この差は距離とも考えられる。
距離は -1 というようにもなりうる。

sample.jpg





まとめ(どうやって、じゃんけんプログラムを作るか)


勝敗およびひきわけは、
3x + 0, 3x + 1, 3x + 2
のどれかにあてはまる。

どれにあてはまるかは、
COM と 人 との距離でわかる。

0 1 2 0 1 2 0 1 2
と書けばわかる。

でもって、その距離が、
3x + 0, 3x + 1, 3x + 2
のどれにあてはまるかは、
mod 3に聞けば教えてくれる。
距離 mod 3 = 2 なら、 3x + 2 のパターンであるということだ。
エラーというものは このようになっていると考えるとわかりやすいと思う
しかし、どう実装するかが悩ましい。

※ 継承図ではなく、単なる分類わけです。 erro.jpg

$err_msgで持ち回すと ifが増える。
throwにするとファイルが増える。
どちらもメンテが大変だ。
ブログ検索

プロフィール

ビンゴ中西
Perlが好きである。
プログラミング言語のほとんどは独学。独学の過程で多くのプログラム仲間にも色々教わりました。

FC2カウンター

カレンダー

08 | 2017/09 | 10
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

ブロとも申請フォーム

この人とブロともになる

| ホーム | 次のページ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。