文系PGと理系PG

このエントリーをはてなブックマークに追加
875仕様書無しさん:03/06/13 05:29
>>873
他人をバカにする暇があったら自分の人生を充実させ解けと言うことだ。
876仕様書無しさん:03/06/13 06:52
効き目が右目だと理系。
効き目が左目だと文系。

877仕様書無しさん:03/06/13 08:23
どうでもいいことだが、
>とりあえず、高校生の時点での大学進学を決める際に
>「理系は文系よりも所得が低い」という現実を知らされてない人は
>アンテナ低すぎる人種だね。

「いいのか?所得すくないぞ!」としゃべる教育者と、
それを鵜呑みにするような人間はイラネ(`〆´)/
878仕様書無しさん:03/06/13 10:32
愚痴が多いのが文系。
独り言が多いのが理系。
879仕様書無しさん:03/06/13 11:39
>873 ひょっとしてあのアンケート鵜呑みにしてるのか?

もうちょっと現実見たほうがいいぞ・・・
回答率30%の調査を信じる神経が理解できないのだが。
880仕様書無しさん:03/06/14 14:13
>>879
推測統計学って知ってる?
881文系中退:03/06/17 09:35
遅レスだが >>489 の問題について、いい方法を思いついた。

>素人がプログラムを組むと、よく間違えて無限ループになったりする。
>それを実行するのは時間の無駄だから、実行前にチェックしたい。
>そこで、任意のプログラムを入力として読み込んで、それが正常に終了するか
>終了しないで無限ループになるかどうかを判定するプログラムを作ってくれ。

(1) まず、プログラムを1ステップだけ実行し、実行後のプログラムの状態(メ
  モリの一部とレジスタの内容)をどこかに退避しておく(この保存領域をAと
  する)。

(2) そこからさらにプログラムを2ステップ実行し、実行後のプログラムの状
  態を別の場所(領域B)に退避する。

(3) 領域Aに保存しておいたプログラムの状態をシステムに復帰させ、1ステッ
  プ実行する。そして、実行後の状態を領域Aに退避する。

(4) 領域Bに保存しておいたプログラムの状態をシステムに復帰させ、2ステッ
  プ実行する。そして、実行後の状態を領域Bに退避する。

(5) 領域Aの内容と領域Bの内容を比較する。もし一致していれば無限ループに
  入っている。そうでなければ(3)に戻って繰り返す。

>>520 は理系なのか?
882名無し@沢村:03/06/17 09:41
文系と理系がどっちが偉いかはいちがいには言えないよ。
というのは、文系にもザコもいるしザコでないやつもいる、理系にもザコもいるしザコでないやつもいるからだ。
まあ、文系と理系とザコの比率はどっちが多いというのは、あるかもしれないけどね…
だから問題は、文系か理系かではなく、ザコかザコではないかということだよ。
883文系中退:03/06/17 09:48
>>882
あんたザコでないつもりか?

>>881 のすばらしい方法についてなんか言え。
884仕様書無しさん:03/06/17 09:51
>>489
ループに入る条件って言えば限られてる。
無限自己再帰があるとかfor文などの条件ミス
この点を考慮してかんがえる。
forの条件が内部で変更されているか調べチェックする
再帰については大雑把にスタックが4までなどなど
885仕様書無しさん:03/06/17 10:02
>>881

while(i<1){
 i--;
}
886文系中退:03/06/17 10:16
>>884
いったい何の話をしている? お客さんは、「任意のプログラムを入力と
して読み込んで、それが正常に終了するか終了しないで無限ループにな
るかどうかを判定するプログラム」がほしいと言ってるんだよ。

>>885
何が言いたいのかわからない。それは無限ループじゃないだろ。
887名無し@沢村:03/06/17 10:22
>>881の方法は、ほとんどのやつの考えがそこにいきつくと思われる方法だね。
つまりとりたてて語るに値しない、初歩的な方法だよ。
888文系中退:03/06/17 10:50
>>887
つまり >>520 をはじめとして >>489 の問題に答えた連中はみな無能だと。
889仕様書無しさん:03/06/17 10:54
>>886
全ての無限ループは、1ステップで無限ループに突入するの?
890仕様書無しさん:03/06/17 10:55
スーパープログラマ>>(超えられない壁)>>優秀なプログラマ>>>>(理解力と適正と理系的思考の壁)
>>>>SE>=普通のプログラマ>>>融通の利かないSE>>打ち込むだけのプログラマ(か?)


スーパープログラマ 変態または神
優秀なプログラマ 上流工程も当たり前のようにできるが、実装が好きな変人
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
SE 要領良いの人
普通のプログラマ 普通の人

JR山崎駅より上は、外交能力があるかどうかはまた別のはなし。ある人もいる。
891仕様書無しさん:03/06/17 10:58
注1)JR山崎駅より下が文系というわけでもない。
注2)支払われる対価はこの順番の限りではない。(w
892文系中退:03/06/17 11:05
>>889
>全ての無限ループは、1ステップで無限ループに突入するの?

もちろん、そんなことはない。>>881 の方法はあるステップ数を実
行した後で無限ループの入り口に入った場合でも、きちんとその無
限ループを検出する。
893仕様書無しさん:03/06/17 11:11
>>892
んじゃ、無限ループが無い場合、このプログラムはどうやって終了するの?
894名無し@沢村:03/06/17 11:18
>>893
ぎゃははははははぁぁぁぁぁああああああああああああーーーーーーーーーーっ!!!!!
895_:03/06/17 11:24
896仕様書無しさん:03/06/17 11:25
>>892
そんなメンドクサイ事しなくても、プログラム中でカウンタが変化する
部分だけ抜き出して実行し、カウンタの履歴を取っておき、過去一度で
も同じ値があった場合には無限ループだと判断すればいいんじゃないの?

あっでも↓のような場合は駄目か。
Do While i <> 1
  i = Int(Rnd * 5)
Loop
897文系中退:03/06/17 11:25
>>893
普通に終了する。(4)のところで、ずつ2ステップ実行しているが、ここの実行のときに終了
状態に達し、無限ループが存在しなかったことが確定する。

>>894
うるさい。
898仕様書無しさん:03/06/17 12:27
NP問題が難しいのは、組み合わせが多様で複雑だから。
>>881みたいな虱潰しは、(a,b,c)みたいに少ない場合は良いが
比べる要素の数が増えた場合組み合わせが膨大になる。
(この場合、n^2のオーダで増える)
こういう問題は解くのが難しいんじゃなくて
、解くのに時間がかかるのが問題。
やってみないとわからないってのも問題。

ttp://wwwacty.phys.sci.osaka-u.ac.jp/~tokita/Papers/SouzouJissen.html
こんなとこでも読んでみて。
ついでにヒマナラこんなクイズでも

3と4と7と8を一回ずつ使って四則演算だけで答が10になる式を作りなさい。
例えば、1234なら、(3×4−2)×1=10など。
899仕様書無しさん:03/06/18 04:43
余りの出る割り算OKじゃないと無理だよね?

それはいいとして、高校数学ってもっと現代的な数学で再解釈できるものなの?
高校数学なんてちょろっとやって、問題の解き方が体に馴染んだら
直ぐにでもそれを捨てるべきっていう人が数学板には多いんだけど。
900文系中退:03/06/18 11:07
>>898

> >>881みたいな虱潰しは、(a,b,c)みたいに少ない場合は良いが
> 比べる要素の数が増えた場合組み合わせが膨大になる。
>(この場合、n^2のオーダで増える)

いいかげんなことを言うな。どこが「虱潰し」だ。>>881のオーダーはO(n)。

>>899
>余りの出る割り算OKじゃないと無理だよね?

無理じゃない。
901仕様書無しさん:03/06/18 11:09
902_:03/06/18 11:17
903仕様書無しさん:03/06/18 17:36
>>900 3,4,7,8は
7/4=1
っていうの認めないと無理だろ
904文系中退:03/06/18 18:17
>>903
根拠は?
905仕様書無しさん:03/06/18 22:22
http://www.ghokushin.com/Advice/t&cm/159/tokaisaga02.html
んで、
7/4 = 1
を認めないで10にする方法は?
906仕様書無しさん:03/06/18 22:24
うむ、すまん。。
誤読だった。。
907イカ1/3:03/06/19 01:32
>>881の処理を特定の環境下で行った場合の速度をものっすごい大雑把な概算で考えてみたよ。
面倒だから1GBは1,000,000,000byteだし、環境による細かい変化の一切も無視する。
それに、数学なんて忘れちゃったからあちこち書き方がおかしいかも知れない。

ってぎゃー、会社から書き込めなかったから
相当後ろの方に来てしまった。
まあいいや。書き込もう。
908イカ2/3:03/06/19 01:32
まず、ソフトウェアが一回の実行で常に1MBのメモリーを使用していると仮定する。
また、1GHzのCPUを使用し、実行開始からCPU時間丁度1秒後に無限ループに突入すると仮定する。
>881の方法だと、領域Aに保存するプロセスが
無限ループ入り口まで実行されるために1Gステップ使い、
保存書き込みで1G回、復帰読み込みで1G回、復帰書き込みで1G回メモリにアクセスする。
(G回ってあからさまにおかしいけど面倒だからこう書くよ)
領域Bに保存するプロセスが、領域Aに保存するプロセスと平行して
実行されるために2Gステップを使う。二倍進むことになってるからね。
そして、保存書き込みで1G回、復帰読み込みで1G回、復帰書き込みで1G回メモリにアクセスする。
そうすると、全部で3Gステップ実行し、メモリーに6G回アクセスすることになる。
1GHzのCPUで3Gステップの実行は3秒だね。これは少なすぎるので無視していい。
それじゃあメモリーの方はどうかと言うと、
6G回の全てにおいて、1MBのメモリーを読むか書くかしないといけないんだよ!
つまり、
6,000,000,000(step/sec) * 1,000,000(byte) = 6,000,000,000,000,000 byte = 6(PB/sec)
(6PBって6ペタバイトでいいのかな)
909イカ3/3:03/06/19 01:33
あわわ、1秒の計算に11時間もかかるよ!
実際には相当キャッシュが効くだろうし、
計算の大雑把っぷり、適当っぷりは相当なもんだから、
実測は相当違うものになるかも知れない。
それでも、結構な時間がかかりそうだね。
誰かやってみてくれないかな。実装からして面倒くさそー。
910イカ3/3修正:03/06/19 01:35
これらを全てメインメモリー上で行ったとしよう。
http://www.inter-craft.co.jp/NK_BP/new_page_5.htm
適当に検索して出てきたこのページにある最速のメモリーを使用したとして、
5.4GB/secの速度が出るね。
6(PB/sec) / 5.4(GB/sec) ≒ 1,000,000(sec) ≒ 11(hour)

あわわ、1秒の計算に11時間もかかるよ!
実際には相当キャッシュが効くだろうし、
計算の大雑把っぷり、適当っぷりは相当なもんだから、
実測は相当違うものになるかも知れない。
それでも、結構な時間はかかりそうだね。
誰か実測してくれないかな。


ぎっぎぎぎいっっぎぎぎぎぎいぎぎ
911仕様書無しさん:03/06/19 05:29
>>898
8の3乗根(=2)x7ー4 とかだめかなぁ?
912文系中退:03/06/19 09:35
3478 の他に、1167, 1189, 3357, 4679, 5679 も答えが一つしかない。
913仕様書無しさん:03/06/19 12:29
(3 - (7 / 4)) * 8 かな。でもこれだけ?
http://www.sampou.org/haskell/smallpuzzle/ticket/
これみてHaskellの勉強しようと決めた。
914仕様書無しさん:03/06/19 12:52
1167 (6 / (1 + 1)) + 7
1189 ((1 + 1) * 9) - 8
あとは分らん。有理数が入るとめんどくさくなる。
915仕様書無しさん:03/06/19 13:06
3357 ((3 * 3) - 7) * 5 だな。
残り二つは誰かお願い。
916文系中退:03/06/19 13:14
#include <iostream>
#include <string>

class N {
std::string exp;
int n, d;
N(int nn, int dd, const std::string& e) : n(nn), d(dd), exp(e) {}
public:
N(int nn) : n(nn), d(1) { exp += nn + '0'; }
std::string get_exp() const { return exp; }
N operator+(const N& r) const { return N(n*r.d + d*r.n, d*r.d, '('+exp+'+'+r.exp+')'); }
N operator-(const N& r) const { return N(n*r.d - d*r.n, d*r.d, '('+exp+'-'+r.exp+')'); }
N operator*(const N& r) const { return N(n*r.n, d*r.d, '('+exp+'*'+r.exp+')'); }
N operator/(const N& r) const { return N(n*r.d, d*r.n, '('+exp+'/'+r.exp+')'); }
int operator==(int r) const {return d && n == d * r; }
};
917文系中退:03/06/19 13:14
void f(N a[], int n=4)
{
if (n == 1 && a[0] == 10) std::cout << a[0].get_exp().substr(1, 11) << '\n';
for (int i = 0; i < n; i++) {
N x = a[i];
a[i] = a[n-1];
for (int j = i; j < n-1; j++) {
N y = a[j];
a[j] = x + y; f(a, n-1);
a[j] = x - y; f(a, n-1);
a[j] = y - x; f(a, n-1);
a[j] = x * y; f(a, n-1);
a[j] = x / y; f(a, n-1);
a[j] = y / x; f(a, n-1);
a[j] = y;
}
a[i] = x;
}
}
int main() {
N a[4] = {1, 1, 6, 7}; f(a);
N b[4] = {1, 1, 8, 9}; f(b);
N c[4] = {3, 3, 5, 7}; f(c);
N d[4] = {4, 6, 7, 9}; f(d);
N e[4] = {5, 6, 7, 9}; f(e);
}
918仕様書無しさん:03/06/19 13:38
おぉ、なかなかやるねw
919仕様書無しさん:03/07/09 01:21
ほす
920山崎 渉:03/07/15 11:38

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
921仕様書無しさん:03/07/26 12:23
プログラマーが語るviとemacs Part3
http://pc.2ch.net/test/read.cgi/prog/1059185370/
922仕様書無しさん:03/07/28 18:42
>>887-888
「『停止問題』と無限ループ判定問題は異なる」ことを
無限ループ判定問題のアルゴリズムを実際に構成することで示す

という点でまあそれなりに意味があると思うのですが.
#昔数学板の基礎論スレで,二つの違いに気づかずにネタをふって
#すぐに指摘されたことを思い出しました.
#言われてみればすぐわかるんですが(^^;
923山崎 渉:03/08/02 02:36
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ