問題タブ [in-place]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
grid - Common Lisp では、サブグリッドでインプレース算術演算を実行できますか?
行列計算にAntikandを使用しています。Gsll
サブグリッドで算術演算を実行したい場合があります (たとえば、行列の列に 2.0 を掛けるなど)。今、私はこれらのコードを書かなければなりません:
これらのコードによると、Antik最初に中間結果を格納するための一時的なグリッドを作成し、それを元の .bask に設定する必要がありmatます。マトリックスが巨大な場合、一時グリッドの作成が遅くなることがあります。ですから、これをオリジナルで直接行うことができれば幸いですmat。
PS:はgsll:elt*、たとえば、マトリックス全体に対してインプレース変更を行います。これは、が巨大な(gsll:elt* mat 2.0)場合でも非常に効率的です。mat
アップデート:
ここで実験の結果を示しています。
コード:
結果:
前者の計算は 100x100 マトリックス全体で行われることに注意してください。これは後者の計算よりもさらに高速です (1x100 サブマトリックスでのみ行われます)。そして後者は、一時ストレージの割り当てにより、はるかに多くのバイトを消費しました。
algorithm - O(n) 時間と O(1) 空間で相対的な順序が同じになるように、アルファベットと数字を分離します。
配列が空間と時間[a1b7c3d2]に変換された場合、つまり、相対的な順序が同じになるように、文字を左側に、数字を右側に配置します。私はアルゴリズムを考えることができますが、それ以上のものはありません。誰か助けてくれませんか?[abcd1732]O(1)O(n)O(nlogn)
naming-conventions - インプレースミューテーション/クリエーション機能を区別するための命名規則
一般的なプログラミング ユーティリティ コードを書いたとき、1 つの機能に対してインプレース ミューテーターと新しいオブジェクト クリエーター メンバー関数の両方を使用するとよいことがわかりました。
たとえば、ファイル システムのパスを表す一部のクラスには、「正規化」機能がある場合があります。パス オブジェクトは、自身を正規化されたものに変更するか、新しい正規化されたパス オブジェクトを返す場合があります。
私はこれについていくつかの規則を試しましたが、それらのほとんどは満足のいくものではありません.
'ノーマライズ!' ruby のようなインプレース関数の場合 - 良いですが、他のほとんどの言語は、識別子に含まれる特殊文字をサポートしていません。
インプレース関数の「normalize_ip」 - 私の関数の使用のほとんどはインプレースであるため、あまりにも醜いと思います。
非インプレース関数の 'get_normalized' - 許容されますが、メンバーの他の単純な getter 関数と混同される可能性があります。
非インプレース関数の「正規化」 - 均一でない場合があり、インプレースの対応部分と簡単に混同されます。
非インプレース関数をフリー関数として記述 - IDE のインテリセンス支援の欠如、場合によっては可視性の問題。
2つの機能を区別するための適切で実用的な慣習を見つけたいと思います。
algorithm - 「インプレース」MSD 基数ソート、スタック スペース、およびスタック オーバーフロー
「インプレース」MSD基数ソートアルゴリズムを本当に混乱させています:
各ビンは、すべての桁が並べ替えに使用されるまで、次の桁を使用して再帰的に処理されます。
再帰は O(n) スタック スペースを意味するように思われるため、混乱しています。ここで、nは最長の文字列の長さ (ビット数) ですよね?
スタック オーバーフローを回避する唯一の方法はヒープ スペースを使用することのように思えますが、その場合、アルゴリズムは定義上、もはや「インプレース」ではありません。
では、インプレース MSD 基数ソートをインプレースで実行するにはどうすればよいでしょうか?
algorithm - Strassen アルゴリズムのインプレース実装?
各再帰で8回の再帰呼び出しを必要とする行列乗算の単純なDivide&Conquerアルゴリズムのインデックス操作により、インプレースソリューションを実装することができました。しかし、Strassen アルゴリズムを実装しようとすると、その場で実装する方法が見つかりませんでした。代わりに、C を使用してプログラムするときに、7 回の再帰呼び出しのために 19 個のサブ行列を malloc する必要があります。
Strassenアルゴリズムをインプレースで実装する方法は? それとも可能ですか?
string - インプレースアルゴリズムとは?
文字列から重複を削除したいとします。特定の文字がすでに出現しているかどうかを格納する長さ 256 のブール配列を使用することにしました。この補助ブール配列を使用して、文字列を走査し、すべての重複を削除できます。
私の質問は、「このアルゴリズムは適切ですか?」ということです。
インプレースである必要がある入力のサイズによって変化しない一定量のスペースを使用していると思います。私が間違っている場合は修正してください。
python - インプレース OR による null チェックの簡素化
次の形式で、Python の null/false チェックを単純化しています。
これ:
これに簡略化できます。
そして、上から見ると、次のようにさらに単純化しようとするのが自然です。
しかし、Pythonのインプレースorは実際にはインプレースでビットごとに行っています:
したがって、質問は次のとおりです。Pythonにはインプレースがありますか? また、このような単純化された null/false チェックを行う際に問題はありますか?
免責事項
a is not Noneと同じではないことは承知していnot aます。前者は a が実際にNone値ではないかどうかを評価し、後者は a がFalse( False、None、0、''(空の文字列)、[]、{}(空のコレクション) など)に評価されるものではないかどうかを評価します。