このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
データ構造,アルゴリズム,デザインパターン総合スレ 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/
683デフォルトの名無しさん
2017/11/06(月) 23:54:10.39ID:Xbh99dPN シングルトンがいけないとかたまに聞くんだけど
シングルトンなしでどうやるのか誰か教えて
シングルトン使わないで済むならシングルトン辞めることには吝かではないんだが
どうやるのかが分からない
HolderとかRepository作るとどうしてもシングルトンになっちゃう
誰か助けて
シングルトンなしでどうやるのか誰か教えて
シングルトン使わないで済むならシングルトン辞めることには吝かではないんだが
どうやるのかが分からない
HolderとかRepository作るとどうしてもシングルトンになっちゃう
誰か助けて
684デフォルトの名無しさん
2017/11/07(火) 08:06:23.75ID:FkpvBRAi シングルトンの何がいけないのかをわかっていれば別に使ってもいいんじゃないか?
と思うんだが
と思うんだが
685デフォルトの名無しさん
2017/11/08(水) 03:27:16.05ID:pi2d/ZnM staticでおk
686デフォルトの名無しさん
2017/11/10(金) 09:56:08.91ID:O+5a47Rv 内部ノード数 n の 2色木の Black Height を h であらわすと以下の不等式が成り立つ。
2^(h-1) - 1 ≦ n ≦ 2^(2*h-1) - 1
よって、 h = O(log(n))
とある本に書いてあります。
これっておかしいですよね?
h は n の関数ではありません。内部ノード数から2色木の Black Height は一意的にはきまらないからです。
もちろん、 O(log(n)) の左辺には n の関数が来るきまりです。
ですので、 h = O(log(n)) と書くのはおかしいのではないでしょうか?
2^(h-1) - 1 ≦ n ≦ 2^(2*h-1) - 1
よって、 h = O(log(n))
とある本に書いてあります。
これっておかしいですよね?
h は n の関数ではありません。内部ノード数から2色木の Black Height は一意的にはきまらないからです。
もちろん、 O(log(n)) の左辺には n の関数が来るきまりです。
ですので、 h = O(log(n)) と書くのはおかしいのではないでしょうか?
687デフォルトの名無しさん
2017/11/10(金) 12:02:03.17ID:WtBM3Wp4 メッセージキューイングって
Commandパターンで実装するで合ってる?
Commandパターンで実装するで合ってる?
688デフォルトの名無しさん
2017/11/12(日) 17:56:18.04ID:5J9eZD00689デフォルトの名無しさん
2017/11/12(日) 19:28:20.81ID:2NYvmr0h h が n の関数ではないにもかかわらず
h ∈ O(log(n))
と書いているのがナンセンスです。
h ∈ O(log(n))
と書いているのがナンセンスです。
690デフォルトの名無しさん
2017/11/12(日) 19:46:50.82ID:wWQbf7ET691デフォルトの名無しさん
2017/11/12(日) 20:23:32.92ID:2NYvmr0h n から h は一意的に決まりません。
よって、
h は n の関数ではありません。
よって、
h は n の関数ではありません。
692デフォルトの名無しさん
2017/11/12(日) 21:38:49.52ID:wkhRVmHI >>691
(1)より一意に決まらなくても計算量は同じでしょ?
(1)より一意に決まらなくても計算量は同じでしょ?
693デフォルトの名無しさん
2017/11/13(月) 18:01:47.14ID:O+WFbO9G >もちろん、 O(log(n)) の左辺には n の関数が来るきまりです。
ここの時点でおかしい
ここの時点でおかしい
694デフォルトの名無しさん
2017/11/13(月) 18:49:03.12ID:TURt7nwr695デフォルトの名無しさん
2017/11/14(火) 16:22:50.14ID:kwaLWx7P 抽象メソッドしか定義されない型のことを
「インタフェース」ってネーミングセンスは頭おかしいんじゃないの?
インタフェースって言ったら通常「UI」とか外部の窓口になったり、
外部デバイスとの接続ポイントになるコネクタのことを言うじゃん。
オブジェクトの型のことを「インタフェース」なんて言ったら誤解を招くだろ。
「インタフェース」ってネーミングセンスは頭おかしいんじゃないの?
インタフェースって言ったら通常「UI」とか外部の窓口になったり、
外部デバイスとの接続ポイントになるコネクタのことを言うじゃん。
オブジェクトの型のことを「インタフェース」なんて言ったら誤解を招くだろ。
696デフォルトの名無しさん
2017/11/14(火) 16:49:12.95ID:dN7NjwRx697デフォルトの名無しさん
2017/11/14(火) 18:46:26.43ID:9XknVuf7 外部の窓口になったり、外部デバイスとの接続ポイントになるのが抽象メソッドだから。
つまりそれしか定義されてないということは、インターフェースそのものと言っていいだろう。
つまりそれしか定義されてないということは、インターフェースそのものと言っていいだろう。
698デフォルトの名無しさん
2017/11/14(火) 20:12:16.44ID:R1CE9PkA デザパタスキル、エンベッデイドスキルなんやかや言うが、みんな大事な部分は閃きなんだがなぁ・・・
作曲と同じ。 閃き・・・ とどのつまり、神が書かせているという事。
そこを理解できない限り、そのプログラマーは聖職では無い。
作曲と同じ。 閃き・・・ とどのつまり、神が書かせているという事。
そこを理解できない限り、そのプログラマーは聖職では無い。
699デフォルトの名無しさん
2017/11/15(水) 13:14:29.24ID:qga1lTtf 神などと妄想するようになったら科学の全否定の始まり。無知が故の過ち。
700デフォルトの名無しさん
2017/11/18(土) 18:23:02.44ID:SgBQyEr/ 神「共通化せよ――」
僕「はい」
神「ごめん間違えた――」
僕「うわぁぁああぁああ!!!」
僕「はい」
神「ごめん間違えた――」
僕「うわぁぁああぁああ!!!」
701デフォルトの名無しさん
2017/11/18(土) 18:29:25.85ID:ebkB7QGA 神とは強いて言えば可能性
702デフォルトの名無しさん
2017/11/19(日) 23:12:44.83ID:opsy6abA 以下で定義される写像 A : N × N → N を Ackermann 関数という。
A(1, j) = 2^j for j = 1, 2, 3, …
A(i, 1) = A(i-1, 2) for i = 2, 3, 4, …
A(i, j) = A(i-1, A(i, j-1)) for i = 2, 3, 4, … for j = 2, 3, 4, …
α(m, n) = min {i ≧ 1 | A(i, floor(m/n)) > log_2(n)}
で定義される写像 α : {(m, n) | m, n ∈ N, m ≧ n} → N を Ackermann 逆関数という。
なぜ、この α を Ackermann 関数の逆関数と呼ぶのでしょうか?
A(1, j) = 2^j for j = 1, 2, 3, …
A(i, 1) = A(i-1, 2) for i = 2, 3, 4, …
A(i, j) = A(i-1, A(i, j-1)) for i = 2, 3, 4, … for j = 2, 3, 4, …
α(m, n) = min {i ≧ 1 | A(i, floor(m/n)) > log_2(n)}
で定義される写像 α : {(m, n) | m, n ∈ N, m ≧ n} → N を Ackermann 逆関数という。
なぜ、この α を Ackermann 関数の逆関数と呼ぶのでしょうか?
703デフォルトの名無しさん
2017/11/20(月) 20:37:12.88ID:Sdx1OtwZ courseraのセジウィックとウエインの講義を受講しています。
プログラミングの課題のチェックが超厳しいですね。
'if' is not followed by whitespace.
「if」の後ろにスペースを入れないといけないなんて初めて聞きました。
そんなことまで強制されたらたまりませんね。
プログラミングの課題のチェックが超厳しいですね。
'if' is not followed by whitespace.
「if」の後ろにスペースを入れないといけないなんて初めて聞きました。
そんなことまで強制されたらたまりませんね。
704デフォルトの名無しさん
2017/11/20(月) 20:40:14.03ID:uYx1UAMq 大概のプロジェクトで採用されてるスタイルだから従っとけ
スペース軽視するやつ多すぎ
スペース軽視するやつ多すぎ
705デフォルトの名無しさん
2017/11/20(月) 20:43:51.90ID:Y8ntE/6M706デフォルトの名無しさん
2017/11/20(月) 20:54:20.19ID:XqE+Nf2F フオーマッタの設定の指定とか無いの?
707デフォルトの名無しさん
2017/11/20(月) 23:10:14.23ID:ohy70QIE 一般的なコーディングルールには従ったほうがよい
最近の言語環境では放っておいてもツッコミ入れてくれたりもするが
最近の言語環境では放っておいてもツッコミ入れてくれたりもするが
708デフォルトの名無しさん
2017/11/21(火) 07:03:23.42ID:G6ETZwfO 業務システムでオブジェクト指向不要って意見はどう思いますか
大抵スパゲティークエリになってる印象ですが
大抵スパゲティークエリになってる印象ですが
709デフォルトの名無しさん
2017/11/21(火) 07:13:27.16ID:OOffmQFA 途中からオブジェクト指向混ぜられても困るだろ
実行効率や記述効率は悪くたって別に構わないのだから(ここわかってない人多し)、プロジェクトに来た全員が理解利用できる書き方が最優先
無論技術的にも業務的にもうんこだが、そこを追求すべき場所ではないところで勝手に追及を始めるのはそれこそうんこのやること
ゼロからオーバーホールを提案してもよいが最後まで自己責任で看取れ
実行効率や記述効率は悪くたって別に構わないのだから(ここわかってない人多し)、プロジェクトに来た全員が理解利用できる書き方が最優先
無論技術的にも業務的にもうんこだが、そこを追求すべき場所ではないところで勝手に追及を始めるのはそれこそうんこのやること
ゼロからオーバーホールを提案してもよいが最後まで自己責任で看取れ
710デフォルトの名無しさん
2017/11/21(火) 17:43:16.86ID:M9cr/U+S >>709
サブクエリ五重の塔を見て上長にキツいと報告したら世界にはバベルの塔がいっぱいあるのに根をあげるなと叱られました
せめて何をしたいのかドキュメント欲しいと言ったらコードが全てだとも言われました
IT業界の厳しさを知りました
サブクエリ五重の塔を見て上長にキツいと報告したら世界にはバベルの塔がいっぱいあるのに根をあげるなと叱られました
せめて何をしたいのかドキュメント欲しいと言ったらコードが全てだとも言われました
IT業界の厳しさを知りました
711デフォルトの名無しさん
2017/11/21(火) 18:14:34.60ID:3zrw9He/ >>710
マ板にどうぞ
マ板にどうぞ
712デフォルトの名無しさん
2017/11/22(水) 09:23:31.55ID:milfaijK courseraのセジウィックとウエインの講義の最初の課題であるパーコレーションだけど
backwashを防ぐにはどうすればいいんですか?
backwashを防ぐにはどうすればいいんですか?
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で良いの?
データと振る舞い分離してるからクラス図使って良いのかなと
データと振る舞い分離してるからクラス図使って良いのかなと
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【原因は日本】元外交官ら高市首相答弁の撤回要求 「被害者のように振る舞っても事態は打開されない」… [BFU★]
- 高市首相「多様なコメの増産を進める」 方針転換への懸念払拭狙いか [どどん★]
- 人間の髪の毛は押し出されるのではなく「引っ張られる」ことで成長する [少考さん★]
- 【国内総生産】実質GDP、年2.3%減に下方修正 設備投資落ち込み 7~9月期改定値 [ぐれ★]
- グリコが「ポッキー」など600万個自主回収 チョコに香辛料の香り [少考さん★]
- 世界的DJ沖野修也、高市早苗首相のアーティスト海外展開支援めぐり疑問「補償が先ではないですか?」 ★2 [muffin★]
- 【実況】博衣こよりのえちえちだる絡み背後霊🧪
- 日経「日本はAIで勝ち筋はないが、最善手を打てば奇跡が起きる。実力を蓄え、勝負どころで一気に仕掛ける」 [673057929]
- 【超画像🕳】八潮wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww [151291598]
- 金融業です(サラ金)、役所で働いてます(委託)、省庁で働いてます(派遣・アルバイト)…こういう見栄っぱりいるでしょ [566475398]
- 【悲報】超人気キムチ「ご飯がススム」、生きたままのゴキブリ混入で大炎上wwwwwwwwwwwwwwwwwwww [802034645]
- 地方創生☆チクワクティクスでひなビタお🏡を萌え起こしめう!
