トップページ⇒tech
986コメント349KB

JavaScript 3

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/09/26(木) 15:34:20.26
( ^ω^) 初学者・迷子・ロリ幼女はこちらで
  _、_    
( ,_ノ` ) プロフェッショナルはECMAScript デス 4へ

【前スレ】
JavaScriptスレ2
http://toro.2ch.net/test/read.cgi/tech/1330477388/l50

【関連スレ】
ECMAScript デス 4
http://toro.2ch.net/test/read.cgi/tech/1325448978/
+ JavaScript の質問用スレッド vol.109 +
http://toro.2ch.net/test/read.cgi/hp/1379772045/
【jQuery】JavaScript ライブラリ総合質問所 vol.3
http://toro.2ch.net/test/read.cgi/hp/1369444026/
【node.js】サーバサイドjavascript 2【Rhino】
http://toro.2ch.net/test/read.cgi/tech/1358937029/
むしろjavascriptでゲーム作ろうぜ
http://toro.2ch.net/test/read.cgi/gamedev/1048171505/
Canvasについて語ろう
http://toro.2ch.net/test/read.cgi/hp/1305093769/
0153デフォルトの名無しさん2014/01/07(火) 22:31:49.36
ふっふっふ
そやつらは果たして俺の低脳さに敵うのか?
おちんちんびろーん

…びろーん
0154デフォルトの名無しさん2014/01/08(水) 00:17:48.75
>>152
一般庶民以下は、天才と低能を同じ低能と見る
01551532014/01/08(水) 00:20:34.51
同意だぜ

ごめんもう消える
01561532014/01/08(水) 21:52:15.87
と思わせておいてからの、びろーん
0157デフォルトの名無しさん2014/01/08(水) 22:35:27.50
あなたは偽物ですね
01581532014/01/11(土) 21:44:28.79
いや俺はお前だよ。もう一つの別人格。
01591532014/01/12(日) 06:27:31.65
お前は誰だ?
0160デフォルトの名無しさん2014/01/19(日) 12:48:15.65
jQueryで下記のように所持しているツリー用のデータをkeyを指定してtitleを変更する
処理を作りたいんですが、どのようにしたらいいでしょうか?
子が何階層まであるかは不明で、うまいやり方が思いつきません。

[{"key":"1", "title":"ファイル1", "children":{{"key":"12", "title":"ファイル2", "children":{...}}}},{"key":"2"...}]
0161デフォルトの名無しさん2014/01/19(日) 12:59:50.46
javascriptもjQueryも関係なくツリー構造の再帰処理だよな?

func(node)
{
for(i = 0 ; i < node.children.length ; i++)
{
func(node.children[i]);
}
doSomething(node);
}
0162デフォルトの名無しさん2014/01/19(日) 13:00:21.18
>>160
線形リストでござるか?
ループでたどるのがいんじゃないかしら。

function main() {
 var n = search(node, "1");
 if (n != null)
  n.title = "タイトル";
}

function search(node, key) {
 for (var n = node; n != null; n = n.children)
  if (n.key == key)
   return n;
 return null;
}
0163デフォルトの名無しさん2014/01/19(日) 13:02:26.69
>>160
jQueryはDOM、つまりHTML用のライブラリだから
そんな用途には使えないよ。
普通に再帰処理書けば良い。
0164デフォルトの名無しさん2014/01/19(日) 14:20:21.14
>>162
1
 12
  ...
2
 ...
こういう構造だから線形リストではないよね。
最初の階層で一文字目が決まり、次の階層で2文字目が決まると
考えると構造はトライに近いかな。

[{key:"1", title:"title1", children:[{key:"12", title:"title12", children:[]}]}, {key:"2", title:"title2", children:[]}]

構造の一貫性を考えるとデータの定義はこうじゃないかな。
0165デフォルトの名無しさん2014/01/19(日) 14:23:13.81
こういう構造ってよくあるんだけど、
ここでいうchildrenっていうキーどうしても必要だよね。
なんかね、違和感があるだよ。
childrenは不要ではないかと。

こういう構造を扱う、汎用的なライブラリが作れそうなんだが、
childrenというキーを引数に取らなきゃいけないのが
なんか気持ち悪い。

でも普通に考えたらやっぱりいるよなぁ。なんだろこの違和感。
0166デフォルトの名無しさん2014/01/19(日) 14:26:01.16
>>160
https://friendpaste.com/5mgzGGj24KWKgfQZiEY2we
0167デフォルトの名無しさん2014/01/19(日) 14:30:51.72
>>166
ちょっと冗長だし使いにくいね。
もう少し頑張ってみて。
0168デフォルトの名無しさん2014/01/19(日) 14:32:52.40
>>167
俺には無理だからもっと簡潔な書き方を君が俺に教えてください。
0169デフォルトの名無しさん2014/01/19(日) 14:46:54.04
>>165
childrenが嫌いならparentをもったらいいじゃない!!
木構造をデータベースに入れるときはparentを保存するようにしてた。
それを読み込んでchildrenに変換するのが超面倒だった思い出がありまくり。
0170デフォルトの名無しさん2014/01/19(日) 15:16:43.62
>>168

// 汎用関数
function select_node(nodes, children_key, callback) {
  var ret = [];
  function recursive(nodes) {
    if ( !nodes ) { return }
    for ( var i = 0 ; i < nodes.length; i++ ) {
      var node = nodes[i];
      if ( callback(nodes) ) { ret.push(nodes) }
      recursive(nodes[children_key]);
    }
  }
  recursive(nodes);
  return ret;
}

var nodes = [ { key:"1", title:"title1", children: [ { key:"12", title:"title12" } ] }, { key:"2", title:"title2" } ];

// nodeを選択する
var founds = select_node(nodes, 'children', function(node) {
  return node.key === "12";
});

// 見つかったものを書き換える
for(var i = 0; i < founds.length; i++) {
  founds[i].title = "rename " + founds[i].title;
}
0171デフォルトの名無しさん2014/01/19(日) 15:23:14.98
>>170
if文の改行で誤魔化してるだけだよね。
簡潔さの欠片もないし、階層がいくつか不明って言ってるんだから再帰はないよね。
話にならないな君。
0172デフォルトの名無しさん2014/01/19(日) 15:30:15.53
>>171
わかってないね。

汎用関数っていうのは、一度作ってしまえばもう二度と見る必要がないってことだよ。

つまり、ツリー構造から検索するキーが違う別の処理を書くのに、
コピペする必要はなく、これだけでよくなってる。
var founds = select_node(nodes, 'children', function(node) {
  return node.key === "1" || node.key === "2";
});

あんたの場合、長ったらしいコードに埋め込まれているからコピペするしかなくなってる。

見つかったものを書き換えるルールもこれだけで変更できる。
for(var i = 0; i < founds.length; i++) {
  founds[i].title = founds[i].title + "を変更"
}

テストコードを書くときを考えても、select_nodeのテストコードを一度書けば終わりだし、
残りの書き換えコードはあとは間違えないような些細なコードだし、
そのテストコードも簡単。配列与えて変わっているか調べれば良い。

えっと、ここまでの偉そうなことを君、言える?
0173デフォルトの名無しさん2014/01/19(日) 15:33:44.66
このコードはjQueryと同じ発想で(というかjQueryよりもずっと前からある発想だが)
ツリー上になっているDOMを$(セレクタ)で配列の形に変換するのと一緒。

select_nodeが$(セレクタ)のかわりでツリーを条件を元に見つけた配列にしている。
ツリーをそのまま扱うのは面倒なので、一旦見つかったノードの配列にしてしまう。

そうすれば後は、簡単に処理できるってわけ。
0174デフォルトの名無しさん2014/01/19(日) 15:43:39.40
>>172-173

冗長の人、スタックオーバーフローの言い訳をお忘れのようですが?
0175デフォルトの名無しさん2014/01/19(日) 15:45:20.84
冗長君は自分のコードが簡潔で他人のコードが冗長に見える病を患っておられるのです。
誰もが通る道です。やさしく見守ってあげましょう。
0176デフォルトの名無しさん2014/01/19(日) 15:48:42.69
>>174
再帰コードをディスってるの?

再帰コードであるかぎりスタックオーバーフローの
可能性は限りなく0に近いが0にはならない。

お前、再帰を一切使うなって言ってるのか?
0177デフォルトの名無しさん2014/01/19(日) 15:49:14.11
>>175
分かりました。

再帰も書けない冗長なコード書いた君ですねw
0178デフォルトの名無しさん2014/01/19(日) 15:50:30.83
圧倒的な差を見せつけると、反論ではなく
口ばっかりしかでてこないものよ。
0179デフォルトの名無しさん2014/01/19(日) 15:58:35.60
>>176
>再帰コードであるかぎりスタックオーバーフローの
>可能性は限りなく0に近いが0にはならない。

可能性が限りなく0に近いことの根拠はなんなの?
例として提示されたデータは最初の階層が1文字で
次の階層が2文字になってる。階層の深さが文字列の長さに比例すると
考えるなら限りなく0に近いなんて言えないと思うんだけど。

>>177
>再帰も書けない冗長なコード書いた君ですねw

書かなかったことと書けないことが同じことだとするなら
君はトライのコードを書けないからパフォーマンスが悪く
スタックオーバフローの可能性のある劣悪なコードを書いたってことになるけど。
0180デフォルトの名無しさん2014/01/19(日) 16:05:22.81
>>178
冗長君、君はなかなか痛い子だねw
0181デフォルトの名無しさん2014/01/19(日) 16:05:50.48
> 可能性が限りなく0に近いことの根拠はなんなの?

現在のスタックの量は、JavaScriptが動くマシンであれば
十分な量が与えられている。

かりにスタックの量が1MB、1回の関数呼び出しに
100バイト消費するとして10000階層になる。
nodeで実験したら、20930階層までできた。

反論終わり。
0182デフォルトの名無しさん2014/01/19(日) 16:10:03.22
>>181
反論じゃなくて回答ね。俺の質問に答えてくれたんだから。
文字列は何文字まで可能なのかな?
0183デフォルトの名無しさん2014/01/19(日) 16:13:18.78
>>182
文字列の長さは影響ない。
スタックを使うものじゃないのだから当然の話だが。
0184デフォルトの名無しさん2014/01/19(日) 16:14:33.68
> 例として提示されたデータは最初の階層が1文字で
> 次の階層が2文字になってる。階層の深さが文字列の長さに比例すると

メモリ使用量=スタック使用量とか思っていそうw
スタックも知らないのかな?

いや、そもそも、階層の深さが文字列な長さに比例するってのが
意味不明だな。

どういう意味?
0185デフォルトの名無しさん2014/01/19(日) 16:14:34.75
>>183
ちょっと何言ってるのかわからないからできるだけ省略しないで言ってくれると
助かるんだけど、文字列の長さは何に影響がないの?
0186デフォルトの名無しさん2014/01/19(日) 16:15:04.63
>>185
いや、そもsも、文字列の長さが
なんで階層の深さに比例するんだよw
0187デフォルトの名無しさん2014/01/19(日) 16:17:46.12
階層の深さが文字列の長さに比例って、何の文字列の話してるんだろ?
0188デフォルトの名無しさん2014/01/19(日) 16:19:59.74
>>186
質問の答えになってないよw
階段とばすと会話がかみ合わなくなるからちょっとそういうやめてもらいたい。

>>160のデータの例では最初の階層はkeyが1文字で次の階層はkeyが2文字になってる。
そのことからトライに近い構造なんだろうと思って俺はコードを示した。
01891602014/01/19(日) 16:21:30.58
>188
別に例が一階層目のキーの1、二階層のキーにたまたま12って書いただけで、
別に階層が深くなれば、キーの名前も伸びていくなんて言ってませんよ。
0190デフォルトの名無しさん2014/01/19(日) 16:22:21.97
>>188
仮にキーの長さが伸びていったとしても、
それで消費するのはヒープの量じゃん。

ヒープはスタックとは別のメモリ領域に
割り当てられるって知らないの?
01911842014/01/19(日) 16:24:41.26
やっぱりこいつはスタック使用量とメモリ使用量を
ごっちゃにしているって説であっていたようだw
0192デフォルトの名無しさん2014/01/19(日) 16:24:42.39
>>189
いまさら出てこられて後出しされても困るんでできれば黙ってて欲しいかな。
keyの文字列と階層が比例するとは言ってはいないけど、keyの文字列と階層が
比例しないとも言っていないんで、俺はそれが比例するものだという仮定のもとで
コードを書いた。
0193デフォルトの名無しさん2014/01/19(日) 16:25:31.69
ワロタwww

> 例として提示されたデータは最初の階層が1文字で
> 次の階層が2文字になってる。階層の深さが文字列の長さに比例すると
> 考えるなら限りなく0に近いなんて言えないと思うんだけど。

    ↓

> keyの文字列と階層が比例するとは言ってはいないけど、keyの文字列と階層が
0194デフォルトの名無しさん2014/01/19(日) 16:26:37.58
なんで階層の深さとキーの長さが比例するって
考えたんだwwww

そのほうが頭がおかしい。
0195デフォルトの名無しさん2014/01/19(日) 16:27:46.03
だいたい>>160で

> jQueryで下記のように所持しているツリー用のデータをkeyを指定してtitleを変更する
> 処理を作りたいんですが、どのようにしたらいいでしょうか?

って書いてあるじゃんw
0196デフォルトの名無しさん2014/01/19(日) 16:28:37.69
>>190
>>191
いや、君は間違ってる。
俺がどういうことを考えたのかという認識に関しては>>189が合ってる。
俺が考えたことはkeyの長さと階層が比例する、かつ、階層の深さは不明だから再帰で
処理するとスタックオーバフローのおそれがあるよねということ。だから君はただ間違ってる。
ヒープとかは関係ないかな。
0197デフォルトの名無しさん2014/01/19(日) 16:29:10.13
>>192
だからさ、キーの長さが階層に比例したとしても
キーの長さはスタック領域ではなく、ヒープ領域に格納されるから
キーの長さは全く無関係なの。

なんでキーの長さにこだわってるのさ?
0198デフォルトの名無しさん2014/01/19(日) 16:31:09.36
>>194
トライっていう文字列を管理するデータ構造があってそれに
近いデータ構造なのかなって考えた。頭はおかしくないと思うんだけどなあ。
まあ本人が言っても説得力ないかw

>>195
うん? ちょっと何を言っているのかよくわからない。
0199デフォルトの名無しさん2014/01/19(日) 16:31:43.98
階層の深さが不明だから、スタックが〜っていうのならわかるが、

キーの長さは一体どこから出てきたんだw
キーの長さの話をした時点で、お前が馬鹿だっていうのは
みんなにバレてるんだよ。
0200デフォルトの名無しさん2014/01/19(日) 16:33:04.17
>>198
> トライっていう文字列を管理するデータ構造があってそれに

質問を読め

>>160
> jQueryで下記のように所持しているツリー用のデータをkeyを指定してtitleを変更する

ツリー用のデータって書いてあるだろ。

お前、よく仕様をちゃんと読まないで突っ走って作っちゃって
あとからこれじゃだめだって青くなるタイプだろ?
0201デフォルトの名無しさん2014/01/19(日) 16:36:11.36
>>197
文字列の長さと階層の深さが比例すると仮定するなら
文字列の長さが30000文字だったとするなら30000階層ノードを再帰的に
たどることになるでしょう。文字列の長さがヒープに格納されるっていうのはどういう
話をしているのかわからない。

>>193
最初読んでちょっと意味がわからなかったんだけど、たぶん主格を
読み間違ってるんじゃないかと。

>階層の深さが文字列の長さに比例すると考える

これの考えるという動作の主体は俺。

>keyの文字列と階層が比例するとは言ってはいないけど

これの言ってはいないという動作の主体は質問者である>>160。

これでたぶんわかるんじゃないかと。
0202デフォルトの名無しさん2014/01/19(日) 16:36:59.45
トライは文字の種類が多くなるとメモリを大量に消費するんだが?
0203デフォルトの名無しさん2014/01/19(日) 16:38:00.21
>>201
> 文字列の長さと階層の深さが比例すると仮定するなら

だから、仕様にそんなこと書いてないのに
仕様に書いてないことに対応するためのコードかくなって
こういう奴がいると迷惑なんだよ。
使いもしない、余計なものを作りやがっって。
0204デフォルトの名無しさん2014/01/19(日) 16:40:11.59
>>201
本当にお前は頭が悪いな。

> 文字列の長さが30000文字だったとするなら30000階層ノードを再帰的に
> たどることになるでしょう。文字列の長さがヒープに格納されるっていうのはどういう

文字列の長さが30000文字じゃなくても、
30000階層のノードがあれば同じことだろ。

つまり、スタックというのは階層が増えるたびに消費するもので
文字列の長さとはまったく関係ない。

だから文字列の長さ話をする必要はないんだよ。
そこからお前が、無駄なことを考えてるってわかるわけさ。
0205デフォルトの名無しさん2014/01/19(日) 16:40:29.64
>>200
>ツリー用のデータって書いてあるだろ。

書いてあるね、トライもツリーだから言葉上の整合性はとれるのよね。

>お前、よく仕様をちゃんと読まないで突っ走って作っちゃって
>あとからこれじゃだめだって青くなるタイプだろ?

どうなんだろうね、いまは働いていないけどこの先IT業界で
働き出したらそういうことになるのかもしれないね。まあ仕事就けるか
自体わからないけどね。君はそんな俺のことを思い浮かべながら仕事に
精を出したらいいと思うよ。
0206デフォルトの名無しさん2014/01/19(日) 16:44:17.77
>>205
必要にならないものをせっせと書いてる馬鹿がいたなーって思い出せばいいのか?w

どうせならこの言葉を覚えよう

http://ja.wikipedia.org/wiki/YAGNI
"You ain't gonna need it"[1]、縮めて YAGNI とは、機能は実際に必要となるまでは追加しないのがよいとする、エクストリーム・プログラミングにおける原則である。
理由[編集]

YAGNI原則を提唱する人々は、その理由として以下を挙げている。
あとで使うだろうとの予測の元に作ったものは、実際には10%程度しか使われない。したがってそれに費やした時間の90%は無駄になる[2]。
余計な機能があると我々の仕事が遅くなり、リソースを浪費する[2]。
予期しない変更に対しては設計を単純にすることが備えとなるが、今必要とする以上の機能を追加すると設計がより複雑になってしまう[2]。
あなたの人生の時間は貴重である。あなたの能力は単にコードを書くためではなく、現実の問題に集中するために使うべきである[3]。
結局はその機能は必要ないかもしれない。もしそうなったら、あなたがその機能を実装するのに費やした時間も、他のみんながそれを読むのに費やした時間も、その機能が占めていたスペースも、すべて無駄になってしまうだろう[3]。
コードをすばやく実装するために最も良い方法は、あまりコードを書かないことである。バグを減らすために最も良い方法も、あまりコードを書かないことである[3]。
0207デフォルトの名無しさん2014/01/19(日) 16:45:13.16
>>203
俺は仕事でコード書いたわけじゃないし、質問読んで思いついたままに
コード書いただけだよ。君はたぶん嘘を言ってると思うんだよね。
君は何も迷惑していないよ。迷惑を受ける道理がない。俺の返信を迷惑だと
思うなら俺に返信してこないと思うし。俺の言ってること筋通ってない?

>>204
>文字列の長さが30000文字じゃなくても、
>30000階層のノードがあれば同じことだろ。

同じことだね。それで、いまは文字列の長さと階層が比例するっていう仮定で
話をしているんだから、文字列の長さと階層はとうぜん関係あるし、深い階層を
再帰でたどればスタックオーバーフローになるよね。
0208デフォルトの名無しさん2014/01/19(日) 16:45:43.84
トライって言葉を使いたかったおこちゃまだなw
0209デフォルトの名無しさん2014/01/19(日) 16:48:14.16
>>206
それはちょっと説得力に欠けるかと・・・

>>172
>つまり、ツリー構造から検索するキーが違う別の処理を書くのに、
>コピペする必要はなく、これだけでよくなってる。

こういうふうに言ってしまってるわけだし。読んでないと思ったでしょ?
俺読んでるんだからね。
0210デフォルトの名無しさん2014/01/19(日) 16:48:26.12
>>207
> 俺の言ってること筋通ってない?

うん。ガキだなって思うよ。

非論理的で、おおよそ数学者や技術者に向いていない性格
0211デフォルトの名無しさん2014/01/19(日) 16:49:06.13
>>208
まあそれもあるかな、コードを書きたかったっていうのが近いけど、まあどっちでもいいかw
0212デフォルトの名無しさん2014/01/19(日) 16:49:21.65
>>209

> それはちょっと説得力に欠けるかと・・・

有名な言葉 VS お前

説得力があるのはどっちだと思う?
0213デフォルトの名無しさん2014/01/19(日) 16:49:59.36
>>209

> 俺読んでるんだからね。

読んでるから何なんだよwwww
0214デフォルトの名無しさん2014/01/19(日) 16:50:37.09
>>210
どこが非論理的かな?俺もまだ君から論理的な言葉を聞いていないな。
0215デフォルトの名無しさん2014/01/19(日) 16:54:18.45
>>212
いやそうじゃなくて、伝わらんもんだな。
たとえばダウンタウンの浜田が人の頭を叩いちゃいけません
っていっても説得力感じないでしょ。浜田はそれで笑いを
とりまくってるわけだし。そういうこと。わかるだろ。わかれ。
0216デフォルトの名無しさん2014/01/19(日) 16:58:15.65
>>214
非論理的だろ。

スタックがオーバーするのは、階層の深さが問題になるのであって
文字列の長さは問題にならない。

文字列の長さが階層の深さに比例するというのは
お前が勝手に決めたルールであって、そんなルールは
ツリーという言葉には適用されない。

お前が言ってるのはキーの長さが階層の深さに比例する場合
(※注意トライツリーにこのような定義はない)であって
いまはそんな特殊なツリーの話はしていない。

故にキーの長さは階層の深さ(とスタックオーバーフロー)は無関係。

お前が言ってるのは「哺乳類は卵を生むよ。カモノハシと仮定するならね」って
言っているようなもん。

十分非論理的だ。
0217デフォルトの名無しさん2014/01/19(日) 17:01:35.11
>>215
> たとえばダウンタウンの浜田が人の頭を叩いちゃいけません
> っていっても説得力感じないでしょ。浜田はそれで笑いを

確かにお前が何を言っても説得力ないね。
はたから見てお笑い芸人みたいだからかな?w
0218デフォルトの名無しさん2014/01/19(日) 17:05:43.94
人を笑わすお笑い芸人と
単に笑われているやつを一緒にするなw
0219デフォルトの名無しさん2014/01/19(日) 17:24:50.85
>>217
それはちょっと卑怯な論法かな。
確かにと言って話を変えてるよね。

君は>>206でYAGNIを覚えようと俺に言った。
しかし、言った本人が>>172でYAGNIを破ってるじゃないか。
どういうことなんだい。っていうのが俺が言いたかったこと。
確かにって思ってくれる?

>>216
>文字列の長さが階層の深さに比例するというのは
>お前が勝手に決めたルールであって、そんなルールは
>ツリーという言葉には適用されない。

俺はデータを見て文字列の長さと階層の深さが比例すると仮定してコードを
示しただけだから、仮定はルールとは違うよね。それはそのとおり。
文字列の長さと階層の深さが比例するという仮定はツリーという言葉のみから
導いたものでもないのですべてのツリーに当てはまるというのは偽である。
これもそのとおり。なんだか疲れるなあ。なんかあれだな、ストローマン論法しかけられてるみたいw

文字列の長さが階層の深さに比例するというのはルールだなんて俺言ってないし、
そのルールがツリーという言葉に適用されるとも言ってないw

では文字列の長さが階層の深さに比例するというのはルールだといったのは誰か? 君だよね。
そのルールがツリーという言葉に適用されるといったのは誰か? これも君だよね。

こういう自作自演の論法は無益なだけだと思うんだよなあ。俺無職なんだけど、お仕事してる人は
毎日こういうことと戦っているの?おじさん働きたくない!!
0220デフォルトの名無しさん2014/01/19(日) 17:35:29.27
>>219
> しかし、言った本人が>>172でYAGNIを破ってるじゃないか。

破ってないよ。

きれいなコードを書いただけ。
0221デフォルトの名無しさん2014/01/19(日) 17:36:21.17
カモノハシ君必死だなw
0222デフォルトの名無しさん2014/01/19(日) 17:38:53.06
>>216
>「哺乳類は卵を生むよ。カモノハシと仮定するならね」

どうでもいいっちゃどうでもいいんだけど、これって筋通ってないか?

(大前提)すべてのカモノハシと呼ばれるものは卵を産むものだ。
(小前提)すべての哺乳類と呼ばれるものはカモノハシと呼ばれるものだ。
(結論)ゆえにすべての哺乳類と呼ばれるものは卵を産むものだ。

小前提が間違ってるから論証としては間違ってるけど演繹は正しいよね。
小前提が成り立たないだけで。演繹が正しいならじゅうぶん論理的だと思うよ。
0223デフォルトの名無しさん2014/01/19(日) 17:42:28.58
>>220
じゃあ俺も破ってないよ、仮定がたまたま違ってただけ。
0224デフォルトの名無しさん2014/01/19(日) 17:42:35.08
「哺乳類は卵を生むよ。哺乳類=カモノハシという仮定が正しければね」

性格には、だろ?
0225デフォルトの名無しさん2014/01/19(日) 17:43:41.35
>>223
仮定が間違っていたのだから
答えが間違っているっていうんだよ。

ツリーはトライツリーじゃないし、
トライツリーは階層が深くなるとキーが長くなると決まっていない。
0226デフォルトの名無しさん2014/01/19(日) 17:56:08.61
>>225
>仮定が間違っていたのだから
>答えが間違っているっていうんだよ。

んなアホな。俺いまのプロジェクト終わったら結婚するんだと言った人が
プロジェクトが終わらなかったとしても子どもができちゃって結婚する
かもしれないだろ。プロジェクトが終わるという仮定は間違ってても
結婚するという答えはあってるかもしれないだろ。俺はまだあきらめてない。
安西先生も言ってた、あきらめたらなんとかかんとかって。

>ツリーはトライツリーじゃないし

そうだね、質問した本人がそういう旨のこといってるからそれは間違いない。

>トライツリーは階層が深くなるとキーが長くなると決まっていない。

トライは文字ごとにノード作るんだから文字列が長ければ階層も深くなるよ。
0227デフォルトの名無しさん2014/01/19(日) 18:19:52.93
>>226
トライツリーを、理解するのに精一杯でしょw

文字列が合って、そこからトライツリーにするんじゃなくて、
トライツリーという構造が合って、その実装に
文字列キーに使ったり、文字列以外の物をキーに使ったりするわけ。

主体は文字列ではなくて、トライツリーなんだよ。
まだまだ素人、抽象化って考え方ができていない。
文字列がなければトライツリーという構造をイメージ出来ないでしょう?
0228デフォルトの名無しさん2014/01/19(日) 18:28:53.18
>>227
理解してるつもりなんだけどなあ。
>>166でコードも書いたし。

>文字列キーに使ったり、文字列以外の物をキーに使ったりするわけ。

トライで文字列以外のものも管理できるよって話ね。
文字列以外のものって数値とか?

>主体は文字列ではなくて、トライツリーなんだよ。

これはちょっと意味がわからない。何の主体?
0229デフォルトの名無しさん2014/01/19(日) 18:31:17.20
トライツリーに文字列は必須ではない。
つまり、文字列は不要って話。
0230デフォルトの名無しさん2014/01/19(日) 18:32:48.93
>>228
コードは真似すればいいだけだから誰でもかける。
重要なのは考え方。

素人は、何かを知ったらそれで全部やろうとしてしまう。
つまり、ツリーと聞いてトライツリーのしかも一実装を
前提にしてしまうのがその証拠。

考え方を理解しているのではなく、
その一例を知ってるだけ。
0231デフォルトの名無しさん2014/01/19(日) 18:33:04.27
>>229
ちょっと勝手に話を終わらせないで欲しいなwまあいいや君あまり知らなそうだし。
0232デフォルトの名無しさん2014/01/19(日) 18:34:32.25
>>230
俺は素人だと君は言ってるだけだね。
そういう話は興味ないわw悪いけど。
技術的な話が聞けるかと思って話し振ってみたんだけど、無理そうだからいいですw
0233デフォルトの名無しさん2014/01/19(日) 18:36:21.16
だいたいツリーって言っているだけなのに、
トライツリーであるという思い込みで
アルゴリズム書くのが馬鹿だよね。
トライツリーじゃなかったらどうなるのさ?

あなたのアルゴリズムは使えません。って言われるのが落ち。

仕様をきかずに突っ走って実装する
典型的な素人を脱したつもりの素人。
0234デフォルトの名無しさん2014/01/19(日) 18:40:29.86
>>232


技術的な話?
>>160の話だよね。

>>160の問題を解決する、正しくて素晴らしい実装を示しただろ。
それを理解できず的はずれな指摘で難癖つけてるのはお前

お前が出したものはトライツリーでなければ使いものにならない
アマチュアコード書いて自己満足しているみたいだけど。

そして延々と自分の都合のいい話をしているだけ。
0235デフォルトの名無しさん2014/01/19(日) 18:47:56.92
>>233
仕事でここにいるわけじゃないし。仕事もしてないし。
素人というなら俺は生粋の素人。
ここはこうなのかと詳細つめて実装するのも面倒なんで
質問文読んでこういう仮定でこういうコード書いたって提示して
あとは質問者が選ぶだろうからそれでいいかと。俺のコードを
何がなんでも使えと質問者に押し付けてるわけではないし、
押し付けることができるわけでもないし。質問者がありがとうございましたと
返信してくれたらラッキくらいの本当に謙虚な気持ちで俺はここにいるわけ。

あなたのアルゴリズムは使えませんと言われてもじゃあしょうがないとしか思わないので
まあ別にどうでもいいかなそのへんは。君はそういうの気にするほう?大変じゃない?ここ2chだよ。
おじさん君のメンタルが心配だよ。
0236デフォルトの名無しさん2014/01/19(日) 18:59:50.29
>>234
正しいことを判断するのは君じゃないよねw
素晴らしいと自分で言うのはあれだよね、あれだと思うよ。君、あれだよ。
俺はトライのような構造という仮定でコードを書いた。
君は俺とは違う仮定でコードを書いた。
仮定が違うからお互いに言い合うことが的外れなのはまあ仕方ないかと。
すこしくらいすれ違うほうが会話は弾むものだよ、ご愛嬌ってことで。
俺と話して楽しかったでしょう?いやあ俺もね思わず時間を忘れたね、ひさびさに楽しかったね。
0237デフォルトの名無しさん2014/01/19(日) 19:31:47.82
>>235
仕事かどうかじゃなくて、
プログラマかどうかね。

本物のプログラマの品質と
素人(お前の)の違い。

仕事してなくても本物のプログラマはいる。
ようはゴミコードばらまかないでくれって話。
0238デフォルトの名無しさん2014/01/19(日) 19:33:22.90
>>236
> 俺はトライのような構造という仮定でコードを書いた。
その仮定のでお前は無駄なコードを書いた。
トライではなかったのだから。

まあ、トライにしてもコードの質は低いけどねw
かろうじて動く程度のコード
メンテナンス性など一切考慮されていない。
0239デフォルトの名無しさん2014/01/19(日) 19:59:00.97
>>237
プログラマじゃないしプログラマのようにコード書けると
思ってるわけでもないんで、なんで君はそう何度も俺に素人だと
言ってくるのかちょっとよくわからない。恋心とは違うでしょ?
違うと思うわ。俺はねそのへん冷静に考えられるだけの頭は持ってるつもりだから
君が俺に思いをよせてるとは当然思っていないよ、でも君がもしよ、もし女で、
ある程度容姿が優れていて俺のことを少なからず思っているというのなら
俺はメールアドレスを交換する用意があることをお伝えせざるを得ない。

>ようはゴミコードばらまかないでくれって話。

い や だ。

>>238
無駄というならこうやって2chをながめていることさえも
君にとっては無駄なことだろう。俺は生活の一部だけどねw
俺にとって無駄なことだからやるべきじゃないと俺のことを
心配してくれているとしたらほんとうにありがとうございます。

>メンテナンス性など一切考慮されていない。

そうだね。2chに投稿したコードを今後ともメンテナンスしていこうなどという
気概はまったく持っていない。俺もITのお仕事に就いたらそういうふうに考えるように
なるのかなあ。それって幸せなことなんだろうか。いまの俺には皆目わからない。
0240デフォルトの名無しさん2014/01/19(日) 20:13:41.75
>>239
うぜぇw
0241デフォルトの名無しさん2014/01/19(日) 20:13:48.82
単純な話、そういう気概で議論したい人は(多分)2chにはいないと思うから
好きなだけ一人相撲するといいよ
0242デフォルトの名無しさん2014/01/19(日) 20:16:09.66
なに恋とかわけわからんこと言い出してるんだろw
こいつ脳みそおかしいw
02431532014/01/19(日) 21:33:49.95
誰が誰だかわからんが
>>167の偉そうな感じの悪さは頂点クラス

どうせこいつのせいだろ荒れたの
0244デフォルトの名無しさん2014/01/19(日) 21:38:36.54
末尾再起はES6からコールスタックを消費しないで良いよう定められたから心配しなくて大丈夫よ。
http://wiki.ecmascript.org/doku.php?id=harmony:proper_tail_calls
0245デフォルトの名無しさん2014/01/19(日) 21:40:48.97
じゃあせっかくなので話題変える意味で
nodeとそのchildrenが与えられるとして、末尾再帰を使ってツリー全体を処理するコードってどう書く?
0246デフォルトの名無しさん2014/01/19(日) 21:45:16.57
すでにJavaScriptの話じゃ無くなってるな
0247デフォルトの名無しさん2014/01/19(日) 22:08:38.50
>>243
その言葉にカチンときたの?w
0248デフォルトの名無しさん2014/01/19(日) 22:09:37.36
>>245
再帰はスタックオーバーフローするから
使うべきじゃない。トライって知ってるか?
0249デフォルトの名無しさん2014/01/19(日) 22:11:43.48
>>245
これを末尾再帰にすればいいだけ?
ノードを処理するコード自体は
コールバックに分離されているからいいよね?

// 汎用関数
function select_node(nodes, children_key, callback) {
  var ret = [];
  function recursive(nodes) {
    if ( !nodes ) { return }
    for ( var i = 0 ; i < nodes.length; i++ ) {
      var node = nodes[i];
      if ( callback(nodes) ) { ret.push(nodes) }
      recursive(nodes[children_key]);
    }
  }
  recursive(nodes);
  return ret;
}
0250デフォルトの名無しさん2014/01/19(日) 22:37:31.45
>>247
カモメ、カモメ、カチン、カチン。
かを抜いて言ってみな、おじさんからのアドバイスだ。
もう寝るからね。
0251デフォルトの名無しさん2014/01/20(月) 00:12:20.77
幼女か?幼女が来たのか?
0252デフォルトの名無しさん2014/01/20(月) 00:13:37.11
>>250
カモメ、カモメ、カチン、カチン。
かを抜いて言ってみな、おじさんからのアドバイスだ。
■ このスレッドは過去ログ倉庫に格納されています