このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
データ構造,アルゴリズム,デザインパターン総合スレ 2
http://echo.2ch.net/test/read.cgi/tech/1362301811/
【関連スレ】
3Dアルゴリズム全般
http://toro.2ch.net/test/read.cgi/tech/1164171086/
<集大成>アルゴリズム大辞典
http://toro.2ch.net/test/read.cgi/tech/1086272325/
アルゴリズム総合スレ in ム板
http://toro.2ch.net/test/read.cgi/tech/1217773415/
アルゴリズムとデータ構造 - Kaneko Lab.
ttp://www.kkaneko.com/adp/algo/index.html
アルゴリズムとデータ構造 - ソースコード探険隊
ttp://www.codereading.com/algo_and_ds/
各種アルゴリズムの C++ による実装 - Spaghetti Source
ttp://www.prefield.com/algorithm/
アルゴリズムとデータ構造 - プログラミングスレまとめ in VIP
ttp://vipprog.net/wiki/algo_and_data_const.html
データ構造,アルゴリズム,デザインパターン総合スレ 3©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2016/06/19(日) 14:47:29.63ID:5KvSKdL/
713デフォルトの名無しさん
2017/11/22(水) 10:42:20.23ID:milfaijK あ、分かりました。
virtual topにはつなぐがvirtual bottomにはつながないUF
virtual topにもvirtual bottomにもつなぐUF
を使えばいいんですね。
virtual topにはつなぐがvirtual bottomにはつながないUF
virtual topにもvirtual bottomにもつなぐUF
を使えばいいんですね。
714デフォルトの名無しさん
2017/11/22(水) 10:51:20.09ID:milfaijK 成績が100点満点中97点になりました。
715デフォルトの名無しさん
2017/11/22(水) 10:52:40.54ID:milfaijK 成績が100点満点中98点になりました。
716デフォルトの名無しさん
2017/11/22(水) 11:48:25.03ID:vqOaIl/E 今日のNG ID:milfaijK
717デフォルトの名無しさん
2017/11/22(水) 15:34:31.81ID:milfaijK718デフォルトの名無しさん
2017/11/22(水) 15:35:42.67ID:milfaijK 快挙ですね。
719デフォルトの名無しさん
2017/11/23(木) 12:04:48.38ID:Le5wB72/ デザインパターンで規定されるいろいろなクラスがあるけど
これらのクラスはそれぞれレイヤー化アーキテクチャのどこに
属すのか知りたい。
たとえばStateパターンがあった場合に、
・<<interface>>State
・ConcreteState x n
・Context
があったとき、
これらは、クラスを配置する場所的に
・プレゼンテーション層(UI層)
・App層
・サービス層
・ビジネスロジック層
・パーシステンス層
のどこの層として配置すればいいのか
これらのクラスはそれぞれレイヤー化アーキテクチャのどこに
属すのか知りたい。
たとえばStateパターンがあった場合に、
・<<interface>>State
・ConcreteState x n
・Context
があったとき、
これらは、クラスを配置する場所的に
・プレゼンテーション層(UI層)
・App層
・サービス層
・ビジネスロジック層
・パーシステンス層
のどこの層として配置すればいいのか
720デフォルトの名無しさん
2017/11/23(木) 12:18:16.35ID:DeXlBicR > デザインパターンで規定されるいろいろなクラスがあるけど
> これらのクラスはそれぞれレイヤー化アーキテクチャのどこに
> 属すのか知りたい。
デザパタはレイヤ化アーキテクチャに属すものだという考え方が謎なんだけど
> これらのクラスはそれぞれレイヤー化アーキテクチャのどこに
> 属すのか知りたい。
デザパタはレイヤ化アーキテクチャに属すものだという考え方が謎なんだけど
721デフォルトの名無しさん
2017/11/23(木) 12:18:26.01ID:fJlhhdGs722デフォルトの名無しさん
2017/11/23(木) 13:43:59.34ID:veVPgurQ723デフォルトの名無しさん
2017/11/25(土) 15:28:17.03ID:unmm6CwQ java用語発表されてもなー
724デフォルトの名無しさん
2017/11/27(月) 07:16:56.92ID:DtvpiAcr デザパタを適用したクラスがどのレイヤにあっても構わんのじゃ無いか
定石があってもフレームワークごと違うから説明無理だと思う
定石があってもフレームワークごと違うから説明無理だと思う
725デフォルトの名無しさん
2017/11/28(火) 09:02:37.93ID:VA+yl+li 1以上1000以下の整数からなる集合の部分集合で、
その任意の異なる2元 x, y をとったとき、
「x は y を割り切らず、 y も x を割り切らない」
という性質をもつものを考える。
そのような部分集合の中で元の数が最大になるような
集合の元の数を求めよ。
その任意の異なる2元 x, y をとったとき、
「x は y を割り切らず、 y も x を割り切らない」
という性質をもつものを考える。
そのような部分集合の中で元の数が最大になるような
集合の元の数を求めよ。
726デフォルトの名無しさん
2017/11/28(火) 09:32:48.27ID:EZT/19IX めっちゃ勘だが、334から666と、667以上の奇数でどうだろうか
727デフォルトの名無しさん
2017/11/28(火) 11:34:19.17ID:VA+yl+li 答えは500以下です。
1 から 1000 までの整数を 2^n * (2*m + 1) の形で表す。
2*m + 1 の部分は、
2*0 + 1, 2*1 + 1, …, 2*499 + 1
の500個のパターンのいずれかに一致する。
よって、1 から 1000 までの整数の中から501個以上の異なる整数を選び出せば、
その中には、かならず、
2^n1 * (2*m + 1), 2^n2 * (2*m + 1)
という二つの整数が含まれる。
この二つの整数は一方が他方を割り切る。
1 から 1000 までの整数を 2^n * (2*m + 1) の形で表す。
2*m + 1 の部分は、
2*0 + 1, 2*1 + 1, …, 2*499 + 1
の500個のパターンのいずれかに一致する。
よって、1 から 1000 までの整数の中から501個以上の異なる整数を選び出せば、
その中には、かならず、
2^n1 * (2*m + 1), 2^n2 * (2*m + 1)
という二つの整数が含まれる。
この二つの整数は一方が他方を割り切る。
728デフォルトの名無しさん
2017/11/28(火) 12:05:52.85ID:TRWRICOE どっかから問題と回答を拾ってきてドヤ顔してる人ってなんなの?
729デフォルトの名無しさん
2017/11/28(火) 14:07:31.97ID:g+QmVGb1730デフォルトの名無しさん
2017/11/28(火) 15:55:11.56ID:8wOk3LC1731デフォルトの名無しさん
2017/11/28(火) 17:12:15.85ID:g+QmVGb1732デフォルトの名無しさん
2017/11/28(火) 17:15:22.43ID:VA+yl+li >>729
整数を 2 で割れるだけ割ると 2^n * (2*m + 1) の形になります。
例:
120 = 2^3 * 15 = 2^3 * (2*7 + 1)
この場合、 n = 3, m = 7 です。
整数を 2 で割れるだけ割ると 2^n * (2*m + 1) の形になります。
例:
120 = 2^3 * 15 = 2^3 * (2*7 + 1)
この場合、 n = 3, m = 7 です。
733デフォルトの名無しさん
2017/11/28(火) 17:16:45.10ID:VA+yl+li 2^n * 奇数
です。
です。
734デフォルトの名無しさん
2017/11/28(火) 17:26:27.93ID:VA+yl+li 1 = 2^0 * (2*0 + 1)
2 = 2^1 * (2*0 + 1)
3 = 2^0 * (2*1 + 1)
…
999 = 2^0 * (2*499 + 1)
1000 = 2^3 * (2*62 + 1)
となります。
1, 2, …, 1000 をすべて
2^n * (2*m + 1)
という形に表します。
m は 0 から 499 までの 500 個の整数のどれかになります。
ですので、 1, 2, …, 1000 の中から 501 個以上の整数を取ってきて、それらすべてを
2^n * (2*m + 1)
という形に表すと、
2*m + 1
の部分が同じになるような異なる2つの整数があります。
2*m + 1 の部分は同じで、 2^n の部分が異なります。それら2つの整数は
2^n1 * (2*m + 1), 2^n2 * (2*m + 1) のようにあらわされます。 n1 < n2 と仮定して一般性を失いません。
2^n2 * (2*m + 1) は 2^n1 * (2*m + 1) で割り切れます。 2^n2 * (2*m + 1) ÷ 2^n1 * (2*m + 1) = 2^(n2-n1)
2 = 2^1 * (2*0 + 1)
3 = 2^0 * (2*1 + 1)
…
999 = 2^0 * (2*499 + 1)
1000 = 2^3 * (2*62 + 1)
となります。
1, 2, …, 1000 をすべて
2^n * (2*m + 1)
という形に表します。
m は 0 から 499 までの 500 個の整数のどれかになります。
ですので、 1, 2, …, 1000 の中から 501 個以上の整数を取ってきて、それらすべてを
2^n * (2*m + 1)
という形に表すと、
2*m + 1
の部分が同じになるような異なる2つの整数があります。
2*m + 1 の部分は同じで、 2^n の部分が異なります。それら2つの整数は
2^n1 * (2*m + 1), 2^n2 * (2*m + 1) のようにあらわされます。 n1 < n2 と仮定して一般性を失いません。
2^n2 * (2*m + 1) は 2^n1 * (2*m + 1) で割り切れます。 2^n2 * (2*m + 1) ÷ 2^n1 * (2*m + 1) = 2^(n2-n1)
735デフォルトの名無しさん
2017/11/28(火) 17:58:11.47ID:8wOk3LC1 500以下なのはわかった。500ある例>>726も見つかった。
で、一般に1からNのとき、何個になるのよ?
で、一般に1からNのとき、何個になるのよ?
736デフォルトの名無しさん
2017/11/28(火) 19:31:53.85ID:VA+yl+li737デフォルトの名無しさん
2017/11/28(火) 19:37:23.97ID:VA+yl+li738デフォルトの名無しさん
2017/11/28(火) 19:54:30.86ID:8wOk3LC1 あんまり面白くない結果だね
739デフォルトの名無しさん
2017/11/30(木) 18:59:28.31ID:A1E/mSxW セジウィックとウエインのcourseraのオンライン講義を聴講しています。
java.util.List
java.util.Stack
java.util.Queue
は最低だそうですね。
Best practices: Use our implementations of Stack, Queue, and Bag.
だそうです。
java.util.List
java.util.Stack
java.util.Queue
は最低だそうですね。
Best practices: Use our implementations of Stack, Queue, and Bag.
だそうです。
740デフォルトの名無しさん
2017/12/02(土) 11:57:41.11ID:6Ds5e+ud 最近傍探索で、最も近いものが複数個あった場合、どうするのが自然ですか?
また、k近傍探索でも、クエリからk番目に近いものが複数あった場合、どうするのが自然ですか?
また、k近傍探索でも、クエリからk番目に近いものが複数あった場合、どうするのが自然ですか?
741デフォルトの名無しさん
2017/12/02(土) 12:30:23.76ID:LweVlrmz セジウィックとウエインのcourseraのオンライン講義を聴講しています。
なんかやけに課題が厳しくないですか?
なんかやけに課題が厳しくないですか?
742デフォルトの名無しさん
2017/12/02(土) 13:12:04.17ID:LweVlrmz セジウィックとウエインのcourseraのオンライン講義Algorithms Part 1のWeek 2の課題、できた人いますか?
743デフォルトの名無しさん
2017/12/02(土) 17:04:18.29ID:Rnsbf7Hs 今日のNG ID:LweVlrmz
744デフォルトの名無しさん
2017/12/02(土) 20:12:18.77ID:LweVlrmz courseraのセジウィックとウエインの講義を聴講している人はいますか?
745デフォルトの名無しさん
2017/12/04(月) 13:54:02.89ID:fGqdieY2 >>740
好きなようにするのが自然
好きなようにするのが自然
746デフォルトの名無しさん
2017/12/05(火) 09:10:03.39ID:bL4Z2L1G747デフォルトの名無しさん
2017/12/05(火) 09:40:42.14ID:71Ul9rRS748デフォルトの名無しさん
2017/12/05(火) 09:45:48.47ID:afEItlvW 松坂君につきスルー推奨
749デフォルトの名無しさん
2017/12/05(火) 12:21:40.49ID:bL4Z2L1G あ、仕様Memory量の見積を勘違いしていました。
できそうですね。
Item 型のデータを格納する Linked List
と
Linked List の各要素への参照を格納する Item[] 型の
配列を用意すれば実現できますね。
できそうですね。
Item 型のデータを格納する Linked List
と
Linked List の各要素への参照を格納する Item[] 型の
配列を用意すれば実現できますね。
750デフォルトの名無しさん
2017/12/05(火) 12:25:30.33ID:bL4Z2L1G あ、でも Item[] 型の配列を ResizingArray で実現したとしても、
常に、Memoryの制限である 48*n + 192 bytes というのを満たすのは
無理ですね。
どうすればいいんですかね?
もう少しだけメモリの制限が緩ければ実現可能ですが。
常に、Memoryの制限である 48*n + 192 bytes というのを満たすのは
無理ですね。
どうすればいいんですかね?
もう少しだけメモリの制限が緩ければ実現可能ですが。
751デフォルトの名無しさん
2017/12/05(火) 12:30:24.08ID:bL4Z2L1G Performance requirements.
Your randomized queue implementation must support each randomized queue
operation (besides creating an iterator) in constant amortized time.
That is, any sequence of m randomized queue operations (starting from an empty
queue) must take at most cm steps in the worst case, for some constant c.
↑これと↓を両立させることはできるのでしょうか?
A randomized queue containing n items must use at most 48n + 192 bytes of
memory.
Your randomized queue implementation must support each randomized queue
operation (besides creating an iterator) in constant amortized time.
That is, any sequence of m randomized queue operations (starting from an empty
queue) must take at most cm steps in the worst case, for some constant c.
↑これと↓を両立させることはできるのでしょうか?
A randomized queue containing n items must use at most 48n + 192 bytes of
memory.
752デフォルトの名無しさん
2017/12/05(火) 13:24:03.96ID:bL4Z2L1G あ、なんだ
簡単でしたね。
Item[] 型の Resizing Array を使えば、
メモリ使用量 〜 8*n
だから、4倍くらいメモリを無駄に使っても
48*n を超えませんね。
簡単でしたね。
Item[] 型の Resizing Array を使えば、
メモリ使用量 〜 8*n
だから、4倍くらいメモリを無駄に使っても
48*n を超えませんね。
753デフォルトの名無しさん
2017/12/05(火) 13:25:09.16ID:bL4Z2L1G あ、なんだ
簡単でしたね。
Item[] 型の Resizing Array を使えば、
無駄が全くないときのメモリ使用量 〜 8*n
だから、4倍くらいメモリを無駄に使っても
48*n を超えませんね。
簡単でしたね。
Item[] 型の Resizing Array を使えば、
無駄が全くないときのメモリ使用量 〜 8*n
だから、4倍くらいメモリを無駄に使っても
48*n を超えませんね。
754デフォルトの名無しさん
2017/12/05(火) 13:27:33.45ID:bL4Z2L1G これから実装しますが、また100点満点中100点になりそうです。
755デフォルトの名無しさん
2017/12/05(火) 13:43:27.58ID:bL4Z2L1G あ、やっぱりだめですね。
dequeue の計算量がネックになりますね。
dequeue の計算量がネックになりますね。
756デフォルトの名無しさん
2017/12/05(火) 13:45:25.54ID:bL4Z2L1G あ、分かりました。
一様ランダムに選択された a[i] に a[N] を移せばいいんですね。
一様ランダムに選択された a[i] に a[N] を移せばいいんですね。
757デフォルトの名無しさん
2017/12/05(火) 16:58:02.34ID:Z65eXqg0 本日のNGID:bL4Z2L1G
758デフォルトの名無しさん
2017/12/05(火) 21:20:28.14ID:YaGuI/6t 経路探査でray cast algorithmというのがあるらしいんだが、わかりやすいサイトない?
759遊園
2017/12/07(木) 01:30:59.64ID:AoT+leNM おちんちん に ベロが届くアルゴリズムを教えて下さい。
760デフォルトの名無しさん
2017/12/07(木) 09:29:15.88ID:lQf/9LHk お金が儲かるアルゴリズムを教えてください
761デフォルトの名無しさん
2017/12/08(金) 13:48:57.43ID:6WtIjESa >>759
ム板らしく
香川大
https://www.youtube.com/watch?v=J_R7fgo0FLc
早稲田大
http://www.takanishi.mech.waseda.ac.jp/top/research/voice/movie/Tongue_Phoneme_s.mpg
http://www.takanishi.mech.waseda.ac.jp/top/research/voice/movie/Tongue_EMA_s.mpg
http://www.takanishi.mech.waseda.ac.jp/top/research/voice/index_j.htm
購入可能
https://auctions.yahoo.co.jp/seller/obaba1212
ム板らしく
香川大
https://www.youtube.com/watch?v=J_R7fgo0FLc
早稲田大
http://www.takanishi.mech.waseda.ac.jp/top/research/voice/movie/Tongue_Phoneme_s.mpg
http://www.takanishi.mech.waseda.ac.jp/top/research/voice/movie/Tongue_EMA_s.mpg
http://www.takanishi.mech.waseda.ac.jp/top/research/voice/index_j.htm
購入可能
https://auctions.yahoo.co.jp/seller/obaba1212
762デフォルトの名無しさん
2017/12/09(土) 02:58:56.19ID:ouHX+Izy >>760
「お金が儲かるアルゴリズム」で儲かる方法を書いた本を売る
「お金が儲かるアルゴリズム」で儲かる方法を書いた本を売る
763デフォルトの名無しさん
2017/12/09(土) 09:08:05.27ID:hr/9uBAF 子供の言い返しみたい
764デフォルトの名無しさん
2017/12/09(土) 12:25:33.81ID:GX7M220U それは結構知能が高い子供だなw
765デフォルトの名無しさん
2017/12/09(土) 16:48:02.91ID:oqulgHhz766デフォルトの名無しさん
2017/12/19(火) 17:58:55.99ID:E2JharMg 関数型言語ってUML使うんですか?
クラス図とかメソッドどう書くんだろうと
クラス図とかメソッドどう書くんだろうと
767デフォルトの名無しさん
2017/12/24(日) 12:09:02.25ID:croU9pw3 ちょっと質問させてください。
状況: トータル1000行くらいある巨大メソッドの改修
言語; PHPだがどの言語でもそう関係のない内容
・まずコントローラのアクションメソッドがあって
public function action(引数){
/* 500行くらいの既存コード */
/*今回改修を加えたい50行位のコード */
/* 500行位の既存コード */
}
となっている。
状況: トータル1000行くらいある巨大メソッドの改修
言語; PHPだがどの言語でもそう関係のない内容
・まずコントローラのアクションメソッドがあって
public function action(引数){
/* 500行くらいの既存コード */
/*今回改修を加えたい50行位のコード */
/* 500行位の既存コード */
}
となっている。
768デフォルトの名無しさん
2017/12/24(日) 12:16:40.00ID:croU9pw3 ・ここで、改修要件は、中間にある「/* 50行くらいの既存コード */」を
if文で分岐させて分岐次第で違う処理を入れる。というもの。
したがって、
public function action(引数){
/* 500行くらいの既存コード */
if(条件1){
/* 新規追加コード */
if(条件1-1){
/* 新規追加コード */
}else{
/* 既存コード */
}
}else if(条件2){
/* 新規追加コード */
}else{
/* 既存コード */
}
/* 500行位の既存コード */
}
みたいにひたすら条件分岐して既存コードと新規追加コード
が何回も実行されるようにしたい。
if文で分岐させて分岐次第で違う処理を入れる。というもの。
したがって、
public function action(引数){
/* 500行くらいの既存コード */
if(条件1){
/* 新規追加コード */
if(条件1-1){
/* 新規追加コード */
}else{
/* 既存コード */
}
}else if(条件2){
/* 新規追加コード */
}else{
/* 既存コード */
}
/* 500行位の既存コード */
}
みたいにひたすら条件分岐して既存コードと新規追加コード
が何回も実行されるようにしたい。
769デフォルトの名無しさん
2017/12/24(日) 12:22:57.90ID:croU9pw3 ・ここで、俺は「/* 既存コード */」の中身を知っている必要は
ないと思った。だから、このコードの詳細を読まずに「func()」
として「action()メソッド内部」に切り出した。
・外部に切り出したのではなく、内部に切り出したのはその処理が
他のアクションメソッドでは共有されるような汎用的なものではないだろうと
判断したのと、そのメソッド内で処理を追いやすいようにというのを
優先させたため。何より、その処理内で使っている関数内ローカル変数の
依存性の関係上そうせざるを得ないと思った。
public function action(引数){
/* 500行くらいの既存コード */
private function __legacy(){
/* 50行くらいの既存コード */
}
if(条件1){
/* 新規追加コード */
if(条件1-1){
/* 新規追加コード */
}else{
__legacy();
}
}else if(条件2){
/* 新規追加コード */
}else{
__legacy();
}
/* 500行位の既存コード */
}
ないと思った。だから、このコードの詳細を読まずに「func()」
として「action()メソッド内部」に切り出した。
・外部に切り出したのではなく、内部に切り出したのはその処理が
他のアクションメソッドでは共有されるような汎用的なものではないだろうと
判断したのと、そのメソッド内で処理を追いやすいようにというのを
優先させたため。何より、その処理内で使っている関数内ローカル変数の
依存性の関係上そうせざるを得ないと思った。
public function action(引数){
/* 500行くらいの既存コード */
private function __legacy(){
/* 50行くらいの既存コード */
}
if(条件1){
/* 新規追加コード */
if(条件1-1){
/* 新規追加コード */
}else{
__legacy();
}
}else if(条件2){
/* 新規追加コード */
}else{
__legacy();
}
/* 500行位の既存コード */
}
770デフォルトの名無しさん
2017/12/24(日) 12:31:59.59ID:croU9pw3 ・【訂正】上記で「func()」として切り出したと言っているが、
「__legacy()」に変更しました。すみません。
・上記のように改修した所、レビューを受けたときに怒られた。
・まず、「この__legacy()の中身ちゃんと読んだ? 把握して書いている?」
という指摘。
・そして「ここメソッド内だけどどうして関数定義しているの?
他の人そんなことしてないでしょ。どうして変わったことするの?」
という指摘。
・まず1つめの指摘に対して異議がある。
ブラックボックス化しなければ大規模なコードは書けないんじゃない?
ということが言いたい。ライブラリとかフレームワークの機能も全部
先に中身をよくよく読んでおかなければ使ってはいけないことになるじゃん。
・2つの指摘に対して、
「周りの人がやっていること」が正しいとは思えない。
処理を切り出していないから1000行もある巨大なメソッドになっていて、
汚いコメントで汚しながら機能追加しまくっているんじゃないのかと。
ローカル変数を使いまくりの同じ処理を何回も実行するのに
他に良い手段があるとしたら皆さんに教えて頂きたい。
「__legacy()」に変更しました。すみません。
・上記のように改修した所、レビューを受けたときに怒られた。
・まず、「この__legacy()の中身ちゃんと読んだ? 把握して書いている?」
という指摘。
・そして「ここメソッド内だけどどうして関数定義しているの?
他の人そんなことしてないでしょ。どうして変わったことするの?」
という指摘。
・まず1つめの指摘に対して異議がある。
ブラックボックス化しなければ大規模なコードは書けないんじゃない?
ということが言いたい。ライブラリとかフレームワークの機能も全部
先に中身をよくよく読んでおかなければ使ってはいけないことになるじゃん。
・2つの指摘に対して、
「周りの人がやっていること」が正しいとは思えない。
処理を切り出していないから1000行もある巨大なメソッドになっていて、
汚いコメントで汚しながら機能追加しまくっているんじゃないのかと。
ローカル変数を使いまくりの同じ処理を何回も実行するのに
他に良い手段があるとしたら皆さんに教えて頂きたい。
771デフォルトの名無しさん
2017/12/24(日) 13:24:11.47ID:d+M5RyEv 汎用的でない50行のコードをコピペしてるんなら関数化してもインライン化してもどっちもどっちだな
DRYを意識したのかもしれんがKISSが抜けてる
それにブラックボックスが許されるのは有名なライブラリやフレームワークのようなテストにテストを重ね、かつ多くの利用者による実績があるものだけだよ
社内コードなんて大概クソコードだしブラックボックスにしても後で痛い目を見るのは自分や他の開発者
何なら単に今把握するだけじゃなくて、未来の自分や開発者のためにわかりにくいところをコメントで説明書きしてもいいくらいだ
あと関数内関数より無名関数を変数に代入した方がいいんじゃね
そもそも新規追加したif文も詳細はわからないがデータよりもロジックに寄っててわかりにくそうな匂いがプンプンする
それに上司には理由を聞かれてるんだから同じローカル変数に別の値を入れて使い回すことの危険性、関数化による参照透明の確保や保守性、メンテナンス性の向上を論理的に答えればいいだけ
DRYを意識したのかもしれんがKISSが抜けてる
それにブラックボックスが許されるのは有名なライブラリやフレームワークのようなテストにテストを重ね、かつ多くの利用者による実績があるものだけだよ
社内コードなんて大概クソコードだしブラックボックスにしても後で痛い目を見るのは自分や他の開発者
何なら単に今把握するだけじゃなくて、未来の自分や開発者のためにわかりにくいところをコメントで説明書きしてもいいくらいだ
あと関数内関数より無名関数を変数に代入した方がいいんじゃね
そもそも新規追加したif文も詳細はわからないがデータよりもロジックに寄っててわかりにくそうな匂いがプンプンする
それに上司には理由を聞かれてるんだから同じローカル変数に別の値を入れて使い回すことの危険性、関数化による参照透明の確保や保守性、メンテナンス性の向上を論理的に答えればいいだけ
772デフォルトの名無しさん
2017/12/24(日) 13:31:29.00ID:ZUclbhk1 >>770
レビュアーが言ってることを正しいと仮定すれば
・1つ目の指摘は既存のコードがカプセル化されてないからだ
・2つ目の指摘はリファクタリングするだけの時間やお金や技術がないからだ
という前提が必要になるから、まあそういうことなんじゃなかろうかと
残念なコードっていうのはあるからね
それを修正する費用と修正して得られる効果を比較対照して
これだけの効果があるんだからこうするべきだと提案をまとめて
説得するのがいいのだろうけど、技術に理解のある人がいないとなかなか難しいね
レビュアーの立場で考えると以下の作業があるんじゃないかと
・改修要件を満たす改修
・既存のコードをカプセル化する
・リファクタリングする
レビュアーは既存のコードとの一貫性を維持しつつ
改修要件を満たす最小の改修をやって欲しいのだろうね
たとえ汚らしいコードであってもいままで動いてきた実績があると
変更に対しては既存のコードをできるだけ変えないようにと保守的になるものだよ
レビュアーがそれをきちんと説明できればいんだけど
コードはクソ、レビュアーもクソなんてことはザラにあるんですよこれが
レビュアーが言ってることを正しいと仮定すれば
・1つ目の指摘は既存のコードがカプセル化されてないからだ
・2つ目の指摘はリファクタリングするだけの時間やお金や技術がないからだ
という前提が必要になるから、まあそういうことなんじゃなかろうかと
残念なコードっていうのはあるからね
それを修正する費用と修正して得られる効果を比較対照して
これだけの効果があるんだからこうするべきだと提案をまとめて
説得するのがいいのだろうけど、技術に理解のある人がいないとなかなか難しいね
レビュアーの立場で考えると以下の作業があるんじゃないかと
・改修要件を満たす改修
・既存のコードをカプセル化する
・リファクタリングする
レビュアーは既存のコードとの一貫性を維持しつつ
改修要件を満たす最小の改修をやって欲しいのだろうね
たとえ汚らしいコードであってもいままで動いてきた実績があると
変更に対しては既存のコードをできるだけ変えないようにと保守的になるものだよ
レビュアーがそれをきちんと説明できればいんだけど
コードはクソ、レビュアーもクソなんてことはザラにあるんですよこれが
773デフォルトの名無しさん
2017/12/24(日) 13:35:53.06ID:croU9pw3 >>771 なるほど勉強になります。
少し質問したいが、
・「KISSが抜けている」と言うのはどこらへんでしょうか?
・関数内関数と無名関数の変数化の違いがわからないので教えてください。
(面倒なら調べます。)
・あなたならどう対応する?
・「理由を聞かれてるんだから答えればいいだけ。」
→多分論理的に説明したら「じゃあもう何も教えないよ。好きにやって」
が返って来ると思われる。
そう言われると、必要な情報も来なくなるし聞けなくなる。
少し質問したいが、
・「KISSが抜けている」と言うのはどこらへんでしょうか?
・関数内関数と無名関数の変数化の違いがわからないので教えてください。
(面倒なら調べます。)
・あなたならどう対応する?
・「理由を聞かれてるんだから答えればいいだけ。」
→多分論理的に説明したら「じゃあもう何も教えないよ。好きにやって」
が返って来ると思われる。
そう言われると、必要な情報も来なくなるし聞けなくなる。
774デフォルトの名無しさん
2017/12/24(日) 13:38:47.27ID:croU9pw3 >>772
なるほど、俺自身が「既存コードのカプセル化」と
「改修要件」という概念と「改修要件を最小に満たす」という
ことについて詳しくないことに問題がありそうだね。
ありがとう、ここらへんをキーワードにして調べてみます。
なるほど、俺自身が「既存コードのカプセル化」と
「改修要件」という概念と「改修要件を最小に満たす」という
ことについて詳しくないことに問題がありそうだね。
ありがとう、ここらへんをキーワードにして調べてみます。
775デフォルトの名無しさん
2017/12/24(日) 13:55:23.50ID:d+M5RyEv >>773
多分もっと細かく汎用的な(publicにできる)関数の集まりに分解して、汎用的でない部分は最小限に出来るんじゃないかなーって思った
実際のコード見てないから予想だけど
関数内関数だとわざわざprivateかけないと外からアクセス出来ちゃうし、元の親関数抜けても子関数が死なない
そもそも上司とあんまり仲良くないの?
論理的にメリットを売り込んだときに感情論で否定されるくらいの関係性だと下っ端プログラマーはしんどいよ?
まぁ俺ならその段階なら折れて普通にコピペして、もっと実績残して仲良くなってから似たような案件のときに改めて売り込むかな
多分もっと細かく汎用的な(publicにできる)関数の集まりに分解して、汎用的でない部分は最小限に出来るんじゃないかなーって思った
実際のコード見てないから予想だけど
関数内関数だとわざわざprivateかけないと外からアクセス出来ちゃうし、元の親関数抜けても子関数が死なない
そもそも上司とあんまり仲良くないの?
論理的にメリットを売り込んだときに感情論で否定されるくらいの関係性だと下っ端プログラマーはしんどいよ?
まぁ俺ならその段階なら折れて普通にコピペして、もっと実績残して仲良くなってから似たような案件のときに改めて売り込むかな
776デフォルトの名無しさん
2017/12/24(日) 16:09:59.00ID:RfRGBvGh ひとつのメソッドに1000行も書かせる会社はまず危ない
アルゴリズムとかそれ以前
アルゴリズムとかそれ以前
777デフォルトの名無しさん
2017/12/24(日) 16:57:23.08ID:croU9pw3 >>775
なるほど、「まるまる関数化」というのが
ちゃんと機能を意識してカプセル化していないってことか。
一応privateは欠けているけど、関数オブジェクトと
関数定義の違いはあまり詳しくないね。そうか、親関数が抜けたとき
子関数が死ぬか否かの違いがあるわけね。
入りたてだから人間関係はいいも悪いもない。
ただ、本来責任ある人はバタバタしていて、経験ある人が自分の意志で
新人のレビューをバラバラに行っている感じ。
>>776
会社がそうさせているというよりはそれぞれの人員が
これまでの追加の仕方を真似て機能追加した結果メソッドがブクブクと太っている
という状況に見える。
メソッド内で各追加機能がコメントで区画されていてそれなら
別関数にすりゃいいのにって思っている。
俺をレビューした人も、別に会社の工程でそうなっているわけでなく、
進捗を見たかったからだと思うが、書き直しを要求してきて困惑している。
ただ彼は業務要件については圧倒的に俺より詳しいから無視すべきではないと
思っている。
なるほど、「まるまる関数化」というのが
ちゃんと機能を意識してカプセル化していないってことか。
一応privateは欠けているけど、関数オブジェクトと
関数定義の違いはあまり詳しくないね。そうか、親関数が抜けたとき
子関数が死ぬか否かの違いがあるわけね。
入りたてだから人間関係はいいも悪いもない。
ただ、本来責任ある人はバタバタしていて、経験ある人が自分の意志で
新人のレビューをバラバラに行っている感じ。
>>776
会社がそうさせているというよりはそれぞれの人員が
これまでの追加の仕方を真似て機能追加した結果メソッドがブクブクと太っている
という状況に見える。
メソッド内で各追加機能がコメントで区画されていてそれなら
別関数にすりゃいいのにって思っている。
俺をレビューした人も、別に会社の工程でそうなっているわけでなく、
進捗を見たかったからだと思うが、書き直しを要求してきて困惑している。
ただ彼は業務要件については圧倒的に俺より詳しいから無視すべきではないと
思っている。
778デフォルトの名無しさん
2017/12/24(日) 17:21:20.21ID:d+M5RyEv >>777
カプセル化はオブジェクト指向において関連するものをまとめる作業だから、ちょっと違うかな?
どちらかというと今回の話は関数型プログラミングの考え方に近い
まぁぶっちゃけ職場のコードなんて割り切らんとやってけんよ
出世してコーディングスタイルに口を出せるようになる日を待つしかない
カプセル化はオブジェクト指向において関連するものをまとめる作業だから、ちょっと違うかな?
どちらかというと今回の話は関数型プログラミングの考え方に近い
まぁぶっちゃけ職場のコードなんて割り切らんとやってけんよ
出世してコーディングスタイルに口を出せるようになる日を待つしかない
779デフォルトの名無しさん
2017/12/24(日) 18:02:16.50ID:ZlmBMffH >>777
そんな仕事を放置する会社、と言うことだ
そんな仕事を放置する会社、と言うことだ
780デフォルトの名無しさん
2017/12/26(火) 20:02:37.53ID:IVX+3dWv 名前だらけのコードってどうやって解読すればいいんだ?
変数化するとそのデータの型が何なのか物量的にどれだけの
規模が格納されているかが見えない。
もちろんログに吐けば見えるが、吐き出さなければパッと見で
何をどう処理しているのか分からない。
変数化するとそのデータの型が何なのか物量的にどれだけの
規模が格納されているかが見えない。
もちろんログに吐けば見えるが、吐き出さなければパッと見で
何をどう処理しているのか分からない。
781デフォルトの名無しさん
2017/12/26(火) 22:58:59.01ID:SjDDNmHA 俺は君の話が見えない
782デフォルトの名無しさん
2017/12/27(水) 07:26:44.87ID:uxDwhrz8 関数型言語の仕様書ってUMLで良いの?
データと振る舞い分離してるからクラス図使って良いのかなと
データと振る舞い分離してるからクラス図使って良いのかなと
783デフォルトの名無しさん
2017/12/27(水) 08:35:11.41ID:F/9ZaRBN >>782
ちょうど stackoverflow に同じトピックがありました。
参考にしてください。
https://stackoverflow.com/questions/2457903/can-uml-be-used-to-model-a-functional-program
ちょうど stackoverflow に同じトピックがありました。
参考にしてください。
https://stackoverflow.com/questions/2457903/can-uml-be-used-to-model-a-functional-program
784デフォルトの名無しさん
2017/12/28(木) 07:02:18.99ID:THqyhi+6785デフォルトの名無しさん
2018/01/10(水) 18:14:12.30ID:hBlQ00sP786デフォルトの名無しさん
2018/01/10(水) 18:27:49.76ID:1dOsaXCv 粗探しは止めたのか?
787デフォルトの名無しさん
2018/02/03(土) 08:08:45.43 今どきデザインパターンって死語なの?
ちょっと参照したいことがあって書店でデザインパターンの本を探したけど見つからなかった。
リファクタリングの本はあって多少はデザインパターンの話も出てきたけど。
結局は家に帰ってから10年前に買ったデザインパターンの本を参照するしかなかった。
ちょっと参照したいことがあって書店でデザインパターンの本を探したけど見つからなかった。
リファクタリングの本はあって多少はデザインパターンの話も出てきたけど。
結局は家に帰ってから10年前に買ったデザインパターンの本を参照するしかなかった。
788デフォルトの名無しさん
2018/02/03(土) 08:51:29.86ID:KIp4GWtx ブームが去っただけかな?
銀の弾丸などないと気がついただけ
銀の弾丸などないと気がついただけ
789デフォルトの名無しさん
2018/02/03(土) 09:20:07.32ID:i7L7gFeB 今更デザインパターンについて新しい本なんて不要
790デフォルトの名無しさん
2018/02/03(土) 12:22:10.78ID:ROxRBp/z デザパタは元々バカの為にまとめられたものだったけどバカには無理だった代物
一方リファクタリングはバカ程好むからなかなか廃れない
一方リファクタリングはバカ程好むからなかなか廃れない
791デフォルトの名無しさん
2018/02/03(土) 19:53:28.27ID:4eWkMwg8 21世紀最新のデザインパターン本て誰か書かないかね
Singleton→大抵はstaticでOK
みたいなの
Singleton→大抵はstaticでOK
みたいなの
792デフォルトの名無しさん
2018/02/03(土) 20:04:20.16ID:gMMiWrqd >>791
それ以外に何か書くことあんのか?
それ以外に何か書くことあんのか?
793デフォルトの名無しさん
2018/02/04(日) 00:33:23.10ID:P/Ibpspu デザインパターンて結局何だったんだ?
高い本まで買ったがほとんど身に付かなかったな
高い本まで買ったがほとんど身に付かなかったな
>>793
もともと C++ 界隈で発生したテーマですので、C++ をやっているとデザパタの意義がよくわかります
C++ は細かしいことまで自分で記述しなければならないので、こういう大枠思考がもてはやされたのだと思います
もともと C++ 界隈で発生したテーマですので、C++ をやっているとデザパタの意義がよくわかります
C++ は細かしいことまで自分で記述しなければならないので、こういう大枠思考がもてはやされたのだと思います
ああ、でも C++ はテンプレートの世界観に移行してしまったので、デザパタ、今はあんまり使いません!
796デフォルトの名無しさん
2018/02/25(日) 14:54:54.10ID:LHXgrTbX797デフォルトの名無しさん
2018/02/25(日) 16:52:44.22ID:bfs3ZT86 アルゴリズムとパターンて違うんじゃね?
798デフォルトの名無しさん
2018/02/25(日) 18:39:48.45ID:hAg+nb3o デザインパターンそこに至る考え方を身につけないと
というわけで、オブジェクト指向のこころをオススメしとく
というわけで、オブジェクト指向のこころをオススメしとく
799デフォルトの名無しさん
2018/02/25(日) 18:59:31.93ID:z/Jlakx1 >>798
書評読んでもなかなかよさげだな
書評読んでもなかなかよさげだな
800デフォルトの名無しさん
2018/03/05(月) 21:38:39.67ID:aiLdZy6r 『アルゴリズムイントロダクション』を読んでいます。
ヒープソートのところに、
「サイズ n のヒープ上の MAX-HEAPIFY の最悪実行時間が Ω(lg n) であることを示せ。」
という問題があります。
最悪実行時間が Θ(lg n) であることはすぐに分かります。
なぜ、 Ω(lg n) であることを示せという問題なのでしょうか?
最悪実行時間や最良実行時間については、 Θ 記法で書くのが自然だと思います。
ヒープソートのところに、
「サイズ n のヒープ上の MAX-HEAPIFY の最悪実行時間が Ω(lg n) であることを示せ。」
という問題があります。
最悪実行時間が Θ(lg n) であることはすぐに分かります。
なぜ、 Ω(lg n) であることを示せという問題なのでしょうか?
最悪実行時間や最良実行時間については、 Θ 記法で書くのが自然だと思います。
801デフォルトの名無しさん
2018/03/06(火) 01:54:34.90ID:bDrXTt4P まるちんこ
802デフォルトの名無しさん
2018/03/07(水) 21:29:45.52ID:ukyKg6LA セジウィックさんはいい加減ですね。
近代科学社から出ている『アルゴリズムC』の最小全域木のところを読んでいますが、
同じ重みの辺が2つ以上あると議論が破綻するところがありますね。
Wayneさんと共著の『Algorithms』では、すべての重みが異なるという仮定をおいていますね。
いずれにしてもひどい本です。
近代科学社から出ている『アルゴリズムC』の最小全域木のところを読んでいますが、
同じ重みの辺が2つ以上あると議論が破綻するところがありますね。
Wayneさんと共著の『Algorithms』では、すべての重みが異なるという仮定をおいていますね。
いずれにしてもひどい本です。
803デフォルトの名無しさん
2018/03/07(水) 21:31:54.51ID:MzP8rhu8 キミはまだアルゴリズムの勉強していたのか。
人には向き不向きというのがあってだな。
人には向き不向きというのがあってだな。
804デフォルトの名無しさん
2018/03/07(水) 21:33:49.91ID:ukyKg6LA すべての重みが異なるというのは異常な仮定ですよね。
805デフォルトの名無しさん
2018/03/07(水) 22:27:03.62ID:ukyKg6LA 茨木俊秀著『アルゴリズムとデータ構造』を読んでいます。
この本のクラスカルのアルゴリズムの正しさの証明に使われる補題の証明ですが、
読んでも分からなかったのですが、やはりおかしかったんですね。
同じ著者の『Cによるアルゴリズムとデータ構造』を読むと補題の証明が修正されています。
この分野っていい加減な本が多いですよね。
この本のクラスカルのアルゴリズムの正しさの証明に使われる補題の証明ですが、
読んでも分からなかったのですが、やはりおかしかったんですね。
同じ著者の『Cによるアルゴリズムとデータ構造』を読むと補題の証明が修正されています。
この分野っていい加減な本が多いですよね。
806デフォルトの名無しさん
2018/03/08(木) 19:38:26.94ID:NHHLXFak 任意の連結無向グラフ G = (V, E) は |E| ≧ |V| - 1 を満たすことを示せ。
807デフォルトの名無しさん
2018/05/12(土) 10:59:28.10ID:pDgCeBjY 共同ツール 1
https://seleck.cc/685
https://trello.com/
ボードのメニュー → Power-Upsから拡張可能 Slack DropBoxなど
Trello Chrome拡張機能 elegant
ttp://www.kikakulabo.com/service-eft/
trelloのオープンソースあり
共同ツール 2
https://www.google.com/intl/ja_jp/sheets/about/
共同ツール 3
https://slack.com/intl/ja-jp
https://www.dropbox.com/ja/
https://bitbucket.org/
https://ja.atlassian.com/software/sourcetree
https://sketchapp.com/extensions/plugins/
ttp://photoshopvip.net/103903
ttps://goodpatch.com/blog/sketch-plugins/
https://seleck.cc/685
https://trello.com/
ボードのメニュー → Power-Upsから拡張可能 Slack DropBoxなど
Trello Chrome拡張機能 elegant
ttp://www.kikakulabo.com/service-eft/
trelloのオープンソースあり
共同ツール 2
https://www.google.com/intl/ja_jp/sheets/about/
共同ツール 3
https://slack.com/intl/ja-jp
https://www.dropbox.com/ja/
https://bitbucket.org/
https://ja.atlassian.com/software/sourcetree
https://sketchapp.com/extensions/plugins/
ttp://photoshopvip.net/103903
ttps://goodpatch.com/blog/sketch-plugins/
808デフォルトの名無しさん
2018/05/23(水) 20:11:35.70ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
BU06O
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
BU06O
809デフォルトの名無しさん
2018/06/24(日) 11:32:17.25ID:cbD8du/l AVL木について詳しく載っている本は何ですか?
810デフォルトの名無しさん
2018/06/24(日) 14:42:02.78ID:/GtGgmfo 詳しいと言えるかどうかは別にしてAVL木に関する説明が分かりやすいと思ったのは次の本の該当箇所(§6.3)だ
浅野哲夫『データ構造』、アルゴリズムシリーズ1、近代科学社 (1992)
浅野哲夫『データ構造』、アルゴリズムシリーズ1、近代科学社 (1992)
811デフォルトの名無しさん
2018/06/24(日) 15:07:06.81ID:F1zD07yq ステマ
812デフォルトの名無しさん
2018/07/04(水) 22:09:33.44ID:gFgZc5FG C5O
813デフォルトの名無しさん
2018/07/05(木) 16:33:38.42ID:AeL6VB/V C5O
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★2 [ぐれ★]
- 【速報】中国、水産物輸入停止と通達 「処理水」理由、日本政府へ ★7 [おっさん友の会★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… [BFU★]
- 中国側が首相答弁の撤回要求、日本側拒否★7 [夜のけいちゃん★]
- 「高市人気」どこに? 自民候補が福島市長選で大敗、葛飾区議選でも苦戦 衆院早期解散論に冷や水 [1ゲットロボ★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★3 [ぐれ★]
- 日本行きの航空便が50万件キャンセル。日本人「中国依存度が異常に高かったからちょうどいい😏」 [441660812]
- 日本人、ついに気づく「あれ、日本が対中国で取れる対抗措置ってなくない…?」 [931948549]
- 中国「水産物輸入停止は高市首相の発言が理由」 [256556981]
- 中国「次に禁止してほしいものを教えて」 [358382861]
- 【号外】中国外務省、高市首相が台湾関連の発言を撤回しなければ「断固たる対抗措置」を取らざるを得ないと述べた [115996789]
- 【悲報】高市早苗『嫌ああああああああああああぁぁぁぁぁっーーッッ!!私が何したって言うのよぉぉぉぉーッッ!!』 [527893826]
