- PR -

アルゴリズム

投稿者投稿内容
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-03-10 20:26
引用:

unibonさんの書き込み (2004-03-10 19:06) より:

コード:
a = a + b;
b = a - b;
a = a - b;


でも良いですよね(言語は Java 系を想定)。


オ、オーバーフロー…
なお、最近のプロセッサでは四則演算(というか加減算)のほうが早かったりということもあったり無かったり…

昔々には意味のあったテクニックですね。
まあ、実際に意味があるかどうかではなく、いろいろとこねくり回して、コンピュータの動作とかいろんなアルゴリズムやテクニックがどのように機能しているかというところを理解するために有効ですね。
# その知識が役に立つというより、いろいろ試したり
# 考えたり興味を持ったりするきっかけとして。
でゅうく
大ベテラン
会議室デビュー日: 2003/11/30
投稿数: 129
投稿日時: 2004-03-10 20:53
引用:

なちゃさんの書き込み (2004-03-10 20:26) より:
引用:

unibonさんの書き込み (2004-03-10 19:06) より:

コード:
a = a + b;
b = a - b;
a = a - b;


でも良いですよね(言語は Java 系を想定)。


オ、オーバーフロー…


オーバーフローすると上手く動作しないという意味でしょうか?
オーバーフローしながらもちゃんと動作すると思うのですが..。
そう云う意味でないのでしたらご勘弁を。

引用:

なちゃさんの書き込み (2004-03-10 20:26) より:
昔々には意味のあったテクニックですね。
まあ、実際に意味があるかどうかではなく、いろいろとこねくり回して、コンピュータの動作とかいろんなアルゴリズムやテクニックがどのように機能しているかというところを理解するために有効ですね。
# その知識が役に立つというより、いろいろ試したり
# 考えたり興味を持ったりするきっかけとして。



同感です。
個人的にはパズル感覚で楽しんだりしている感じもあります。

To: wiem さん
月並みですが、楽しみながらやるって事が習得の近道ですね。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-03-10 21:14
引用:

でゅうくさんの書き込み (2004-03-10 20:53) より:
引用:

なちゃさんの書き込み (2004-03-10 20:26) より:
引用:

unibonさんの書き込み (2004-03-10 19:06) より:

コード:
a = a + b;
b = a - b;
a = a - b;


でも良いですよね(言語は Java 系を想定)。


オ、オーバーフロー…


オーバーフローすると上手く動作しないという意味でしょうか?
オーバーフローしながらもちゃんと動作すると思うのですが..。
そう云う意味でないのでしたらご勘弁を。


あ、Javaは忘れちゃってるんで勘違いかも…
Javaって四則演算でオーバーフローが起こると例外になりませんでしたっけ?
はにまる
ぬし
会議室デビュー日: 2003/12/19
投稿数: 969
お住まい・勤務地: 誤字脱字の国
投稿日時: 2004-03-11 09:10
はにまるです。

たーぞうさん、一朗さん、無月 重造さん、ゆうじゅんさん、
ご返答ありがとうございます。

 「全ビット0」と「B」の排他論理和は、「B」ですね。

 風呂場で間違った記述をした事に気付き、職場に戻りたい気分でした...
 # 只今、家のLANカードが壊れてインターネットが出来ない..

ちなみに私はこうなりました。
# ネタばらしなので御注意を!

 前提知識:
   排他論理和は、比較値の異なる列を出す演算子

 理論:
   AとBの値を入れ返る場合、同列が同値ならそのまま、
   同列が異値ならビットを反転させる。

 手順:
   AとBで値が異なる列を求める。Aにセット(1つ目の排他論理和)
   異値の列を反転してBを求める。(2つ目排他論理和)
   異値列情報とBを逆算してAを求める。(3つ目排他論理和)

ですので、unibonさんの四則演算と理論とは
異なる考え方となりました。
ん〜たった3行なのに奥が深い。(これ考えた人すごい!)

アルゴリズム問題ってトレメにあると良いですね!。
って1ヶ月で終わるかも...


[ メッセージ編集済み 編集者: はにまる 編集日時 2004-03-11 09:11 ]
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2004-03-11 09:34
unibon です。こんにちわ。

引用:

なちゃさんの書き込み (2004-03-10 20:10) より:
引用:

一郎さんの書き込み (2004-03-10 18:41) より:

初めのif文の条件 a != b、これがヒントですね。
なんでこの条件の時だけ処理しているかという・・・


であるのですが、同時にa=bの場合は正しくない結果になるということで、最初の条件は必須だったりします。


if は必須ではないですよね。処理系によっては処理時間の短縮が見込めるかもしれないので付いているだけですよね。昔の処理系は、条件分岐は比較的コストがかからなかったのと、たとえば数の桁数が少なくて8ビットだとヒットする確率は1/256と結構大きいので、if を付けるのは理にかなっていると思います(前述のようになくても良いです)。

引用:

でゅうくさんの書き込み (2004-03-10 20:53) より:
オーバーフローすると上手く動作しないという意味でしょうか?
オーバーフローしながらもちゃんと動作すると思うのですが..。


Java の整数(int 等)なら大丈夫です。
あと、float/double でもソコソコいけますが、誤差が出てきます。
#誤差が出る○○о○処理なんて...
#新たにひとつ変数を使用するコストがめちゃくちゃかかる処理系ならそれでも有効か?
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-03-11 10:07
引用:

unibonさんの書き込み (2004-03-11 09:34) より:
if は必須ではないですよね。処理系によっては処理時間の短縮が見込めるかもしれないので付いているだけですよね。
--
Java の整数(int 等)なら大丈夫です。


あああ、なんかいろんな箇所で大ボケしてたような…ごめんなさい…

スキルアップ/キャリアアップ(JOB@IT)