Added Artisan #3 (solved) and #4 (unsolved)
+50 · 2 files changed
-
README.html+23 −0 -
README.rst+27 −0
@@ -469,6 +469,29 @@ np.bincount(A) == C ?</p> <span class="keyword">print</span> <span class="name">np</span><span class="operator">.</span><span class="name">unpackbits</span><span class="punctuation">(</span><span class="name">I</span><span class="punctuation">[:,</span> <span class="name">np</span><span class="operator">.</span><span class="name">newaxis</span><span class="punctuation">],</span> <span class="name">axis</span><span class="operator">=</span><span class="literal number integer">1</span><span class="punctuation">)</span> </pre> </li> +<li><p class="first">Consider 2 sets of points P0,P1 describing lines (2d) and a point p, how to +compute distance from p to each line i (P0[i],P1[i]) ?</p> +<pre class="code python literal-block"> +<span class="keyword">def</span> <span class="name function">distance</span><span class="punctuation">(</span><span class="name">P0</span><span class="punctuation">,</span> <span class="name">P1</span><span class="punctuation">,</span> <span class="name">p</span><span class="punctuation">):</span> + <span class="name">T</span> <span class="operator">=</span> <span class="name">P1</span> <span class="operator">-</span> <span class="name">P0</span> + <span class="name">L</span> <span class="operator">=</span> <span class="punctuation">(</span><span class="name">T</span><span class="operator">**</span><span class="literal number integer">2</span><span class="punctuation">)</span><span class="operator">.</span><span class="name">sum</span><span class="punctuation">(</span><span class="name">axis</span><span class="operator">=</span><span class="literal number integer">1</span><span class="punctuation">)</span> + <span class="name">U</span> <span class="operator">=</span> <span class="operator">-</span><span class="punctuation">((</span><span class="name">P0</span><span class="punctuation">[:,</span><span class="literal number integer">0</span><span class="punctuation">]</span><span class="operator">-</span><span class="name">p</span><span class="punctuation">[</span><span class="literal number integer">0</span><span class="punctuation">])</span><span class="operator">*</span><span class="name">T</span><span class="punctuation">[:,</span><span class="literal number integer">0</span><span class="punctuation">]</span> <span class="operator">+</span> <span class="punctuation">(</span><span class="name">P0</span><span class="punctuation">[:,</span><span class="literal number integer">1</span><span class="punctuation">]</span><span class="operator">-</span><span class="name">p</span><span class="punctuation">[</span><span class="literal number integer">1</span><span class="punctuation">])</span><span class="operator">*</span><span class="name">T</span><span class="punctuation">[:,</span><span class="literal number integer">1</span><span class="punctuation">])</span> <span class="operator">/</span> <span class="name">L</span> + <span class="name">U</span> <span class="operator">=</span> <span class="name">U</span><span class="operator">.</span><span class="name">reshape</span><span class="punctuation">(</span><span class="name builtin">len</span><span class="punctuation">(</span><span class="name">U</span><span class="punctuation">),</span><span class="literal number integer">1</span><span class="punctuation">)</span> + <span class="name">D</span> <span class="operator">=</span> <span class="name">P0</span> <span class="operator">+</span> <span class="name">U</span><span class="operator">*</span><span class="name">T</span> <span class="operator">-</span> <span class="name">p</span> + <span class="keyword">return</span> <span class="name">np</span><span class="operator">.</span><span class="name">sqrt</span><span class="punctuation">((</span><span class="name">D</span><span class="operator">**</span><span class="literal number integer">2</span><span class="punctuation">)</span><span class="operator">.</span><span class="name">sum</span><span class="punctuation">(</span><span class="name">axis</span><span class="operator">=</span><span class="literal number integer">1</span><span class="punctuation">))</span> + +<span class="name">P0</span> <span class="operator">=</span> <span class="name">np</span><span class="operator">.</span><span class="name">random</span><span class="operator">.</span><span class="name">uniform</span><span class="punctuation">(</span><span class="operator">-</span><span class="literal number integer">10</span><span class="punctuation">,</span><span class="literal number integer">10</span><span class="punctuation">,(</span><span class="literal number integer">100</span><span class="punctuation">,</span><span class="literal number integer">2</span><span class="punctuation">))</span> +<span class="name">P1</span> <span class="operator">=</span> <span class="name">np</span><span class="operator">.</span><span class="name">random</span><span class="operator">.</span><span class="name">uniform</span><span class="punctuation">(</span><span class="operator">-</span><span class="literal number integer">10</span><span class="punctuation">,</span><span class="literal number integer">10</span><span class="punctuation">,(</span><span class="literal number integer">100</span><span class="punctuation">,</span><span class="literal number integer">2</span><span class="punctuation">))</span> +<span class="name">p</span> <span class="operator">=</span> <span class="name">np</span><span class="operator">.</span><span class="name">random</span><span class="operator">.</span><span class="name">uniform</span><span class="punctuation">(</span><span class="operator">-</span><span class="literal number integer">10</span><span class="punctuation">,</span><span class="literal number integer">10</span><span class="punctuation">,(</span> <span class="literal number integer">1</span><span class="punctuation">,</span><span class="literal number integer">2</span><span class="punctuation">))</span> +<span class="keyword">print</span> <span class="name">distance</span><span class="punctuation">(</span><span class="name">P0</span><span class="punctuation">,</span> <span class="name">P1</span><span class="punctuation">,</span> <span class="name">p</span><span class="punctuation">)</span> +</pre> +</li> +<li><p class="first">Consider 2 sets of points P0,P1 describing lines (2d) and a set of point P, +how to compute distance from each point j (P[j]) to each line i (P0[i],P1[i]) ?</p> +<pre class="code python literal-block"> +<span class="name">Answer</span> <span class="name">needed</span> <span class="name">actually</span> +</pre> +</li> </ol> </div> <div class="section" id="adept"> @@ -560,6 +560,33 @@ Artisan print np.unpackbits(I[:, np.newaxis], axis=1) +3. Consider 2 sets of points P0,P1 describing lines (2d) and a point p, how to + compute distance from p to each line i (P0[i],P1[i]) ? + + .. code-block:: python + + def distance(P0, P1, p): + T = P1 - P0 + L = (T**2).sum(axis=1) + U = -((P0[:,0]-p[0])*T[:,0] + (P0[:,1]-p[1])*T[:,1]) / L + U = U.reshape(len(U),1) + D = P0 + U*T - p + return np.sqrt((D**2).sum(axis=1)) + + P0 = np.random.uniform(-10,10,(100,2)) + P1 = np.random.uniform(-10,10,(100,2)) + p = np.random.uniform(-10,10,( 1,2)) + print distance(P0, P1, p) + + +4. Consider 2 sets of points P0,P1 describing lines (2d) and a set of point P, + how to compute distance from each point j (P[j]) to each line i (P0[i],P1[i]) ? + + .. code-block:: python + + Answer needed actually + + Adept =====