<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel rdf:about="https://community.wolfram.com">
    <title>Community RSS Feed</title>
    <link>https://community.wolfram.com</link>
    <description>RSS Feed for Wolfram Community showing any discussions tagged with Symbolic Computations sorted by most likes.</description>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2399430" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1063480" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2975371" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2850347" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/546818" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1664846" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1056910" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3166670" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/415820" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2961701" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/966115" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1718762" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1032663" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2261402" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2071183" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/215591" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1187128" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/980264" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2726860" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2406638" />
      </rdf:Seq>
    </items>
  </channel>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2399430">
    <title>Rogue wave: stable fluids algorithm for air/water interface simulation</title>
    <link>https://community.wolfram.com/groups/-/m/t/2399430</link>
    <description>*SUPPLEMENTARY WOLFRAM MATERIALS for the ARTICLE:*&#xD;
&amp;gt; Sergio Manzetti, Alexander Trounev (2021).&#xD;
&#xD;
&amp;gt; A Navier-Stokes model for Rogue wave simulation.&#xD;
&#xD;
&amp;gt; ResearchGate, Technical Report. https://www.researchgate.net/publication/354527324&#xD;
&#xD;
&#xD;
------&#xD;
&#xD;
![enter image description here][1]&#xD;
&#xD;
ABSTRACT&#xD;
--------------------------------------&#xD;
&#xD;
Rogue waves are anomalous phenomena occurring over large sea bodies, where they are said appear out of nowhere and disappear without a trace. Simulations of rogue waves have been carried over the last 40 years, with several models published. In this paper we investigate the formation of rogue waves by two models: I. the Navier-Stokes equation where we take into account density and viscosity gradient on the air-water interface due to diffusion and II. a Korteveg de Vries-type model for quantum jumps which we developed earlier. We derive also a stable fluids algorithm which we use to compute nonlinear waves interaction produced by the wind. The results are discussed and compared.&#xD;
&#xD;
This code solves problem of viscous incompressible flow with gravitational force in a rectangle with periodic boundary condition on the left and right side and with Dirichlet condition on the top and bottom side. &#xD;
In the initial condition fluid velocity is periodic wave, and density has unit step like distribution on the air/water interface. &#xD;
Some other application of this code has been discussed on https://mathematica.stackexchange.com/questions/246091/stable-fluids-code-for-electromagnetic-mixture-application&#xD;
&#xD;
This model has been discussed in our report  [A Navier-Stokes model for Rogue wave simulation][2]&#xD;
&#xD;
Two phase model of air-water interface&#xD;
--------------------------------------&#xD;
&#xD;
Let us consider the system of equations describing nonlinear waves on the air-water interface. As it well known the air and the water can be considered as viscous incompressible fluids with density $\rho_a, \rho_w$,  and dynamical viscosity $\mu_a, \mu_w$ consequently. Taking into account the gravity force and diffusion on the air-water interface, we have &#xD;
$$\nabla.\bf{u}=0\\&#xD;
 \frac{\partial \mathbf{u}}{\partial t}+(\mathbf{u}.\nabla)\mathbf{u}+\frac{\nabla P}{\rho_i}=\nu_i\nabla ^2\mathbf{u}+\mathbf{f}\\\&#xD;
 \frac{\partial \phi}{\partial t} +(\mathbf{u}.\nabla)\phi=\frac{\nu_i}{Sc_i}\nabla ^2\phi\\ &#xD;
$$&#xD;
Here it is indicated $\rho_i, i=a,w $ - air and water density, $\mathbf{u}=(u_x,u_y)$ - flow velocity,  $P$ - pressure; $\bf{f}$ - force acting on the volume of the air-water mixture; $\phi$ - the interface function describing the averaged density of the air-water mixture; $Sc_i$ - analog of the Schmidt number characterized water diffusion in the air and air diffusion in the water. Note that we considered averaged effect of mass transfer on the air-water interface including drops and bubbles. &#xD;
Let us define the Cartesian coordinate system so that the $y$ axis is directed against the direction of the gravitational acceleration vector and the $x$ axis is parallel to horizon. Let suppose that the water surface relief is described by the equation $y=r(t,x,y)$ - Figure 1.&#xD;
![Figure 1. Flow geometry on the air-water interface with waves of small (left) and large (right) amplitude][3]&#xD;
&#xD;
We set the boundary conditions for the flow parameters on the top and bottom part of the boundary layer and periodic boundary conditions by coordinate $x$ as follows:&#xD;
&#xD;
$$ y=0: \mathbf{u}=0,\phi=\rho_w\\&#xD;
 y=H: \mathbf{u}=(U_0,0), \phi=\rho_a\\&#xD;
 \mathbf{u}(t,0,y)=\mathbf{u}(t,L,y)\\&#xD;
 \phi(t,0,y)=\phi(t,L,y).&#xD;
$$&#xD;
Here $H$ is the height of the boundary layer,$U_0$ is the wind velocity, $L$ is the period of the wave tray.&#xD;
We assume that at the initial time the flow velocity and interface function are given by&#xD;
&#xD;
$$ t=0, y&amp;lt;H/2:u_x = 0, u_y=V_0 \sin(2 \pi n x/L), \phi =\rho_w\\ &#xD;
 t=0, y\ge H/2: u_x=U_0, u_y=V_0\sin (2 \pi n x/L), \phi =\rho_a\\&#xD;
 $$&#xD;
This problem can be solved with using numerical methods and an appropriate turbulence model. &#xD;
We have used stable fluids algorithm (Stam1999, Stam 2000) to solve 2D Navier-Stokes equations and to simulate nonlinear waves interaction on the air-water interface with a given wind velocity on the top of the boundary layer. While in the standard gravity wave theory the air-water interface is considered mainly as a potential flow, in our approach we take into account velocity, viscosity and density gradients on the interface. Since air/water density ratio is about $10^{-3}$ we have some challenging numerical problem. To solve this problem we made some simplifications in the basic Navier-Stokes equations. First, we suppose that velocity is a continues field at $t&amp;gt;0$ so that flow in the water and flow in the air is an united flow continuously distributed from the bottom to the top and the periodic one in the $x$ direction. We neglect by the surface tension due to large scale of the waves.  Therefore we don&amp;#039;t need any boundary condition on the air-water interface. Second, at $t&amp;gt;0$ we introduce continues density as $\rho=\phi$ to compute velocity field on every step. Third, we use stable fluid algorithm in time in the very specific order described below.&#xD;
&#xD;
&#xD;
Stable fluids algorithm&#xD;
-----------------------&#xD;
&#xD;
&#xD;
&#xD;
1) Solve advection equation with using boundary conditions, initial data from the previous step, and an implicit algorithm&#xD;
&#xD;
$$ \frac{\partial \mathbf{u}_1}{\partial t}+(\mathbf{u}_1.\nabla) \bf{u}_1=0 $$&#xD;
&#xD;
2) Solve diffusion equation with $\nu_i=\nu_i(\phi)$, initial data $\mathbf{u}_1$, boundary conditions  and with using, for example, Gauss-Seidel relaxation algorithm  &#xD;
&#xD;
$$ \frac{\partial \mathbf {u}_2}{\partial t}-\nu_i \nabla^2 \mathbf{u}_2=0$$&#xD;
&#xD;
here $$\nu_i(\phi)=\nu_w \phi ^k, k=-0.4029$$ for the air temperature of 20C.&#xD;
&#xD;
3)  Add force to the velocity field from the previous step as follows&#xD;
&#xD;
$$&#xD;
\mathbf{u}_3=\mathbf{u}_2+\mathbf{f} dt\\&#xD;
$$&#xD;
&#xD;
To simulate force acting on the volume of air-water mixture we used approximation &#xD;
$$ f_y=-\frac{(\rho_w-\phi)(\phi-\rho_w/2)(\phi-\rho_a)}{\rho_w^2(\rho_w-\rho_a)Fr^2}&#xD;
 $$&#xD;
4) Make projection step. Here we can use two models. First model is standard projection (Stam 1999)  by solving Poison equation&#xD;
$$ t&amp;gt;0, \nabla^2 q=\nabla . \bf{u}_3\\&#xD;
 \bf{u}_4=\bf{u}_3-\nabla q&#xD;
  $$&#xD;
Note, that this step  allows us to define divergent free velocity field. &#xD;
   &#xD;
5) Update velocity field $\bf{u}_4\longrightarrow \bf{u}_5$ with using boundary conditions.&#xD;
&#xD;
6) Make diffusion step with interface function by solving diffusion equation with initial condition from the previous step, with boundary conditions, and with $\nu=\nu_i(\phi)/Sc$ as follows  &#xD;
$$ \frac{\partial \phi_1}{\partial t}-\nu \nabla^2 \phi_1=0&#xD;
$$&#xD;
7) Make advection step by solving advection equation with initial data from step 6 with boundary conditions using  an implicit algorithm (from step 1, for example),  &#xD;
$$ \frac{\partial \phi_2}{\partial t}+(\bf{u}_5.\nabla) \phi_2=0&#xD;
 $$&#xD;
8) Update interface function with boundary conditions.&#xD;
&#xD;
9) Return to step 1 with updated velocity and interface function.&#xD;
&#xD;
This algorithm can be also used in some different order, for example, in the beginning we can compute step 3 (Stam1999). Also we can make steps 6-8 first, and then compute velocity field with steps 1-5. The question about stability of the stable fluids algorithm not really solved yet. From our experience, we can&amp;#039;t do arbitrary time step, but $dt$ is limiting by the grid size as usual for more precise computation. In our computations we have used $dt=2/N$ for $N\times N$ grid. In general case the numerical solution depends on the Froude number $Fr=\frac{U_0}{\sqrt{g L}}$, Reynolds number $Re=\frac{U_0 L}{\nu_w}$, Schmidt number and number of waves in the initial data. In our computations we fixed the Froude number, so that we can put $H=L=1$. We also fixed the Reynolds number, therefore we can put $U_0=1.5, V_0=0.5$. The algorithm 1-9 has been implemented with FDM  and compiled to C with using Mathematica 12.3.  &#xD;
&#xD;
Code to simulate air/water interface with $Re=10^4, Fr=1$&#xD;
----&#xD;
&#xD;
    rhoWater20C = 1.027; nuW20C = 0.01007; rhoAir20C = 0.001204; nuA20C = 0.151;dif = 1/10000; pec = .1; U0 = 1.5; V0 = .5; dn0 = 0.997658; dn1 = 0.514102; kap = 1; n = 81; Fr = 1; F0 = 1; n1 = n + 1; sm = 600; r = 20; den = &#xD;
     ConstantArray[dn1 (1 + dn0 Tanh[-kap Range[-n1/2, n1/2]]), n1];u0 = ConstantArray[0, {n1, n1}]; Do[&#xD;
      u0[[i, j]] = U0 (1 + Tanh[kap (j - n1/2)])/2;, {i, n1}, {j, n1}];&#xD;
     v0 = ConstantArray[0., {n1, n1}]; Do[&#xD;
      v0[[i, j]] = V0 Sin[10 Pi (i - 1)/n];, {i, n1}, {j, n1}];periodic[n_, up_, ud_, ub_] := &#xD;
        Module[{bd = ub}, Do[bd[[1, i]] = .5 (bd[[n, i]] + bd[[2, i]]);&#xD;
          bd[[n + 1, i]] = bd[[1, i]]; bd[[i, 1]] = ud;&#xD;
          bd[[i, n + 1]] = up;, {i, 2, n}];&#xD;
         bd[[1, 1]] = .5 (bd[[2, 1]] + bd[[1, 2]]);&#xD;
         bd[[n + 1, n + 1]] = .5 (bd[[n, n + 1]] + bd[[n + 1, n]]);&#xD;
         bd[[n + 1, 1]] = .5 (bd[[n, 1]] + bd[[n + 1, 2]]);&#xD;
         bd[[1, n + 1]] = .5 (bd[[1, n]] + bd[[2, n + 1]]); bd];&#xD;
      &#xD;
      diffuse[n_, r_, a_, c_, c0_] := &#xD;
        Module[{c1 = c}, &#xD;
         Do[Do[Do[&#xD;
             c1[[i, j]] = (c0[[i, &#xD;
                   j]] + (a/den[[i, j]]^.4029) (c1[[i - 1, j]] + &#xD;
                     c1[[i + 1, j]] + c1[[i, j - 1]] + &#xD;
                     c1[[i, j + 1]]))/(1 + 4 a/den[[i, j]]^.4029);, {j, 2, &#xD;
              n}];, {i, 2, n}];&#xD;
          Do[c1[[1, i]] = c1[[n, i]]; c1[[n + 1, i]] = c1[[2, i]];&#xD;
           c1[[i, 1]] = c0[[i, 1]];&#xD;
           c1[[i, n + 1]] = c0[[i, n + 1]];, {i, 2, n}];&#xD;
          c1[[1, 1]] = .5 (c1[[2, 1]] + c1[[1, 2]]);&#xD;
          c1[[n + 1, n + 1]] = .5 (c1[[n, n + 1]] + c1[[n + 1, n]]);&#xD;
          c1[[n + 1, 1]] = .5 (c1[[n, 1]] + c1[[n + 1, 2]]);&#xD;
          c1[[1, n + 1]] = .5 (c1[[1, n]] + c1[[2, n + 1]]);, {k, 0, r}];&#xD;
         c1];&#xD;
      &#xD;
      advect[n_, d0_, u_, v_, dt_] := &#xD;
        Module[{x, y, d1, dt0, i0, i1, j0, j1, s0, s1, t0, t1}, &#xD;
         d1 = ConstantArray[0, {n + 1, n + 1}]; dt0 = dt n;&#xD;
         Do[Do[x = i - dt0 u[[i, j]]; y = j - dt0 v[[i, j]];&#xD;
            i0 = Which[x &amp;lt;= 1, 1, 1 &amp;lt; x &amp;lt; n, Floor[x], True, n];&#xD;
            i1 = i0 + 1;&#xD;
            j0 = Which[y &amp;lt;= 1, 1, 1 &amp;lt; y &amp;lt; n, Floor[y], True, n];&#xD;
            j1 = j0 + 1; s1 = x - i0; s0 = 1 - s1; t1 = y - j0; t0 = 1 - t1;&#xD;
            d1[[i, j]] = &#xD;
             s0 (t0 d0[[i0, j0]] + t1 d0[[i0, j1]]) + &#xD;
              s1 (t0 d0[[i1, j0]] + t1 d0[[i1, j1]]);, {j, 1, n + 1}];, {i, &#xD;
           1, n + 1}]; d1];&#xD;
      &#xD;
      project[n_, r_, u0_, v0_, u_, v_] := &#xD;
        Module[{ux = u, vy = v, div, p}, &#xD;
         p = ConstantArray[0, {n + 1, n + 1}];&#xD;
         div = ConstantArray[0, {n + 1, n + 1}];&#xD;
         ux = ConstantArray[0, {n + 1, n + 1}];&#xD;
         vy = ConstantArray[0, {n + 1, n + 1}];&#xD;
         Do[div[[i, &#xD;
             j]] = -.5/&#xD;
              n (u0[[i + 1, j]] - u0[[i - 1, j]] + v0[[i, 1 + j]] - &#xD;
               v0[[i, j - 1]]);, {i, 2, n}, {j, 2, n}];&#xD;
         Do[Do[Do[&#xD;
             p[[i, j]] = (div[[i, &#xD;
                   j]] + (p[[i - 1, j]] + p[[i + 1, j]] + p[[i, j - 1]] + &#xD;
                    p[[i, j + 1]]))/4;, {j, 2, n}], {i, 2, n}];, {k, 0, r}];&#xD;
         Do[ux[[i, j]] = u0[[i, j]] - .5 n (p[[i + 1, j]] - p[[i - 1, j]]);&#xD;
          vy[[i, j]] = &#xD;
           v0[[i, j]] - .5 n (p[[i, j + 1]] - p[[i, j - 1]]);, {i, 2, &#xD;
           n}, {j, 2, n}]; {ux, vy}];&#xD;
      &#xD;
      Fx[t_, x_, y_] := 0;&#xD;
      Fy[t_, x_, y_] := -1/Fr^2;&#xD;
      &#xD;
      onestep[n_, step_, r_, a_, uin_, vin_, dt_, c_] := &#xD;
       Module[{u1, v1, f1, f2, u, v, u0, v0}, &#xD;
        f1 = ConstantArray[0, {n + 1, n + 1}];&#xD;
        f2 = ConstantArray[0., {n + 1, n + 1}];&#xD;
        u0 = ConstantArray[0., {n + 1, n + 1}];&#xD;
        v0 = ConstantArray[0., {n + 1, n + 1}];&#xD;
        u = ConstantArray[0., {n + 1, n + 1}];&#xD;
        v = ConstantArray[0., {n + 1, n + 1}];&#xD;
        u1 = ConstantArray[0., {n + 1, n + 1}];&#xD;
        v1 = ConstantArray[0., {n + 1, n + 1}]; u0 = uin; v0 = vin; Do[&#xD;
         f2[[i, j]] = &#xD;
           1/Fr^2 (den[[i, j]] - rhoWater20C/2) (rhoWater20C - &#xD;
              den[[i, j]]) (den[[i, j]] - rhoAir20C)/(rhoWater20C - &#xD;
                rhoAir20C)/rhoWater20C^2;, {i, 2, n}, {j, 2, n}];&#xD;
        v0 += f2 dt;&#xD;
        u0 = advect[n, u0, u0, v0, dt]; v0 = advect[n, v0, u0, v0, dt]; &#xD;
        mnV = 0;&#xD;
        u0 = periodic[n, U0, 0, u0]; v0 = periodic[n, mnV, mnV, v0];&#xD;
        u0 = diffuse[n, r, a, c, u0]; v0 = diffuse[n, r, a, c, v0];&#xD;
        u0 = periodic[n, U0, 0, u0]; v0 = periodic[n, mnV, mnV, v0];&#xD;
        {u1, v1} = project[n, r, u0, v0, u, v];&#xD;
        u0 = periodic[n, U0, 0, u1]; &#xD;
        v0 = periodic[n, mnV, mnV, v1]; {u0, v0}]&#xD;
      &#xD;
      cf = With[{cg = Compile`GetElement, hp = HoldPattern, &#xD;
          dv = DownValues}, &#xD;
         Hold@Compile[{{u0argu, _Real, 2}, {v0argu, _Real, &#xD;
                   2}, {denargu, _Real, &#xD;
                   2}, {sm, _Integer}, {n, _Integer}, {r, _Integer}, dif, &#xD;
                  pec, F0}, &#xD;
                 Module[{u0 = u0argu, v0 = v0argu, uu, vv, dd, &#xD;
                   den = denargu, c = Table[0., {n + 1}, {n + 1}], &#xD;
                   dt = 40./n^2, a, dnup = den[[1, n + 1]], &#xD;
                   dnd = den[[1, 1]]}, a = dt dif n n;&#xD;
                  uu = vv = dd = Table[0., {sm + 1}, {n + 1}, {n + 1}];&#xD;
                  Do[&#xD;
                   &#xD;
                   den = advect[n, den, u0, v0, dt];&#xD;
                   den = periodic[n, dnup, dnd, den]; &#xD;
                   den = diffuse[n, r, a/pec, c, den];&#xD;
                   den = periodic[n, dnup, dnd, den];&#xD;
                   &#xD;
                   dd[[step + 1]] = den; {u0, v0} = &#xD;
                    onestep[n, step, r, a, u0, v0, dt, c];&#xD;
                   uu[[step + 1]] = u0;&#xD;
                   vv[[step + 1]] = v0;, {step, 0, sm}]; {uu, vv, dd}], &#xD;
                 CompilationTarget -&amp;gt; C, RuntimeOptions -&amp;gt; &amp;#034;Speed&amp;#034;] /. &#xD;
               dv@onestep /. &#xD;
              Flatten[dv /@ {Fx, Fy, advect, diffuse, periodic, project}] /. &#xD;
             hp@ConstantArray[c_, {i_, j_}] :&amp;gt; Table[0., {i}, {j}] /. &#xD;
            hp@Part[a__] :&amp;gt; cg[a] /. hp[cg[a__] = rhs_] :&amp;gt; (Part[a] = rhs) //&#xD;
           ReleaseHold];&#xD;
&#xD;
Visualization&#xD;
-------------&#xD;
&#xD;
    rst = cf[u0, v0, den, sm, n, r, dif, pec, F0];Do[lstu[k] = &#xD;
       Flatten[Table[{{(i - 1)/n, (j - 1)/n}, rst[[1, k, i, j]]}, {i, &#xD;
          n1}, {j, n1}], 1]; &#xD;
      lstv[k] = &#xD;
       Flatten[Table[{{(i - 1)/n, (j - 1)/n}, rst[[2, k, i, j]]}, {i, &#xD;
          n1}, {j, n1}], 1];, {k, sm}];&#xD;
    Do[Uvel[i] = Interpolation[lstu[i], InterpolationOrder -&amp;gt; 3];, {i, 1, &#xD;
       sm}];&#xD;
    Do[Vvel[i] = Interpolation[lstv[i], InterpolationOrder -&amp;gt; 3];, {i, 1, &#xD;
      sm}]; Do[lst4[k] = &#xD;
       Flatten[Table[{{(i - 1)/n, (j - 1)/n}, rst[[3, k, i, j]]}, {i, &#xD;
          n1}, {j, n1}], 1];, {k, sm}];&#xD;
    Do[rh[k] = Interpolation[lst4[k], InterpolationOrder -&amp;gt; 3];, {k, sm}];{ContourPlot[Uvel[10][x, y], {x, 0, 1}, {y, 0, 1}, &#xD;
      ColorFunction -&amp;gt; &amp;#034;BlueGreenYellow&amp;#034;, Frame -&amp;gt; False, &#xD;
      PlotRange -&amp;gt; All, ImageSize -&amp;gt; Small, MaxRecursion -&amp;gt; 2, &#xD;
      Contours -&amp;gt; 15, ContourStyle -&amp;gt; Yellow, PlotLegends -&amp;gt; Automatic], &#xD;
     ContourPlot[Vvel[10][x, y], {x, 0, 1}, {y, 0, 1}, &#xD;
      ColorFunction -&amp;gt; &amp;#034;BlueGreenYellow&amp;#034;, Frame -&amp;gt; False, &#xD;
      PlotRange -&amp;gt; All, ImageSize -&amp;gt; Small, MaxRecursion -&amp;gt; 2, &#xD;
      Contours -&amp;gt; 15, ContourStyle -&amp;gt; Yellow, PlotLegends -&amp;gt; Automatic], &#xD;
     ContourPlot[1 - rh[10][x, y], {x, 0, 1}, {y, 0, 1}, &#xD;
      ColorFunction -&amp;gt; &amp;#034;BlueGreenYellow&amp;#034;, Frame -&amp;gt; False, &#xD;
      PlotRange -&amp;gt; All, ImageSize -&amp;gt; Small, MaxRecursion -&amp;gt; 2, &#xD;
      Contours -&amp;gt; 15, ContourStyle -&amp;gt; Yellow, PlotLegends -&amp;gt; Automatic], &#xD;
     ContourPlot[Uvel[sm][x, y], {x, 0, 1}, {y, 0, 1}, &#xD;
      ColorFunction -&amp;gt; &amp;#034;BlueGreenYellow&amp;#034;, Frame -&amp;gt; False, &#xD;
      PlotRange -&amp;gt; All, ImageSize -&amp;gt; Small, MaxRecursion -&amp;gt; 2, &#xD;
      Contours -&amp;gt; 15, ContourStyle -&amp;gt; Yellow, PlotLegends -&amp;gt; Automatic], &#xD;
     ContourPlot[Vvel[sm][x, y], {x, 0, 1}, {y, 0, 1}, &#xD;
      ColorFunction -&amp;gt; &amp;#034;BlueGreenYellow&amp;#034;, Frame -&amp;gt; False, &#xD;
      PlotRange -&amp;gt; All, ImageSize -&amp;gt; Small, MaxRecursion -&amp;gt; 2, &#xD;
      Contours -&amp;gt; 15, ContourStyle -&amp;gt; Yellow, PlotLegends -&amp;gt; Automatic], &#xD;
     ContourPlot[1 - rh[sm][x, y], {x, 0, 1}, {y, 0, 1}, &#xD;
      ColorFunction -&amp;gt; &amp;#034;BlueGreenYellow&amp;#034;, Frame -&amp;gt; False, &#xD;
      PlotRange -&amp;gt; All, ImageSize -&amp;gt; Small, MaxRecursion -&amp;gt; 2, &#xD;
      Contours -&amp;gt; 8, ContourStyle -&amp;gt; Yellow, PlotLegends -&amp;gt; Automatic]}&#xD;
In this Figure are shown velocity components $u_x$ (left), $u_y$ (middle) and 1- density (right) on step 10 (upper line) and on final step $sm=600$&#xD;
![Figure 2][4]  &#xD;
&#xD;
UPDATE&#xD;
----------&#xD;
&#xD;
Next step is to animate wave transformation using interface function. We can show velocity field over density as follows&#xD;
&#xD;
    Show[ContourPlot[1 - rh[sm][x, y]/rhoWater20C, {x, 0, 1}, {y, 0, 1}, &#xD;
      PlotRange -&amp;gt; All, ColorFunction -&amp;gt; &amp;#034;BlueGreenYellow&amp;#034;, Contours -&amp;gt; 8,&#xD;
       ContourStyle -&amp;gt; Yellow, Frame -&amp;gt; False, PlotLegends -&amp;gt; Automatic], &#xD;
     StreamPlot[{Uvel[sm][x, y], Vvel[sm][x, y]}, {x, 0, 1}, {y, 0, 1}, &#xD;
      PlotRange -&amp;gt; All, StreamColorFunction -&amp;gt; None, VectorPoints -&amp;gt; Fine,&#xD;
       VectorColorFunction -&amp;gt; Hue, PlotLegends -&amp;gt; Automatic, &#xD;
      StreamColorFunctionScaling -&amp;gt; True, StreamStyle -&amp;gt; LightGray]]&#xD;
![Figure 3][5]&#xD;
&#xD;
We can also compute frames for animation with using interface function  &#xD;
&#xD;
    frames=Table[ContourPlot[1 - rh[i][x, y], {x, 0, 1}, {y, 0, 1}, &#xD;
      ColorFunction -&amp;gt; &amp;#034;BlueGreenYellow&amp;#034;, Frame -&amp;gt; False, &#xD;
      PlotRange -&amp;gt; All, ImageSize -&amp;gt; Small, MaxRecursion -&amp;gt; 2, &#xD;
      Contours -&amp;gt; 8, ContourStyle -&amp;gt; Yellow, PlotLabel -&amp;gt; i], {i, 20, sm, &#xD;
      20}]; Animate[frames]&#xD;
![Figure 4][6]&#xD;
&#xD;
&#xD;
&#xD;
&#xD;
References&#xD;
----------&#xD;
Jos Stam. Stable fluids. In Computer Graphics Proceedings Annual Conference Series, Los Angeles, Aug. 3&amp;#x2013;8, 199.&#xD;
&#xD;
Jos Stam. Interacting with smoke and fire in real time. Communications&#xD;
of the ACM, 43(7):77&amp;#x2013;83, July 2000.&#xD;
      &#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=RogueWave.gif&amp;amp;userId=11733&#xD;
  [2]: https://www.researchgate.net/publication/354527324_A_Navier-Stokes_model_for_Rogue_wave_simulation&#xD;
  [3]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Figure1.jpg&amp;amp;userId=1218692&#xD;
  [4]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Figure2.jpg&amp;amp;userId=1218692&#xD;
  [5]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Figure3.jpg&amp;amp;userId=1218692&#xD;
  [6]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Fr3v3.AW1300Q5.gif&amp;amp;userId=1218692</description>
    <dc:creator>Alexander Trounev</dc:creator>
    <dc:date>2021-11-03T06:49:53Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1063480">
    <title>Formula for computing sqrt(2) of binary numbers</title>
    <link>https://community.wolfram.com/groups/-/m/t/1063480</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/373ccb1d-e97f-40ec-aa0a-0d3001c4728d</description>
    <dc:creator>Mariusz Iwaniuk</dc:creator>
    <dc:date>2017-04-16T22:38:51Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2975371">
    <title>[WSG23] Daily Study Group: Solving ODEs and PDEs</title>
    <link>https://community.wolfram.com/groups/-/m/t/2975371</link>
    <description>A Wolfram U Daily Study Group on &amp;#034;Solving ODEs and PDEs&amp;#034; begins on Monday, August 8, 2023.&#xD;
&#xD;
Join me and a cohort of fellow enthusiasts to learn about the techniques for solving ordinary differential equations (ODEs) and partial differential equations (PDEs) using Wolfram Language. Learn how to use the DSolve (for symbolic solutions) and the NDSolve (a general numerical differential equation solver) functions. Topics covered include the numerical method of lines, the finite element method (FEM), the use and construction of meshes, boundary value problems and eigenvalue problems.&#xD;
&#xD;
Participate in live Q&amp;amp;A and review your understanding through interactive in-session polls. Complete quizzes at the end of the study group to get your certificate of program completion.&#xD;
&#xD;
August 7-11, 2023, 11am-12pm CT (4-5pm GMT)&#xD;
&#xD;
&amp;gt; [**REGISTER HERE**][1]&#xD;
&#xD;
Please feel free to use this thread to collaborate and share ideas, materials and links to other resources with fellow learners.&#xD;
&#xD;
I look forward to seeing you online!&#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
&#xD;
  [1]: https://www.bigmarker.com/series/daily-study-group-wsg41&#xD;
  [2]: https://community.wolfram.com//c/portal/getImageAttachment?filename=WolframUBanner.jpeg&amp;amp;userId=20103</description>
    <dc:creator>Luke Titus</dc:creator>
    <dc:date>2023-07-24T18:32:33Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2850347">
    <title>[CALL] for challenging univariate symbolic integrals</title>
    <link>https://community.wolfram.com/groups/-/m/t/2850347</link>
    <description>![enter image description here][1]&#xD;
&#xD;
**This is a call for univariate indefinite or definite exact integrals that cannot immediately computed in Mathematica and Wolfram Language.** Submitted integrals will be collected for potential new event where they will be discussed and solved. You may refer to our previous event, which is showcased on the Wolfram Community post: https://community.wolfram.com/groups/-/m/t/2821053.  &#xD;
Do you have an integral that cannot be computed directly using [ **Integrate** ][2]? Does the following apply to this integral?&#xD;
&#xD;
## Submission rules DOs&#xD;
&#xD;
- Univariate (terms in a single variable)&#xD;
- Exact (use only symbols, integers, or exact fractions).&#xD;
- Definite integrals ([1][3], [2][4])&#xD;
- Indefinite Integrals ([1][5], [2][6])&#xD;
- Keep comments directly related to the topics.&#xD;
&#xD;
## Submission rules DON&amp;#039;Ts&#xD;
&#xD;
- Don&amp;#039;t submit those that Mathematica / Wolfram Language can do directly using Integrate[ ].&#xD;
- Don&amp;#039;t submit numerical integrals (NIntegrate[ ])&#xD;
- Don&amp;#039;t submit decimal approximate numbers in Integrate[ ].&#xD;
- Don&amp;#039;t submit images, only copyable code.&#xD;
&#xD;
&amp;gt; **If you have such an integral - please put it in a comment below!**&#xD;
&#xD;
## Examples of submission formats&#xD;
&#xD;
**You can add a notebook with your integral:**&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][7]&#xD;
&#xD;
**You can post a formatted code:**&#xD;
&#xD;
    Integrate[Gamma[s] z^-s, s]&#xD;
&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Integratecall2.png&amp;amp;userId=20103&#xD;
  [2]: https://reference.wolfram.com/language/ref/Integrate.html&#xD;
  [3]: https://mathworld.wolfram.com/DefiniteIntegral.html&#xD;
  [4]: https://reference.wolfram.com/language/tutorial/Calculus.html#28510&#xD;
  [5]: https://mathworld.wolfram.com/IndefiniteIntegral.html&#xD;
  [6]: https://reference.wolfram.com/language/tutorial/Calculus.html#6667&#xD;
  [7]: https://www.wolframcloud.com/obj/5dc8fa8f-22d3-4f02-baa1-38f86e43ab9b</description>
    <dc:creator>Oleg Marichev</dc:creator>
    <dc:date>2023-03-13T15:01:44Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/546818">
    <title>Given an exact formula get probability distribution with matching PDF?</title>
    <link>https://community.wolfram.com/groups/-/m/t/546818</link>
    <description>[Crossposting][1] here to get a wider opinion. So, given some data, *Mathematica* 10.2 can now attempt to figure out what probability distribution might have produced it. Cool! But suppose that, instead of having data, we have something that is in some ways better -- a formula. Let&amp;#039;s call it $f$. We suspect -- perhaps because $f$ is non-negative over some domain and because the integral of $f$ over that domain is 1 --  that $f$ is actually the PDF of some distribution (Normal, Lognormal, Gamma, Weibull, etc.) or some relatively simple transform of that distribution. &#xD;
&#xD;
Is there any way that *Mathematica* can help figure out the distribution (or simple transform) whose PDF is the same as $f$?&#xD;
&#xD;
Example: Consider the following formula:&#xD;
&#xD;
    1/(2*E^((-m + Log[5])^2/8)*Sqrt[2*Pi])&#xD;
&#xD;
$$\frac{e^{-\frac{1}{8} (\log (5)-m)^2}}{2 \sqrt{2 \pi }}$$&#xD;
&#xD;
As it happens -- and as I discovered with some research and guesswork -- this formula is the PDF of `NormalDistribution[Log[5], 2]` evaluated at $m$. But is there a better way than staring or guessing to discover this fact?  That is, help me write `FindExactDistribution[f_, params_]`.&#xD;
&#xD;
Notes&#xD;
---&#xD;
&#xD;
 - The motivation for the problem comes from thinking about Conjugate Prior distributions but I suspect it might have a more general application. &#xD;
&#xD;
 - One could start with mapping PDF evaluated at $m$ over a variety of continuous distributions.  And if I did this I would at some point get to what I will call $g$, which is the PDF or the `NormalDistribution` with parameters $a$ and $b$ evaluated at $m$.&#xD;
&#xD;
        1/(b*E^((-a + m)^2/(2*b^2))*Sqrt[2*Pi])&#xD;
&#xD;
$$\frac{e^{-\frac{(m-a)^2}{2 b^2}}}{\sqrt{2 \pi } b}$$&#xD;
&#xD;
But unless I knew that if I replaced $a$ by `Log[5]` and $b$ by $2$ that I would get $f$, this fact would not mean a lot to me. I suppose I could look at the `TreeForm` of $f$ and $g$ and I would notice certain similarities, and that might be a hint, but I am not sure how to make much progress beyond that observation. Ultimately, the problem looks to be about finding substitutions in parts of a tree ($g$) which, after evaluation, yield a tree that matches a target $f$. I have the suspicion that this is a difficult problem with an NKS flavor but one for which *Mathematica* and its ability to transform expressions might be well suited.&#xD;
&#xD;
&#xD;
  [1]: http://mathematica.stackexchange.com/q/91408/13</description>
    <dc:creator>Seth Chandler</dc:creator>
    <dc:date>2015-08-12T18:27:19Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1664846">
    <title>Famous computable theorems of geometry</title>
    <link>https://community.wolfram.com/groups/-/m/t/1664846</link>
    <description>[GeometricScene][1] and [FindGeometricConjectures][2] are  two of my favorite new functions in Wolfram Language V12. V12 provides innovative automated capabilities to draw and reason about abstractly described scenes in the plane.&#xD;
&#xD;
I also remember that I&amp;#039;d proved  famous theorems of geometry over many days when I was a junior high school student. I will show nine theorems, including those in the Documentation Center and [WOLFRAM blog][3].&#xD;
&#xD;
## Thaless Theorem ##&#xD;
If A, B, and C are distinct points on a circle where the line AC is a diameter, then the angle \[Angle]ABC is a right angle.&#xD;
&#xD;
    gs = GeometricScene[{&amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;, &amp;#034;O&amp;#034;}, &#xD;
       {Triangle[{&amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;}], &#xD;
        CircleThrough[{&amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;}, &amp;#034;O&amp;#034;],&#xD;
        &amp;#034;O&amp;#034; == Midpoint[{&amp;#034;A&amp;#034;, &amp;#034;C&amp;#034;}],&#xD;
        Style[Line[{&amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;}], Orange],&#xD;
        Style[Line[{&amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;}], Orange]&#xD;
        } &#xD;
       ];&#xD;
    RandomInstance[gs]&#xD;
    FindGeometricConjectures[gs][&amp;#034;Conclusions&amp;#034;]&#xD;
&#xD;
![enter image description here][4]&#xD;
![enter image description here][5]&#xD;
&#xD;
## Napoleons Theorem ##&#xD;
If regular triangles are constructed on the sides of any triangle, either all outward or all inward, the lines connecting the centres of those regular triangles themselves form an regular triangle.&#xD;
&#xD;
    gs = GeometricScene[{&amp;#034;C&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;A&amp;#034;, &amp;#034;C&amp;#039;&amp;#034;, &amp;#034;B&amp;#039;&amp;#034;, &amp;#034;A&amp;#039;&amp;#034;, &amp;#034;Oc&amp;#034;, &amp;#034;Ob&amp;#034;, &#xD;
        &amp;#034;Oa&amp;#034;},&#xD;
       {Triangle[{&amp;#034;C&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;A&amp;#034;}],&#xD;
        TC == Triangle[{&amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;C&amp;#039;&amp;#034;}],&#xD;
        TB == Triangle[{&amp;#034;C&amp;#034;, &amp;#034;A&amp;#034;, &amp;#034;B&amp;#039;&amp;#034;}],&#xD;
        TA == Triangle[{&amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;, &amp;#034;A&amp;#039;&amp;#034;}],&#xD;
        GeometricAssertion[{TC, TB, TA}, &amp;#034;Regular&amp;#034;],&#xD;
        &amp;#034;Oc&amp;#034; == TriangleCenter[TC, &amp;#034;Centroid&amp;#034;],&#xD;
        &amp;#034;Ob&amp;#034; == TriangleCenter[TB, &amp;#034;Centroid&amp;#034;],&#xD;
        &amp;#034;Oa&amp;#034; == TriangleCenter[TA, &amp;#034;Centroid&amp;#034;],&#xD;
        Style[Triangle[{&amp;#034;Oc&amp;#034;, &amp;#034;Ob&amp;#034;, &amp;#034;Oa&amp;#034;}], Orange]}&#xD;
       ];&#xD;
    RandomInstance[gs]&#xD;
    FindGeometricConjectures[gs][&amp;#034;Conclusions&amp;#034;]&#xD;
&#xD;
![enter image description here][6]&#xD;
![enter image description here][7]&#xD;
&#xD;
## Finsler-Hadwiger Theorem  ##&#xD;
ABCD and A BB CC DD are two squares with common vertex A. Let Q and S be the midpoints of BB D and DD B respectively, and let R and T be the centers of the two squares. Then the quadrilateral QRST is a square as well.&#xD;
&#xD;
    gs = GeometricScene[{&amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;, &amp;#034;D&amp;#034;, &amp;#034;BB&amp;#034;, &amp;#034;CC&amp;#034;, &amp;#034;DD&amp;#034;, &amp;#034;Q&amp;#034;, &amp;#034;R&amp;#034;, &amp;#034;S&amp;#034;, &amp;#034;T&amp;#034;}, &#xD;
       {GeometricAssertion[{Polygon[{&amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;, &amp;#034;D&amp;#034;}], &#xD;
          Polygon[{&amp;#034;A&amp;#034;, &amp;#034;BB&amp;#034;, &amp;#034;CC&amp;#034;, &amp;#034;DD&amp;#034;}]}, &amp;#034;Regular&amp;#034;, &amp;#034;Counterclockwise&amp;#034;],&#xD;
        &amp;#034;Q&amp;#034; == Midpoint[{&amp;#034;BB&amp;#034;, &amp;#034;D&amp;#034;}],&#xD;
        &amp;#034;R&amp;#034; == Midpoint[{&amp;#034;A&amp;#034;, &amp;#034;C&amp;#034;}],&#xD;
        &amp;#034;S&amp;#034; == Midpoint[{&amp;#034;B&amp;#034;, &amp;#034;DD&amp;#034;}],&#xD;
        &amp;#034;T&amp;#034; == Midpoint[{&amp;#034;A&amp;#034;, &amp;#034;CC&amp;#034;}],&#xD;
        Style[Polygon[{&amp;#034;Q&amp;#034;, &amp;#034;R&amp;#034;, &amp;#034;S&amp;#034;, &amp;#034;T&amp;#034;}], Orange]}];&#xD;
    RandomInstance[gs]&#xD;
    FindGeometricConjectures[gs][&amp;#034;Conclusions&amp;#034;]&#xD;
&#xD;
![enter image description here][8]&#xD;
![enter image description here][9]&#xD;
&#xD;
## Echols Theorem ##&#xD;
The midpoints of AD, BE, and CF in two equilateral triangles ABC and DEF form a regular triangle.&#xD;
&#xD;
    gs = GeometricScene[{&amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;, &amp;#034;D&amp;#034;, &amp;#034;E&amp;#034;, &amp;#034;F&amp;#034;, &amp;#034;L&amp;#034;, &amp;#034;M&amp;#034;, &amp;#034;N&amp;#034;},&#xD;
       {T1 == Triangle[{&amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;}],&#xD;
        T2 == Triangle[{&amp;#034;D&amp;#034;, &amp;#034;E&amp;#034;, &amp;#034;F&amp;#034;}],&#xD;
        GeometricAssertion[{T1, T2}, &amp;#034;Regular&amp;#034;], &#xD;
        &amp;#034;L&amp;#034; == Midpoint[{&amp;#034;A&amp;#034;, &amp;#034;D&amp;#034;}],&#xD;
        &amp;#034;M&amp;#034; == Midpoint[{&amp;#034;B&amp;#034;, &amp;#034;E&amp;#034;}],&#xD;
        &amp;#034;N&amp;#034; == Midpoint[{&amp;#034;C&amp;#034;, &amp;#034;F&amp;#034;}],&#xD;
        Style[Triangle[{&amp;#034;L&amp;#034;, &amp;#034;M&amp;#034;, &amp;#034;N&amp;#034;}], Orange]&#xD;
        }&#xD;
       ];&#xD;
    RandomInstance[gs]&#xD;
    FindGeometricConjectures[gs][&amp;#034;Conclusions&amp;#034;]&#xD;
&#xD;
![enter image description here][10]&#xD;
![enter image description here][11]&#xD;
&#xD;
## Simson Theorem &amp;amp; Steiner Theorem ##&#xD;
Simson&amp;#039;s Theorem states that ABC and a point P on its circumcircle, the three closest points to P on lines AB, AC, and BC are collinear. Steiner&amp;#039;s Theorem states that if the vertical center of triangle ABC is H, the Simson line passes through the midpoint of PH.&#xD;
&#xD;
    gs = GeometricScene[{&amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;, &amp;#034;P&amp;#034;, &amp;#034;L&amp;#034;, &amp;#034;M&amp;#034;, &amp;#034;N&amp;#034;, &amp;#034;H&amp;#034;, &amp;#034;S&amp;#034;},&#xD;
       {CircleThrough[{&amp;#034;P&amp;#034;, &amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;}],&#xD;
        &amp;#034;L&amp;#034; \[Element] InfiniteLine[{&amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;}],&#xD;
        &amp;#034;M&amp;#034; \[Element] InfiniteLine[{&amp;#034;C&amp;#034;, &amp;#034;A&amp;#034;}],&#xD;
        &amp;#034;N&amp;#034; \[Element] InfiniteLine[{&amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;}],&#xD;
        PlanarAngle[{&amp;#034;P&amp;#034;, &amp;#034;L&amp;#034;, &amp;#034;B&amp;#034;}] == 90 \[Degree],&#xD;
        PlanarAngle[{&amp;#034;P&amp;#034;, &amp;#034;M&amp;#034;, &amp;#034;C&amp;#034;}] == 90 \[Degree],&#xD;
        PlanarAngle[{&amp;#034;P&amp;#034;, &amp;#034;N&amp;#034;, &amp;#034;A&amp;#034;}] == 90 \[Degree], &#xD;
        Style[InfiniteLine[{&amp;#034;L&amp;#034;, &amp;#034;M&amp;#034;}], Orange],&#xD;
        GeometricAssertion[{InfiniteLine[{&amp;#034;A&amp;#034;, &amp;#034;H&amp;#034;}], Line[{&amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;}]}, &#xD;
         &amp;#034;Perpendicular&amp;#034;],&#xD;
        GeometricAssertion[{InfiniteLine[{&amp;#034;B&amp;#034;, &amp;#034;H&amp;#034;}], Line[{&amp;#034;A&amp;#034;, &amp;#034;C&amp;#034;}]}, &#xD;
         &amp;#034;Perpendicular&amp;#034;],&#xD;
        Style[Line[{&amp;#034;P&amp;#034;, &amp;#034;H&amp;#034;}], Orange],&#xD;
        Line[{&amp;#034;P&amp;#034;, &amp;#034;S&amp;#034;, &amp;#034;H&amp;#034;}], Line[{&amp;#034;L&amp;#034;, &amp;#034;S&amp;#034;, &amp;#034;M&amp;#034;}]&#xD;
        }&#xD;
       ];&#xD;
    RandomInstance[gs]&#xD;
    FindGeometricConjectures[gs][&amp;#034;Conclusions&amp;#034;]&#xD;
&#xD;
![enter image description here][12]&#xD;
![enter image description here][13]&#xD;
&#xD;
## Aubel Theorem ##&#xD;
Starting with a given quadrilateral (a polygon having four sides), construct a square on each side.The two line segments between the centers of opposite squares are of equal lengths and are at right angles to one another.&#xD;
&#xD;
    gs = GeometricScene[{&amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;, &amp;#034;D&amp;#034;, &amp;#034;A&amp;#039;&amp;#034;, &amp;#034;A&amp;#039;&amp;#039;&amp;#034;, &amp;#034;B&amp;#039;&amp;#034;,&#xD;
        &amp;#034;B&amp;#039;&amp;#039;&amp;#034;, &amp;#034;C&amp;#039;&amp;#034;, &amp;#034;C&amp;#039;&amp;#039;&amp;#034;, &amp;#034;D&amp;#039;&amp;#034;, &amp;#034;D&amp;#039;&amp;#039;&amp;#034;, &amp;#034;Oa&amp;#034;, &amp;#034;Ob&amp;#034;, &amp;#034;Oc&amp;#034;, &amp;#034;Od&amp;#034;},&#xD;
       {GeometricAssertion[Polygon[{&amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;, &amp;#034;D&amp;#034;}], &amp;#034;Convex&amp;#034;],&#xD;
        GeometricAssertion[{pa = Polygon[{&amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;A&amp;#039;&amp;#034;, &amp;#034;A&amp;#039;&amp;#039;&amp;#034;}], &#xD;
          pb = Polygon[{&amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;, &amp;#034;B&amp;#039;&amp;#034;, &amp;#034;B&amp;#039;&amp;#039;&amp;#034;}], &#xD;
          pc = Polygon[{&amp;#034;C&amp;#034;, &amp;#034;D&amp;#034;, &amp;#034;C&amp;#039;&amp;#034;, &amp;#034;C&amp;#039;&amp;#039;&amp;#034;}], &#xD;
          pd = Polygon[{&amp;#034;D&amp;#034;, &amp;#034;A&amp;#034;, &amp;#034;D&amp;#039;&amp;#034;, &amp;#034;D&amp;#039;&amp;#039;&amp;#034;}]}, &amp;#034;Regular&amp;#034;, &#xD;
         &amp;#034;Counterclockwise&amp;#034;],&#xD;
        &amp;#034;Oa&amp;#034; == Midpoint[{&amp;#034;A&amp;#034;, &amp;#034;A&amp;#039;&amp;#034;}],&#xD;
        &amp;#034;Ob&amp;#034; == Midpoint[{&amp;#034;B&amp;#034;, &amp;#034;B&amp;#039;&amp;#034;}],&#xD;
        &amp;#034;Oc&amp;#034; == Midpoint[{&amp;#034;C&amp;#034;, &amp;#034;C&amp;#039;&amp;#034;}],&#xD;
        &amp;#034;Od&amp;#034; == Midpoint[{&amp;#034;D&amp;#034;, &amp;#034;D&amp;#039;&amp;#034;}],&#xD;
        Style[Line[{&amp;#034;Oa&amp;#034;, &amp;#034;Oc&amp;#034;}], Orange],&#xD;
        Style[Line[{&amp;#034;Ob&amp;#034;, &amp;#034;Od&amp;#034;}], Orange]}&#xD;
       ];&#xD;
    RandomInstance[gs]&#xD;
    FindGeometricConjectures[gs][&amp;#034;Conclusions&amp;#034;]&#xD;
&#xD;
![enter image description here][14]&#xD;
![enter image description here][15]&#xD;
&#xD;
## Brahmagupta Theorem ##&#xD;
If a cyclic quadrilateral has perpendicular diagonals, then the perpendicular to a side from the point of intersection of the diagonals always bisects the opposite side.&#xD;
&#xD;
    gs = GeometricScene[{&amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;, &amp;#034;D&amp;#034;, &amp;#034;E&amp;#034;, &amp;#034;M&amp;#034;},&#xD;
       {Polygon[{&amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;, &amp;#034;D&amp;#034;}],&#xD;
        CircleThrough[{&amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;, &amp;#034;D&amp;#034;}],&#xD;
        GeometricAssertion[{Line[{&amp;#034;A&amp;#034;, &amp;#034;C&amp;#034;}], Line[{&amp;#034;B&amp;#034;, &amp;#034;D&amp;#034;}]}, &#xD;
         &amp;#034;Perpendicular&amp;#034;],&#xD;
        Line[{&amp;#034;A&amp;#034;, &amp;#034;E&amp;#034;, &amp;#034;C&amp;#034;}], Line[{&amp;#034;B&amp;#034;, &amp;#034;E&amp;#034;, &amp;#034;D&amp;#034;}],&#xD;
        &amp;#034;M&amp;#034; == Midpoint[{&amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;}],&#xD;
        Style[InfiniteLine[{&amp;#034;M&amp;#034;, &amp;#034;E&amp;#034;}], Orange],&#xD;
        Style[Line[{&amp;#034;C&amp;#034;, &amp;#034;D&amp;#034;}], Orange]&#xD;
        }&#xD;
       ];&#xD;
    RandomInstance[gs]&#xD;
    FindGeometricConjectures[gs][&amp;#034;Conclusions&amp;#034;]&#xD;
&#xD;
![enter image description here][16]&#xD;
![enter image description here][17]&#xD;
&#xD;
## Morley Theorem ##&#xD;
In any triangle, the three points of intersection of the adjacent angle trisectors form a regular triangle.&#xD;
&#xD;
    gs = GeometricScene[{&amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;, &amp;#034;D&amp;#034;, &amp;#034;E&amp;#034;, &amp;#034;F&amp;#034;},&#xD;
       {Triangle[{&amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;}],&#xD;
        PlanarAngle[{&amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;F&amp;#034;}] == PlanarAngle[{&amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;}]/3,&#xD;
        PlanarAngle[{&amp;#034;F&amp;#034;, &amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;}] == PlanarAngle[{&amp;#034;C&amp;#034;, &amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;}]/3,&#xD;
        PlanarAngle[{&amp;#034;C&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;D&amp;#034;}] == PlanarAngle[{&amp;#034;C&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;A&amp;#034;}]/3,&#xD;
        PlanarAngle[{&amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;, &amp;#034;D&amp;#034;}] == PlanarAngle[{&amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;, &amp;#034;A&amp;#034;}]/3,&#xD;
        PlanarAngle[{&amp;#034;A&amp;#034;, &amp;#034;C&amp;#034;, &amp;#034;E&amp;#034;}] == PlanarAngle[{&amp;#034;A&amp;#034;, &amp;#034;C&amp;#034;, &amp;#034;B&amp;#034;}]/3,&#xD;
        PlanarAngle[{&amp;#034;C&amp;#034;, &amp;#034;A&amp;#034;, &amp;#034;E&amp;#034;}] == PlanarAngle[{&amp;#034;C&amp;#034;, &amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;}]/3,&#xD;
        &amp;#034;D&amp;#034; \[Element] Triangle[{&amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;}],&#xD;
        &amp;#034;E&amp;#034; \[Element] Triangle[{&amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;}],&#xD;
        &amp;#034;F&amp;#034; \[Element] Triangle[{&amp;#034;A&amp;#034;, &amp;#034;B&amp;#034;, &amp;#034;C&amp;#034;}],&#xD;
        Style[Triangle[{&amp;#034;D&amp;#034;, &amp;#034;E&amp;#034;, &amp;#034;F&amp;#034;}], Orange]&#xD;
        }&#xD;
       ];&#xD;
    RandomInstance[gs]&#xD;
    FindGeometricConjectures[gs][&amp;#034;Conclusions&amp;#034;]&#xD;
&#xD;
![enter image description here][18]&#xD;
![enter image description here][19]&#xD;
&#xD;
&#xD;
  [1]: https://reference.wolfram.com/language/ref/GeometricScene.html&#xD;
  [2]: https://reference.wolfram.com/language/ref/FindGeometricConjectures.html&#xD;
  [3]: https://blog.wolfram.com/2019/04/16/version-12-launches-today-big-jump-for-wolfram-language-and-mathematica/&#xD;
  [4]: https://community.wolfram.com//c/portal/getImageAttachment?filename=122401.jpg&amp;amp;userId=1013863&#xD;
  [5]: https://community.wolfram.com//c/portal/getImageAttachment?filename=801502.jpg&amp;amp;userId=1013863&#xD;
  [6]: https://community.wolfram.com//c/portal/getImageAttachment?filename=508803.jpg&amp;amp;userId=1013863&#xD;
  [7]: https://community.wolfram.com//c/portal/getImageAttachment?filename=222204.jpg&amp;amp;userId=1013863&#xD;
  [8]: https://community.wolfram.com//c/portal/getImageAttachment?filename=289105.jpg&amp;amp;userId=1013863&#xD;
  [9]: https://community.wolfram.com//c/portal/getImageAttachment?filename=932006.jpg&amp;amp;userId=1013863&#xD;
  [10]: https://community.wolfram.com//c/portal/getImageAttachment?filename=876507.jpg&amp;amp;userId=1013863&#xD;
  [11]: https://community.wolfram.com//c/portal/getImageAttachment?filename=184108.jpg&amp;amp;userId=1013863&#xD;
  [12]: https://community.wolfram.com//c/portal/getImageAttachment?filename=350909.jpg&amp;amp;userId=1013863&#xD;
  [13]: https://community.wolfram.com//c/portal/getImageAttachment?filename=500710.jpg&amp;amp;userId=1013863&#xD;
  [14]: https://community.wolfram.com//c/portal/getImageAttachment?filename=318711.jpg&amp;amp;userId=1013863&#xD;
  [15]: https://community.wolfram.com//c/portal/getImageAttachment?filename=254812.jpg&amp;amp;userId=1013863&#xD;
  [16]: https://community.wolfram.com//c/portal/getImageAttachment?filename=308813.jpg&amp;amp;userId=1013863&#xD;
  [17]: https://community.wolfram.com//c/portal/getImageAttachment?filename=934714.jpg&amp;amp;userId=1013863&#xD;
  [18]: https://community.wolfram.com//c/portal/getImageAttachment?filename=367015.jpg&amp;amp;userId=1013863&#xD;
  [19]: https://community.wolfram.com//c/portal/getImageAttachment?filename=16.jpg&amp;amp;userId=1013863</description>
    <dc:creator>Kotaro Okazaki</dc:creator>
    <dc:date>2019-04-20T14:42:58Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1056910">
    <title>[FEATURE] Zero out (or replace) the diagonal of a matrix</title>
    <link>https://community.wolfram.com/groups/-/m/t/1056910</link>
    <description>There is a simple matrix operation that other scientific computing systems typically have and Mathematica sorely lacks:&#xD;
&#xD;
**Replace the diagonal of a matrix with all zeros.**&#xD;
&#xD;
Or more generally, replace the diagonal with some given values.&#xD;
&#xD;
I am not sure why this is missing from Mathematica. Perhaps it is considered trivial to implement. To show that it isn&amp;#039;t, I challenge the readers of this forum to post an implementation which is:&#xD;
&#xD;
 - As efficient as possibleit should be fast and not use too much memory&#xD;
 - As general as possibleit should work with all sorts of matrices that can be used in Mathematica&#xD;
&#xD;
Think through your submission before you post it. I expect that I will be able to point out problems in the first few submissions. If not, and I am proven wrong, then I will be happy to learn new methods of doing this.&#xD;
&#xD;
*If you agree that this functionality needs to be added to the next version of Mathematica, upvote this post!*</description>
    <dc:creator>Szabolcs Horvát</dc:creator>
    <dc:date>2017-04-08T12:12:41Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3166670">
    <title>[BOOK] Introduction to Calculus: fundamental concepts and applications with videos and course</title>
    <link>https://community.wolfram.com/groups/-/m/t/3166670</link>
    <description>![ Cover of Wolfram Media book Introduction to Calculus: fundamental concepts and applications with videos and course by Devendra Kapadia ][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=1618main.png&amp;amp;userId=20103&#xD;
  [2]: https://www.wolframcloud.com/obj/0a6c30a9-26cc-435a-8dee-a6203560d6cb</description>
    <dc:creator>Devendra Kapadia</dc:creator>
    <dc:date>2024-04-29T19:58:52Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/415820">
    <title>Happy New Palindromic Year 11111011111 !</title>
    <link>https://community.wolfram.com/groups/-/m/t/415820</link>
    <description>Very nice palindromic binary year for everybody!&#xD;
&#xD;
    IntegerDigits[2015, 2]&#xD;
&#xD;
`{1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1}`</description>
    <dc:creator>Jose Martin-Garcia</dc:creator>
    <dc:date>2015-01-02T23:57:16Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2961701">
    <title>Lucky Palindromes: when do prime factors of palindromes make palindromes?</title>
    <link>https://community.wolfram.com/groups/-/m/t/2961701</link>
    <description>[![enter image description here][1]][2]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][3]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=43t45h545qerfgvfdsfh.jpg&amp;amp;userId=11733&#xD;
  [2]: https://community.wolfram.com//c/portal/getImageAttachment?filename=43t45h545qerfgvfdsfh.jpg&amp;amp;userId=11733&#xD;
  [3]: https://www.wolframcloud.com/obj/ec0d857e-09b2-4862-87b8-0d0c23869f69</description>
    <dc:creator>Vitaliy Kaurov</dc:creator>
    <dc:date>2023-07-13T17:19:37Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/966115">
    <title>[GIF] Move Along (Envelopes of conic sections)</title>
    <link>https://community.wolfram.com/groups/-/m/t/966115</link>
    <description>![Envelopes of conic sections][1]&#xD;
&#xD;
**Move Along**&#xD;
&#xD;
Consider a circle of latitude at height $z=-3/4$ on the unit sphere. The orthogonal complements of unit vectors on the circle are planes through the origin in $\mathbb{R}^3$, which we can also interpret as lines in $\mathbb{RP}^2$, the real projective plane. In order to visualize these lines, take the intersection of the planes with the plane $z=1$. These lines will form the envelope of a circle in the $z=1$ plane. &#xD;
&#xD;
Now, as we rotate the unit sphere around the $y$-axis, the lines in the $z=1$ plane will form the envelopes of a family of conics. What the animation actually shows are the points of intersections of the lines corresponding to 50 equally-spaced points on this rotating circle on the unit sphere. &#xD;
&#xD;
Here&amp;#039;s the code:&#xD;
&#xD;
    DynamicModule[{m, p, a, \[Theta] = 0., t = \[Pi]/1., r = -0.75, lines,&#xD;
       linepairs, dots, cols = RGBColor /@ {&amp;#034;#E84A5F&amp;#034;, &amp;#034;#2A363B&amp;#034;}},&#xD;
     Manipulate[&#xD;
      m = RotationMatrix[t, {Cos[\[Theta]] Sin[\[Phi]], Sin[\[Theta]] Sin[\[Phi]], Cos[\[Phi]]}];&#xD;
      p[s_] = m.{Sqrt[1 - r^2] Cos[s], Sqrt[1 - r^2] Sin[s], r};&#xD;
      a = m.{0, 0, 1};&#xD;
      lines = &#xD;
       Table[InfiniteLine[{{-p[s][[3]]/p[s][[1]], &#xD;
           0}, {0, -p[s][[3]]/p[s][[2]]}}], {s, 0, 2 \[Pi] - 2 \[Pi]/50, 2 \[Pi]/50}];&#xD;
      linepairs = Subsets[lines, {2}];&#xD;
      dots = DeleteCases[RegionIntersection @@ # &amp;amp; /@ linepairs, &#xD;
        EmptyRegion[2]];&#xD;
      Graphics[{White, PointSize[.005], cols[[1]], dots}, &#xD;
       ImageSize -&amp;gt; 540, Frame -&amp;gt; False, Background -&amp;gt; cols[[-1]], &#xD;
       PlotRange -&amp;gt; 5], {\[Phi], 0., \[Pi]/2}]&#xD;
     ]&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=lines26r2.gif&amp;amp;userId=610054</description>
    <dc:creator>Clayton Shonkwiler</dc:creator>
    <dc:date>2016-11-19T05:47:40Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1718762">
    <title>[Numberphile] James ❤️ A Card Trick Simulation</title>
    <link>https://community.wolfram.com/groups/-/m/t/1718762</link>
    <description>####*Please download the notebook at the end of the discussion including dynamic feature*####&#xD;
&#xD;
----------&#xD;
&#xD;
![simulation][1]&#xD;
&#xD;
July 4th is a fabulous holiday season for American families to enjoy the summer with road trip and BBQ party. You can use a deck of poker to entertain your kids and family friends with [James Grime&amp;#039;s][2] new card trick on [Numberphile][3].&#xD;
&#xD;
##Background##&#xD;
&#xD;
You are given $10$ cards, from Ace to 10. Shuffle them and split them into $2$ rows with five cards in each. Sort one row in ascending order, the other in descending order. Both orders are oriented from left to right. Calculate the absolute values of the difference between two rows and add them up. You can play the poker game multiple times and you will find the sum is always $25$. If you do not have poker at hand, please take a look at the animation above. &#xD;
&#xD;
##Code##&#xD;
&#xD;
Let&amp;#039;s work on the problem with Mathematica to help us understand. In the code I use the icons from this website: &#xD;
&#xD;
    $icon=&amp;#034;https://www.iconfinder.com/icons/1331558/card_game_diamond_gambling_game_jewelry_poker_sport_icon&amp;#034;;&#xD;
&#xD;
then I directly assign them to `spade` and `diamond` in a notebook: &#xD;
&#xD;
![spadediamond][4] &#xD;
&#xD;
Use `Framed` to create a nice and simple poker card: &#xD;
&#xD;
    cardpicture1[{suit_, val_}] := Framed[Column[{val, suit}, Center, 0, ItemSize -&amp;gt; {6, 2}, &#xD;
       ItemStyle -&amp;gt; Directive[24, &amp;#034;Label&amp;#034;, Bold]], RoundingRadius -&amp;gt; 8]&#xD;
&#xD;
![poker][5]&#xD;
&#xD;
Use `Map` to create a list of poker cards: &#xD;
&#xD;
    n=10;&#xD;
    numbers = Range[n];&#xD;
    pokers1 = AssociationMap[cardpicture1[{spade, #}] &amp;amp;, numbers];&#xD;
    differences = AssociationMap[cardpicture1[{diamond, #}] &amp;amp;, numbers];&#xD;
&#xD;
Now lets shuffle the deck of 10 cards: &#xD;
&#xD;
    shuffle=Permute[numbers,RandomPermutation[10]]&#xD;
    (* {3,6,7,5,9,10,8,4,1,2} *)&#xD;
&#xD;
I use this generic permutation method because you can replace `numbers` with other list like 10 prime numbers.&#xD;
&#xD;
Then split it into two rows &#xD;
&#xD;
    {row1,row2}={#[[1;;n/2]],#[[n/2+1;;]]}&amp;amp;[shuffle]&#xD;
    (* {{3,6,7,5,9},{10,8,4,1,2}} *)&#xD;
    Style[Grid[Map[pokers1, {row1, row2}, {2}]], ImageSizeMultipliers -&amp;gt; {1, 1}]&#xD;
&#xD;
![deck][6]&#xD;
&#xD;
The last two steps are to sort two rows and find the sum of the absolute values of the pairwise differences between the two rows. I use `Grid` an `Style` to make the output neat.&#xD;
&#xD;
    With[{r1=Sort@row1,r2=Sort[row2,Greater]},&#xD;
        Module[{sum},sum=Inactive[Plus]@@Abs[r2-r1];&#xD;
            Style[Grid[{&#xD;
                pokers1/@r1,&#xD;
                pokers1/@r2,&#xD;
                (differences/@Abs[r2-r1]),&#xD;
                {Null,SpanFromLeft},&#xD;
                {Style[Row@{sum,&amp;#034; = &amp;#034;,Activate[sum]},Large,Italic],SpanFromLeft}}],&#xD;
            ImageSizeMultipliers-&amp;gt;{1, 1}]&#xD;
        ]&#xD;
    ]&#xD;
&#xD;
![sorteddeck][7]&#xD;
&#xD;
##Proof##&#xD;
&#xD;
You might already notice I have variables like `pokers1` and `cardpicture1` in the code above. I am definitely hiding from something from you. &#xD;
&#xD;
The companion pokers I have, namely `pokers2`, is a deck of super power cards of which the styles get updated given the face value greater than $5$: &#xD;
&#xD;
    pokers2 = AssociationMap[cardpicture2[{spade, #}] &amp;amp;, numbers];&#xD;
&#xD;
where &#xD;
&#xD;
    cardpicture2[{suit_, val_}] := &#xD;
     Framed[Column[{val, suit}, Center, 0, ItemSize -&amp;gt; {6, 2}, &#xD;
       ItemStyle -&amp;gt; Directive[24, &amp;#034;Label&amp;#034;, Bold]], &#xD;
      FrameStyle -&amp;gt; Directive[If[val &amp;gt; 5, Dashed, Black]],&#xD;
      RoundingRadius -&amp;gt; 8]&#xD;
&#xD;
Once we use the super power card, we can see a pattern matches exactly what James claimed in the Numberphile video (using contradiction of stacking dashed/purple numbered card): &#xD;
&#xD;
![hint][8]&#xD;
&#xD;
Lets take look at one frame: &#xD;
&#xD;
![direction][9]&#xD;
&#xD;
The third diamond line is from the following flipping transition (dash-solid or purple-black)&#xD;
&#xD;
![transition][10]&#xD;
&#xD;
$ 25 = 7 + 3 + 2 + 5 + 8$&#xD;
&#xD;
$ = (10 - 3) +  (8 - 5 ) +  (6 - 4 )+  (7 - 2 ) +  (9 - 1) $&#xD;
&#xD;
$= (10 + 9 + 8 + 7 + 6) -(1 + 2 + 3 + 4 + 5)$&#xD;
&#xD;
The sorted rows tells you that all dashed card must sit together. Same happens to the solid line cards. Therefore there is exactly one transition from solid -&amp;gt; dash or dash -&amp;gt; solid in each row. &#xD;
&#xD;
If dashed cards overlapping vertically means we either have at least 6 such cards or one row is not properly sorted. This is contradiction.&#xD;
&#xD;
##Comment##&#xD;
&#xD;
There are nice functions used here&#xD;
&#xD;
 -  Use `Inactive[Plus]@@{...}` and then to active the sum expression with `Activate[]`: prints nice hold sum formula and delayed evaluation&#xD;
 -  `AssociationMap` to create key-poker face dictionary&#xD;
 -  Animation is generated by [Refresh][11]. Attached at the end of the thread. &#xD;
 - Poker design code is from [this demonstration][12]&#xD;
&#xD;
Code snippet just for the calculation (minimum visualization):&#xD;
&#xD;
    n = 12;&#xD;
    {row1, row2} = {#[[1 ;; n/2]], #[[n/2 + 1 ;;]]} &amp;amp;[Permute[Range[n], RandomPermutation[n]]]&#xD;
    f[m_] := If[m &amp;gt; n/2, Framed[m], m]&#xD;
    {Grid[{row1,row2}],Sequence@@With[{r1=Sort@row1,r2=Reverse@Sort@row2},{Grid[Map[f,{r1,r2},{2}]],Abs[r1-r2]//Total}]}&#xD;
&#xD;
![shortcode][13]&#xD;
&#xD;
Formula: &#xD;
&#xD;
    Sum[k, {k, 2*m}] - 2*Sum[k, {k, m}] // Simplify &#xD;
    (* m^2 *)&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=simulation.gif&amp;amp;userId=23928&#xD;
  [2]: http://bit.ly/grimevideos&#xD;
  [3]: https://www.youtube.com/watch?v=_Wv_qw3nQnI&#xD;
  [4]: https://community.wolfram.com//c/portal/getImageAttachment?filename=input.png&amp;amp;userId=23928&#xD;
  [5]: https://community.wolfram.com//c/portal/getImageAttachment?filename=input2.png&amp;amp;userId=23928&#xD;
  [6]: https://community.wolfram.com//c/portal/getImageAttachment?filename=usdeck.png&amp;amp;userId=23928&#xD;
  [7]: https://community.wolfram.com//c/portal/getImageAttachment?filename=sdeck.png&amp;amp;userId=23928&#xD;
  [8]: https://community.wolfram.com//c/portal/getImageAttachment?filename=simulation_hint.gif&amp;amp;userId=23928&#xD;
  [9]: https://community.wolfram.com//c/portal/getImageAttachment?filename=labeld2.png&amp;amp;userId=23928&#xD;
  [10]: https://community.wolfram.com//c/portal/getImageAttachment?filename=labeld3.png&amp;amp;userId=23928&#xD;
  [11]: https://reference.wolfram.com/language/ref/Refresh.html#Examples&#xD;
  [12]: http://demonstrations.wolfram.com/Poker/&#xD;
  [13]: https://community.wolfram.com//c/portal/getImageAttachment?filename=quick.png&amp;amp;userId=23928</description>
    <dc:creator>Shenghui Yang</dc:creator>
    <dc:date>2019-07-03T18:35:12Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1032663">
    <title>Code puzzles: turning docs into educational games</title>
    <link>https://community.wolfram.com/groups/-/m/t/1032663</link>
    <description>Teaching programing and assessing learning progress is often a very custom task. I wanted to create a completely automated &amp;#034;practically&amp;#034; infinite stream of random puzzles that guide a leaner towards improving programing skills. I think the major problem is content creation. To test whether the learner knows a programming concept, an exercise needs to be wisely designed. And it is better to have a randomized set of such exercises to definitely test the knowledge and exclude guesses and cheating and so on. Often creating such educational materials is very tedious, time consuming, and manual. Exactly like creating good documentation. I will explain one simple idea of using docs to make an educational game. This is just a barebone prototype to clearly follow the inner workings (try it out &amp;amp; share: https://wolfr.am/bughunter ). Please comment with feedback on how we can develop this idea further. &#xD;
&#xD;
[![enter image description here][1]][3]&#xD;
&#xD;
# Introduction: efficient use of resources &#xD;
&#xD;
The docs are the finest wealth and depth of information and should be explored beyond their regular usage. Manual painstaking time consuming effort of creating good programing documentation should be used to its fullest potential. An automated game play would be a novel take on docs. We can use existing code examples in docs to randomly pull pieces of code and make programing exercises automatically. Being able to read code and find bugs is, in my experience, one of the most enlightening practices. The goal of the linked above game is to find a defect of the input code (bug) and fix it. Hence, the &amp;#034;bug hunter&amp;#034;. There are just 2 possible outcomes of a single game cycle, --- and after each you can &amp;#034;try again&amp;#034;: &#xD;
&#xD;
![enter image description here][4]&#xD;
&#xD;
# Core game code: making puzzles&#xD;
&#xD;
Wolfram Language (WL) documentation is one of the best I&amp;#039;ve seen. It has pages and pages of examples starting from simple ones and going though the all details of the usage. Moreover the docs are written in WL itself and furthermore, WL can access docs and even has internal self-knowledge of its structure via WolframLanguageData. For instance, this is how you can show a relationship community graph for symbols related to `GatherBy`:&#xD;
&#xD;
    WolframLanguageData[&amp;#034;GatherBy&amp;#034;, &amp;#034;RelationshipCommunityGraph&amp;#034;]&#xD;
&#xD;
![enter image description here][5]&#xD;
&#xD;
We can use `WolframLanguageData` to access docs examples and then drop some parts of the code. The puzzle is then for the learner to find what is missing. For the sake of clarity designing a small working prototype lets limit test WL functions and corresponding docs&amp;#039; pages to some small number. So out of ~5000 (and we [just released a new addition][6]):&#xD;
&#xD;
    WolframLanguageData[] // Length&#xD;
&#xD;
`4838`&#xD;
&#xD;
built in symbols I just take 30&#xD;
&#xD;
    functions = {&amp;#034;Append&amp;#034;, &amp;#034;Apply&amp;#034;, &amp;#034;Array&amp;#034;, &amp;#034;Cases&amp;#034;, &amp;#034;Delete&amp;#034;, &amp;#034;DeleteCases&amp;#034;, &amp;#034;Drop&amp;#034;, &amp;#034;Except&amp;#034;, &#xD;
    &amp;#034;Flatten&amp;#034;, &amp;#034;FlattenAt&amp;#034;, &amp;#034;Fold&amp;#034;, &amp;#034;Inner&amp;#034;, &amp;#034;Insert&amp;#034;, &amp;#034;Join&amp;#034;, &amp;#034;ListConvolve&amp;#034;, &amp;#034;Map&amp;#034;, &amp;#034;MapThread&amp;#034;, &#xD;
     &amp;#034;Nest&amp;#034;, &amp;#034;Outer&amp;#034;, &amp;#034;Partition&amp;#034;, &amp;#034;Prepend&amp;#034;, &amp;#034;ReplacePart&amp;#034;, &amp;#034;Reverse&amp;#034;, &amp;#034;RotateLeft&amp;#034;, &amp;#034;RotateRight&amp;#034;, &#xD;
    &amp;#034;Select&amp;#034;, &amp;#034;Sort&amp;#034;, &amp;#034;Split&amp;#034;, &amp;#034;Thread&amp;#034;, &amp;#034;Transpose&amp;#034;};&#xD;
    &#xD;
    functions // Length&#xD;
    30&#xD;
&#xD;
that are listed on a [very old but neat animated page][7] of some essential core-language collection. I will also add some &amp;#034;sugar syntax&amp;#034; to potential removable parts of code:&#xD;
&#xD;
    sugar = {&amp;#034;@@&amp;#034;, &amp;#034;@&amp;#034;, &amp;#034;/@&amp;#034;, &amp;#034;@@@&amp;#034;, &amp;#034;#&amp;#034;, &amp;#034;^&amp;#034;, &amp;#034;&amp;amp;&amp;#034;};&#xD;
&#xD;
So, for instance, out of the following [example in docs][8] we could remove a small part to make a puzzle:&#xD;
&#xD;
![enter image description here][9]&#xD;
&#xD;
Here is an example of &amp;#034;sugar syntax&amp;#034; removal, which for novice programmers would be harder to solve:&#xD;
&#xD;
![enter image description here][10]&#xD;
&#xD;
Next step is to define a function that can check if a string is a built-in symbol (function, all 5000) or if it is some of sugar syntax we defined above:&#xD;
&#xD;
    ClearAll[ExampleHeads];&#xD;
    ExampleHeads[e_]:=&#xD;
    Select[&#xD;
    	Cases[e,_String, Infinity],&#xD;
    	(NameQ[&amp;#034;System`&amp;#034;&amp;lt;&amp;gt;#]||MemberQ[sugar,#])&amp;amp;&amp;amp;#=!=&amp;#034;Input&amp;#034;&amp;amp;&#xD;
    ]&#xD;
&#xD;
Next function essentially makes a single quiz question. First it randomly picks a function from list of 30 symbols we defined. Then it goes to the doc page of that symbol to the section called &amp;#034;Basic Examples&amp;#034;. It finds a random example and removes a random part out of it:&#xD;
&#xD;
    ranquiz[]:=Module[&#xD;
    	{ranfun=RandomChoice[functions],ranexa,ranhead},&#xD;
    	ranexa=RandomChoice[WolframLanguageData[ranfun,&amp;#034;DocumentationBasicExamples&amp;#034;]][[-2;;-1]];&#xD;
    	ranhead=RandomChoice[ExampleHeads[ranexa[[1]]]];&#xD;
    	{&#xD;
    		ReplacePart[#,Position[#,ranhead]-&amp;gt;&amp;#034;&amp;#034;]&amp;amp;@ranexa[[1]],&#xD;
    		ranexa[[2]],&#xD;
    		ranhead,&#xD;
    		ranfun&#xD;
    	}&#xD;
    ]&#xD;
&#xD;
Now we will define a few simple variables and tools. &#xD;
&#xD;
# Image variables&#xD;
&#xD;
I keep marveling how convenient it is that Mathematica front end can make images to be part of code. This makes notebooks a great IDE:&#xD;
&#xD;
![enter image description here][11]&#xD;
&#xD;
# Databin for tracking stats&#xD;
&#xD;
It is important to have statistics of your learning game: to understand how to improve it where the education process should go. [Wolfram Datadrop][12] is an amazing tool for these purposes. &#xD;
&#xD;
[![enter image description here][13]][14]&#xD;
&#xD;
We define the databin as &#xD;
&#xD;
    bin = CreateDatabin[&amp;lt;|&amp;#034;Name&amp;#034; -&amp;gt; &amp;#034;BugHunter&amp;#034;|&amp;gt;]&#xD;
&#xD;
# Deploy game to the web&#xD;
&#xD;
To make an actual application usable by everyone with internet access I will use [Wolfram Development Platform][15] and [Wolfram Cloud][16]. First I define a function that will build the &amp;#034;result of the game&amp;#034; web page. It will check is answer is wrong or right and give differently designed pages accordingly.&#xD;
&#xD;
    quiz[answer_String,check_String,fun_String]:=&#xD;
    (&#xD;
    DatabinAdd[Databin[&amp;#034;kd3hO19q&amp;#034;],{answer,check,fun}];&#xD;
    Grid[{&#xD;
    	{If[answer===check,&#xD;
    		Grid[{{Style[&amp;#034;Right! You got the bug!&amp;#034;,40,Darker@Red,FontFamily-&amp;gt;&amp;#034;Chalkduster&amp;#034;]},{First[imgs]}}],&#xD;
    		Grid[{{Style[&amp;#034;Wrong! The bug got you!&amp;#034;,40,Darker@Red,FontFamily-&amp;gt;&amp;#034;Chalkduster&amp;#034;]},{Last[imgs]}}]&#xD;
    	]},&#xD;
    	&#xD;
    	{Row[&#xD;
    	{Hyperlink[&amp;#034;Try again&amp;#034;,&amp;#034;https://www.wolframcloud.com/objects/user-3c5d3268-040e-45d5-8ac1-25476e7870da/bughunter&amp;#034;],&#xD;
    	&amp;#034;|&amp;#034;,&#xD;
    	hyperlink[&amp;#034;Documentation&amp;#034;,&amp;#034;http://reference.wolfram.com/language/ref/&amp;#034;&amp;lt;&amp;gt;fun&amp;lt;&amp;gt;&amp;#034;.html&amp;#034;],&#xD;
    	&amp;#034;|&amp;#034;,&#xD;
    	hyperlink[&amp;#034;Fun hint&amp;#034;,&amp;#034;http://reference.wolfram.com/legacy/flash/animations/&amp;#034;&amp;lt;&amp;gt;fun&amp;lt;&amp;gt;&amp;#034;.html&amp;#034;]},&#xD;
    	Spacer[10]&#xD;
    	]},&#xD;
    	{Style[&amp;#034;====================================================&amp;#034;]},&#xD;
    	{hyperlink[&amp;#034;An Elementary Introduction to the Wolfram Language&amp;#034;,&amp;#034;https://www.wolfram.com/language/elementary-introduction&amp;#034;]},&#xD;
    	{hyperlink[&amp;#034;Fast introduction for programmers&amp;#034;,&amp;#034;http://www.wolfram.com/language/fast-introduction-for-programmers/en&amp;#034;]},&#xD;
    	{logo}&#xD;
    }]&#xD;
    )&#xD;
&#xD;
This function is used inside `CloudDeploy[...FormFunction[...]...]` construct to actually deploy the application. `FormFunction` builds a query form, a web user interface to formulate a question and to get user&amp;#039;s answer. Note for random variables to function properly `Delayed` is used as a wrapper for `FormFunction`.&#xD;
&#xD;
     CloudDeploy[Delayed[&#xD;
    	quizloc=ranquiz[];&#xD;
    	FormFunction[&#xD;
    		{{&amp;#034;code&amp;#034;,None} -&amp;gt; &amp;#034;String&amp;#034;,&#xD;
    		{&amp;#034;x&amp;#034;,None}-&amp;gt;&amp;lt;|&#xD;
    			&amp;#034;Input&amp;#034;-&amp;gt;StringRiffle[quizloc[[3;;4]],&amp;#034;,&amp;#034;],&#xD;
    			&amp;#034;Interpreter&amp;#034;-&amp;gt;DelimitedSequence[&amp;#034;String&amp;#034;],&#xD;
    			&amp;#034;Control&amp;#034;-&amp;gt;Function[Annotation[InputField[##],{&amp;#034;class&amp;#034;-&amp;gt;&amp;#034;sr-only&amp;#034;},&amp;#034;HTMLAttrs&amp;#034;]]|&amp;gt;}, &#xD;
    		quiz[#code,#x[[1]],#x[[2]]]&amp;amp;,&#xD;
    		AppearanceRules-&amp;gt; &amp;lt;|&#xD;
    			&amp;#034;Title&amp;#034; -&amp;gt; Grid[{{title}},Alignment-&amp;gt;Center],&#xD;
    			&amp;#034;MetaTitle&amp;#034;-&amp;gt;&amp;#034;BUG HUNTER&amp;#034;,&#xD;
    			&amp;#034;Description&amp;#034;-&amp;gt; Grid[{&#xD;
    			{Style[&amp;#034;Type the missing part of input code&amp;#034;,15, Darker@Red,FontFamily-&amp;gt;&amp;#034;Ayuthaya&amp;#034;]},&#xD;
    			{Rasterize@Grid[{&#xD;
    				{&amp;#034;In[1]:=&amp;#034;,quizloc[[1]]},&#xD;
    				{&amp;#034;Out[1]=&amp;#034;,quizloc[[2]]}},Alignment-&amp;gt;Left]}&#xD;
    			}]&#xD;
    		 |&amp;gt;]],&#xD;
    	&amp;#034;bughunter&amp;#034;,&#xD;
    	Permissions-&amp;gt;&amp;#034;Public&amp;#034;&#xD;
    ]&#xD;
&#xD;
The result of the deployment is a cloud object at a URL:&#xD;
&#xD;
    CloudObject[https://www.wolframcloud.com/objects/user-3c5d3268-040e-45d5-8ac1-25476e7870da/bughunter]&#xD;
&#xD;
with the short version:&#xD;
&#xD;
    URLShorten[&amp;#034;https://www.wolframcloud.com/objects/user-3c5d3268-040e-45d5-8ac1-25476e7870da/bughunter&amp;#034;, &amp;#034;bughunter&amp;#034;]&#xD;
&#xD;
https://wolfr.am/bughunter&#xD;
&#xD;
And we are done! You can go at the above URL and play.&#xD;
&#xD;
# Further thoughts&#xD;
&#xD;
Here are some key points and further thoughts.&#xD;
&#xD;
## Advantages:&#xD;
&#xD;
- Automation of content: NO new manual resource development, use existing code bases.&#xD;
- Automation of testing: NO manual labor of grading.&#xD;
- Quality of testing: NO multiple choice, NO guessing.&#xD;
- Quality of grading: almost 100% exact detection of mistakes and correct solutions.&#xD;
- Fight cheating: clear to identify question type &amp;#034;find missing code part&amp;#034; helps to ban help from friendly forums (such as this one).&#xD;
- Almost infinite variability of examples if whole docs system is engaged.&#xD;
- High range from very easy to very hard examples (exclusion of multiple functions and syntax can make this really hard).&#xD;
&#xD;
## Improvements:&#xD;
&#xD;
- Flexible scoring system based on function usage frequencies.&#xD;
- Optional placeholder as hint where the code is missing.&#xD;
- Using network of related functions (see above) to move smoothly through the topical domains.&#xD;
- Using functions frequency to feed easier or harder exercises based on test progress.&#xD;
&#xD;
***Please comment with your own thoughts and games and code!***&#xD;
&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2017-03-17at10.37.46AM.png&amp;amp;userId=11733&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2017-03-16at6.49.58PM.png&amp;amp;userId=11733&#xD;
  [3]: https://www.wolframcloud.com/objects/user-3c5d3268-040e-45d5-8ac1-25476e7870da/bughunter&#xD;
  [4]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2017-03-16at6.58.45PM.png&amp;amp;userId=11733&#xD;
  [5]: http://community.wolfram.com//c/portal/getImageAttachment?filename=sgfq354ythwrgsf.png&amp;amp;userId=11733&#xD;
  [6]: http://blog.wolfram.com/2017/03/16/the-rd-pipeline-continues-launching-version-11-1/&#xD;
  [7]: http://reference.wolfram.com/legacy/flash/&#xD;
  [8]: http://reference.wolfram.com/language/ref/Except.html&#xD;
  [9]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2017-03-16at7.21.05PM.png&amp;amp;userId=11733&#xD;
  [10]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2017-03-16at7.25.52PM.png&amp;amp;userId=11733&#xD;
  [11]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2017-03-16at7.34.59PM.png&amp;amp;userId=11733&#xD;
  [12]: https://datadrop.wolframcloud.com/&#xD;
  [13]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2017-03-16at7.41.35PM.png&amp;amp;userId=11733&#xD;
  [14]: https://datadrop.wolframcloud.com/&#xD;
  [15]: https://www.wolfram.com/development-platform/&#xD;
  [16]: http://www.wolfram.com/cloud/</description>
    <dc:creator>Vitaliy Kaurov</dc:creator>
    <dc:date>2017-03-17T01:13:24Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2261402">
    <title>[BOOK] An introduction to computational origami</title>
    <link>https://community.wolfram.com/groups/-/m/t/2261402</link>
    <description>[![An introduction to computational origami][1]][2]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][3]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=2609Image20210506191938.png&amp;amp;userId=20103&#xD;
  [2]: https://doi.org/10.1007/978-3-319-59189-6&#xD;
  [3]: https://www.wolframcloud.com/obj/6c662c7b-30c4-4b47-8b41-4d4c079cea79</description>
    <dc:creator>Tetsuo Ida</dc:creator>
    <dc:date>2021-05-06T17:25:34Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2071183">
    <title>Scraping HTML Using StringCases</title>
    <link>https://community.wolfram.com/groups/-/m/t/2071183</link>
    <description>**Intro**&#xD;
&#xD;
I am helping a friend gather the same data points from a large number of web pages that have the same structure, but inconsistent HTML syntax.  So, I thought Wolfram&amp;#039;s pattern matching capabilities would make this easy.  And it has, to a certain extent.&#xD;
&#xD;
I have a solution now, but I would like to know if there is a better way.  I would appreciate any constructive criticism you might have.&#xD;
&#xD;
**Challenge**&#xD;
&#xD;
Pull a handful of field labels from over a thousand HTML pages.  For testing purposes, here are a few of the variations that appear in the files:&#xD;
&#xD;
	html = &amp;#034;&#xD;
	&amp;lt;input type=\&amp;#034;radio\&amp;#034; id=\&amp;#034;field_1\&amp;#034; name=\&amp;#034;choices\&amp;#034; value=\&amp;#034;1\&amp;#034;&amp;gt;&#xD;
	&amp;lt;label for=\&amp;#034;field_1\&amp;#034;&amp;gt;Field 1&amp;lt;/label&amp;gt;&#xD;
	&amp;lt;input type=\&amp;#034;radio\&amp;#034; id=\&amp;#034;field_2\&amp;#034; name=\&amp;#034;choices\&amp;#034; value=\&amp;#034;2\&amp;#034;&amp;gt;&#xD;
	&amp;lt;label &#xD;
	for=\&amp;#034;field_2\&amp;#034;&amp;gt;Field 2&amp;lt;/label&amp;gt;&#xD;
	&amp;lt;input type=\&amp;#034;radio\&amp;#034; id=\&amp;#034;field_3\&amp;#034; name=\&amp;#034;choices\&amp;#034; value=\&amp;#034;3\&amp;#034;&amp;gt;&#xD;
	&amp;lt;label for&#xD;
	=\&amp;#034;field_3\&amp;#034;&amp;gt;Field 3&amp;lt;/label&amp;gt;&#xD;
	&#xD;
	&amp;lt;input type=\&amp;#034;radio\&amp;#034; id=\&amp;#034;field_4\&amp;#034; name=\&amp;#034;choices\&amp;#034; value=\&amp;#034;4\&amp;#034;&amp;gt;&#xD;
	&amp;lt;label for=&amp;#039;field_4&amp;#039;&amp;gt;Field 4&amp;lt;/label&amp;gt;&#xD;
	&amp;lt;input type=\&amp;#034;radio\&amp;#034; id=\&amp;#034;field_5\&amp;#034; name=\&amp;#034;choices\&amp;#034; value=\&amp;#034;5\&amp;#034;&amp;gt;&#xD;
	&amp;lt;label &#xD;
	for=&amp;#039;field_5&amp;#039;&amp;gt;Field 5&amp;lt;/label&amp;gt;&#xD;
	&amp;lt;input type=\&amp;#034;radio\&amp;#034; id=\&amp;#034;field_6\&amp;#034; name=\&amp;#034;choices\&amp;#034; value=\&amp;#034;6\&amp;#034;&amp;gt;&#xD;
	&amp;lt;label for&#xD;
	=&amp;#039;field_6&amp;#039;&amp;gt;Field 6&amp;lt;/label&amp;gt;&#xD;
	&#xD;
	&amp;lt;input type=\&amp;#034;radio\&amp;#034; id=\&amp;#034;field_7\&amp;#034; name=\&amp;#034;choices\&amp;#034; value=\&amp;#034;7\&amp;#034;&amp;gt;&#xD;
	&amp;lt;label for=field_7&amp;gt;Field 7&amp;lt;/label&amp;gt;&#xD;
	&amp;lt;input type=\&amp;#034;radio\&amp;#034; id=\&amp;#034;field_8\&amp;#034; name=\&amp;#034;choices\&amp;#034; value=\&amp;#034;8\&amp;#034;&amp;gt;&#xD;
	&amp;lt;label &#xD;
	for=field_8&amp;gt;Field 8&amp;lt;/label&amp;gt;&#xD;
	&amp;lt;input type=\&amp;#034;radio\&amp;#034; id=\&amp;#034;field_8\&amp;#034; name=\&amp;#034;choices\&amp;#034; value=\&amp;#034;9\&amp;#034;&amp;gt;&#xD;
	&amp;lt;label for&#xD;
	=field_9&amp;gt;Field 9&amp;lt;/label&amp;gt;&#xD;
	&amp;#034;;&#xD;
	&#xD;
**Solution**&#xD;
&#xD;
Our first challenge is attribute names (keys) might be single quoted, double quoted or not quoted at all.   To handle this let&amp;#039;s create a pattern for HTML quotes:&#xD;
&#xD;
	htmlQuoteCharacterPattern = &amp;#034;\&amp;#034;&amp;#034; | &amp;#034;&amp;#039;&amp;#034;;&#xD;
 &#xD;
Next, we know that while our attribute names must always be followed by a space or equals.  So, we need another pattern.  This time we use a look ahead regular expression:&#xD;
&#xD;
	htmlEndOfAttributeKeyPattern = RegularExpression[&amp;#034;(?=(&amp;gt;|\\s|=))&amp;#034;];&#xD;
&#xD;
And, we now that attribute values end with either whitespace or a &amp;gt;.   Again we use a look ahead regular expression:&#xD;
&#xD;
	htmlEndOfAttributeValuePattern = RegularExpression[&amp;#034;(?=(&amp;gt;|\\s))&amp;#034;];&#xD;
&#xD;
Now we we have almost everything we need to create patterns for attribute keys.  But, to future-proof our solution, I want to create a pattern for the attribute key that allows me to specify either a string or a pattern for the key name:&#xD;
&#xD;
	htmlQuotedAttributeKeyPattern[pattern_?matchStringPatternQ] := StringExpression[&#xD;
		WhitespaceCharacter ...,&#xD;
		htmlQuoteCharacterPattern,&#xD;
		pattern,&#xD;
		htmlQuoteCharacterPattern,&#xD;
		htmlEndOfAttributeKeyPattern&#xD;
	];	&#xD;
	&#xD;
	htmlUnquotedAttributeKeyPattern[pattern_?matchStringPatternQ] := StringExpression[&#xD;
		WhitespaceCharacter ...,&#xD;
		pattern,&#xD;
		htmlEndOfAttributeKeyPattern&#xD;
	];&#xD;
	&#xD;
	htmlAttributeKeyPattern[pattern_?matchStringPatternQ] := &#xD;
		(htmlQuotedAttributeKeyPattern[pattern] | htmlUnquotedAttributeKeyPattern[pattern]);&#xD;
&#xD;
As you can see, we now have functions that take either a String or a String expression.  So, let&amp;#039;s create that pattern:&#xD;
&#xD;
	matchStringPatternQ = MatchQ[#, _String | _StringExpression] &amp;amp;;&#xD;
&#xD;
&#xD;
**Testing the Solution**&#xD;
&#xD;
We can now test our solution against the data above:&#xD;
&#xD;
&#xD;
	&#xD;
	StringCases[&#xD;
		html, &#xD;
		&amp;#034;&amp;lt;label&amp;#034; ~~ htmlAttributeKeyValuePattern[&amp;#034;for&amp;#034;, &amp;#034;field_&amp;#034; ~~ DigitCharacter] ~~ &amp;#034;&amp;gt;&amp;#034; ~~ s : Except[&amp;#034;&amp;lt;&amp;#034;] .. :&amp;gt; s&#xD;
	] &#xD;
	&#xD;
returns, as expected:&#xD;
&#xD;
	{&amp;#034;Field 1&amp;#034;, &amp;#034;Field 2&amp;#034;, &amp;#034;Field 3&amp;#034;, &amp;#034;Field 4&amp;#034;, &amp;#034;Field 5&amp;#034;, &amp;#034;Field 6&amp;#034;, &amp;#034;Field 7&amp;#034;, &amp;#034;Field 8&amp;#034;, &amp;#034;Field 9&amp;#034;}&#xD;
	&#xD;
And,&#xD;
&#xD;
	StringCases[&#xD;
		html, &#xD;
		&amp;#034;&amp;lt;label&amp;#034; ~~ htmlAttributeKeyValuePattern[&amp;#034;for&amp;#034;, &amp;#034;field_5&amp;#034;] ~~ &amp;#034;&amp;gt;&amp;#034; ~~ s : Except[&amp;#034;&amp;lt;&amp;#034;] .. :&amp;gt; s&#xD;
		] &#xD;
&#xD;
returns, as expected:&#xD;
&#xD;
	{&amp;#034;Field 5&amp;#034;}&#xD;
&#xD;
**Conclusion**&#xD;
&#xD;
I am mostly happy with the above solution, but I know I will need to continue to extend it.  While I will not have to handle every type of HTML, I do need a robust way to surgically extract interesting pieces of information.  &#xD;
&#xD;
Before I spend too much additional time extending this solution, I would like to know if I&amp;#039;m on the a good track.&#xD;
&#xD;
I would also like to know if this is something that others have to do often as well?  Would it be worth polishing this to the point that they can be published in the Resource Function Repository?&#xD;
&#xD;
&#xD;
Thanks for reading. Feedback on this approach will be greatly appreciated.&#xD;
&#xD;
&#xD;
Have a great and safe week.</description>
    <dc:creator>Mike Besso</dc:creator>
    <dc:date>2020-09-05T15:51:14Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/215591">
    <title>Fit it and tweet it - optimized reflections on Einstein and Chinese poems</title>
    <link>https://community.wolfram.com/groups/-/m/t/215591</link>
    <description>Recently we had a question about [url=http://community.wolfram.com/groups/-/m/t/214433]Sorting synonyms[/url]. That was needed to shorten a phrase - in order to fit in 140 characters of a tweet. 

Here is a stab at a more general problem of automation of text shortening. So what is more suitable for a Sunday evening than linguistic optimization in search of the global minimum of a text length? I first will show you the result and then explain how it works. Of course it is not perfect, but requires just a few manual adjustments. It all depends on shortening rules and they can be made more sophisticated to perfect automation. So here are a few examples:


A poem by classic Chinese poet, musician and painter Wang Wei who lived in 8th century. What is cool is that poetry translations can be quite arbitrary and you can consider this to be Wolfram Language meditations on translation of classic Chinese ;-)[mcode]text = &amp;#034;All alone in a foreign land, I am twice as homesick on this day, when brothers carry dogwood up the mountain, each of them a branch and my branch missing.&amp;#034;; 

text // StringLength
Out[]= 154[/mcode]
Shorten it:[mcode]RePhrase[text, ss, 5][/mcode][quote]&amp;#034;all solo in a alien land, i am twice as homesick on this day, when pal carry cornel up the wad, each of them a branch and my branch missing.&amp;#034;[/quote][mcode]In[]= % // StringLength
Out[]= 140[/mcode]

A quote by Einstein:[mcode]text = &amp;#034;The language of mathematics is even more inborn and universal than the language of music; a mathematical formula is crystal clear and independent of all sense organs.&amp;#034;; 

text // StringLength
Out[] = 166[/mcode]
Shorten it:[mcode]RePhrase[text, ss, 5][/mcode][quote]the words of math is even more innate and general than the words of music; a numerical rule is quartz clear and main of all sense organs.[/quote][mcode]In[]= % // StringLength
Out[]= 137[/mcode]

A tweet based on [url=http://www.britannica.com/EBchecked/topic/458757/physics]Encyclopedia Britannica[/url] definition of physics:[mcode]text = &amp;#034;I want to learn physics, a science that deals with the structure of matter and the interactions between the fundamental constituents of the observable universe!&amp;#034;; 

text // StringLength
Out[] = 160[/mcode]
Shorten it:[mcode]RePhrase[text, ss, 5][/mcode][quote]i want to learn physics, a skill that deals with the structure of matter and the interaction &amp;#039;tween the key part of the evident world![/quote][mcode]In[]= % // StringLength
Out[]= 134[/mcode]
Of course, as I said, a few corrections needed that can be easily done manually  but we did save a lot of space  even for hash-tags ;-) Now, how it works. First of all we would need a set of characters based on which we will split a string into separate words, which later will be replaced by short synonyms. These characters are easy to get  I also added to them black space.[mcode]ss = Complement[#, Cases[#, _?LetterQ]] &amp;amp;@CharacterRange[&amp;#034;!&amp;#034;, &amp;#034;~&amp;#034;]~Join~{&amp;#034; &amp;#034;}

Out[]= {&amp;#034;!&amp;#034;, &amp;#034;@&amp;#034;, &amp;#034;#&amp;#034;, &amp;#034;%&amp;#034;, &amp;#034;^&amp;#034;, &amp;#034;&amp;amp;&amp;#034;, &amp;#034;*&amp;#034;, &amp;#034;(&amp;#034;, &amp;#034;)&amp;#034;, &amp;#034;_&amp;#034;, &amp;#034;-&amp;#034;, &amp;#034;+&amp;#034;, &amp;#034;=&amp;#034;, &amp;#034;~&amp;#034;, &amp;#034;`&amp;#034;, &amp;#034;{&amp;#034;, &amp;#034;[&amp;#034;, &amp;#034;}&amp;#034;, &amp;#034;]&amp;#034;, &amp;#034;|&amp;#034;, &amp;#034;\\&amp;#034;, &amp;#034;&amp;lt;&amp;#034;, &amp;#034;&amp;gt;&amp;#034;, &amp;#034;.&amp;#034;, &amp;#034;,&amp;#034;, &amp;#034;;&amp;#034;, &amp;#034;\&amp;#034;&amp;#034;, &amp;#034;?&amp;#034;, &amp;#034;&amp;#039;&amp;#034;, &amp;#034;/&amp;#034;, &amp;#034;:&amp;#034;, &amp;#034;0&amp;#034;, &amp;#034;1&amp;#034;, &amp;#034;2&amp;#034;, &amp;#034;3&amp;#034;, &amp;#034;4&amp;#034;, &amp;#034;5&amp;#034;, &amp;#034;6&amp;#034;, &amp;#034;7&amp;#034;, &amp;#034;8&amp;#034;, &amp;#034;9&amp;#034;, &amp;#034;$&amp;#034;, &amp;#034; &amp;#034;}[/mcode]
A better way to do this - as advised by Michael in the comments:[mcode]ss = Select[CharacterRange[&amp;#034; &amp;#034;, &amp;#034;~&amp;#034;], ! LetterQ@# &amp;amp;]~Join~{&amp;#034; &amp;#034;}[/mcode]
Let me know if you have other ideas how to get special character list. Now we define a function that returns a sorted by string length list of synonyms for a given word based on a few rules. Specifically, synonyms are returned only if (otherwise the original word itself is returned)

[list]
[*]Word is longer than n (say 5) characters
[*]Word is not ending on ing  those are easy to confuse with a different part of speech  verb versus adjective
[*]Word is not a verb  those have too many special forms
[*]Word generally has at least one synonym 
[/list][mcode]SynSort[w_, n_] :=
 Sort[
  With[
   {r = WordData[w, &amp;#034;Synonyms&amp;#034;, &amp;#034;List&amp;#034;]},
   If[StringLength[w] &amp;lt; n || StringTake[w, {-3, -1}] == &amp;#034;ing&amp;#034; || 
     MemberQ[WordData[w, &amp;#034;PartsOfSpeech&amp;#034;], &amp;#034;Verb&amp;#034;] || r == {} || 
     Head[r] == WordData, {w}, {w}~Join~r, {w}~Join~r]
   ]
  , StringLength[#1] &amp;lt; StringLength[#2] &amp;amp;][/mcode]
Built-in knowledge of WordData was used to find synonyms and assess grammatical properties of words. Define a function that actually replaces longer words with shorter synonyms. We need to go ToLowerCase  capitalized WL strings do not have synonyms. Also note Thread[ss -&amp;gt; ss] option to StringSplit that allows to keep original punctuation. [mcode]RePhrase[txt_, ss_, n_] := StringJoin[First[SynSort[#, n]] &amp;amp; /@ StringSplit[ToLowerCase@txt, Thread[ss -&amp;gt; ss]]][/mcode]
And thats it! Do not forget that to tweet you do not even have to leave  just [url=http://community.wolfram.com/groups/-/m/t/157716]use this[/url] on Raspberry Pi:[mcode]SendMessage[&amp;#034;Twitter&amp;#034;, &amp;#034;...TEXT...&amp;#034;][/mcode]
One thing to remember that some nice short synonyms can be reached only in a few steps of synonym network. We did not use it here but it could improve things. For example faux is not a direct synonym of  &amp;#034;fictitious&amp;#034; but a cousin. 
[mcode]WordData[&amp;#034;fictitious&amp;#034;, &amp;#034;Synonyms&amp;#034;, &amp;#034;List&amp;#034;]
Out[]= {&amp;#034;assumed&amp;#034;, &amp;#034;fabricated&amp;#034;, &amp;#034;false&amp;#034;, &amp;#034;fancied&amp;#034;, &amp;#034;fictional&amp;#034;, &amp;#034;fictive&amp;#034;, &amp;#034;pretended&amp;#034;, &amp;#034;put on&amp;#034;, &amp;#034;sham&amp;#034;}

Graph[Union[Sort /@ Flatten[Rest[NestList[Union[Flatten[Thread[# &amp;lt;-&amp;gt; 
 WordData[#, &amp;#034;Synonyms&amp;#034;, &amp;#034;List&amp;#034;]] &amp;amp; /@ Last /@ #]] &amp;amp;, {&amp;#034;&amp;#034; &amp;lt;-&amp;gt; &amp;#034;fictitious&amp;#034;}, 2]]]], 
 VertexLabels -&amp;gt; Placed[&amp;#034;Name&amp;#034;, Below], 
 VertexStyle -&amp;gt; {Opacity[.5], &amp;#034;fictitious&amp;#034; -&amp;gt; Red, &amp;#034;faux&amp;#034; -&amp;gt; Green}, 
 BaseStyle -&amp;gt; EdgeForm[], EdgeStyle -&amp;gt; Opacity[.5], 
 VertexSize -&amp;gt; {&amp;#034;fictitious&amp;#034; -&amp;gt; {&amp;#034;Scaled&amp;#034;, .03}, &amp;#034;faux&amp;#034; -&amp;gt; {&amp;#034;Scaled&amp;#034;, .03}}][/mcode]
[img]/c/portal/getImageAttachment?filename=dsf3445trgb45wtrgbf.png&amp;amp;userId=11733[/img]

Notebook is attached for convenience. </description>
    <dc:creator>Vitaliy Kaurov</dc:creator>
    <dc:date>2014-03-10T02:53:33Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1187128">
    <title>[GOLF] Compact WL for lengthy TeX fractal Sierpinski Triangle</title>
    <link>https://community.wolfram.com/groups/-/m/t/1187128</link>
    <description>[Code Golf][1] is a fun coding competition with participants aiming for the shortest possible code that implements an algorithm. But please feel free to post ANY code that solves the problem - just to have fun! &#xD;
&#xD;
&#xD;
----------&#xD;
&#xD;
**GOAL: write compact Wolfram Language (WL) code that generates TeX code given below to render fractal known as Sierpinski Triangle.**&#xD;
&#xD;
----------&#xD;
&#xD;
&#xD;
I&amp;#039;ve recently seen a tremendously lengthy TeX code that produced a nicely rendered [Sierpinski triangle][2] posted by [@Szabolcs Horvát][at0] on social media. Because Wolfram Community has built-in MathML plugin (based on LaTeX ) we can see result right here!&#xD;
&#xD;
$${{{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}^{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}_{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}}^{{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}^{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}_{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}}_{{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}^{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}_{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}}}^{{{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}^{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}_{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}}^{{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}^{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}_{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}}_{{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}^{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}_{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}}}_{{{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}^{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}_{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}}^{{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}^{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}_{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}}_{{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}^{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}_{{{x}^{x}_{x}}^{{x}^{x}_{x}}_{{x}^{x}_{x}}}}}$$&#xD;
&#xD;
with the TeX code being:&#xD;
&#xD;
![enter image description here][3]&#xD;
&#xD;
# Update:&#xD;
&#xD;
BTW see a similar discussion [**here**][4].&#xD;
&#xD;
&#xD;
 [at0]: http://community.wolfram.com/web/szhorvat&#xD;
&#xD;
&#xD;
  [1]: https://en.wikipedia.org/wiki/Code_golf&#xD;
  [2]: http://mathworld.wolfram.com/SierpinskiSieve.html&#xD;
  [3]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2017-09-18at5.14.33PM.png&amp;amp;userId=11733&#xD;
  [4]: https://codegolf.stackexchange.com/q/138245/4997</description>
    <dc:creator>Vitaliy Kaurov</dc:creator>
    <dc:date>2017-09-18T21:58:05Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/980264">
    <title>Heuristic package to denest radicals</title>
    <link>https://community.wolfram.com/groups/-/m/t/980264</link>
    <description>*NOTE: package and examples notebooks are attached at the end of this post*&#xD;
&#xD;
----------&#xD;
&#xD;
&#xD;
If you square a surd, and then take the square root, you just get it back. But how do you take the ? if you expand it after you square it?&#xD;
&#xD;
![enter image description here][1]&#xD;
&#xD;
Sometimes FullSimplify is smart enough:&#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
Usually, it isnt:&#xD;
&#xD;
![enter image description here][3]&#xD;
&#xD;
![enter image description here][4]&#xD;
&#xD;
Corey Ziegler Hunts wrote a big heuristic package to **denest** radicals:&#xD;
&#xD;
![enter image description here][5]&#xD;
&#xD;
(Why Strad?) But usually radicals dont **denest**:&#xD;
&#xD;
![enter image description here][6]&#xD;
&#xD;
When they do, the result can be startling:&#xD;
&#xD;
![enter image description here][7]&#xD;
&#xD;
Can this be right?&#xD;
&#xD;
![enter image description here][8]&#xD;
&#xD;
Yep. Hopefully this will be obsoleted by Mathematica&amp;#039;s developers.  But maybe not. I confess near total ignorance of Galois theory, which underlies all the **denesting** papers.  But those papers never exhibit any cool new **denestings**!  SAGE and Maple are rumored to **denest**, but again, where are goodies like&#xD;
&#xD;
![enter image description here][9]&#xD;
&#xD;
There are some issues. If there is no **denesting**, it can take infeasibly long to give up. And it doesn&amp;#039;t listify.  It misconstrues lists. &#xD;
&#xD;
Illustrating the widespread underuse of denesting, [Theta Function](https://en.wikipedia.org/wiki/Theta_function) gives:&#xD;
&#xD;
![enter image description here][10]&#xD;
&#xD;
![enter image description here][11]&#xD;
&#xD;
Tsk.&#xD;
&#xD;
![enter image description here][12]&#xD;
&#xD;
Is it possible for the nth root of a real binomial to denest to more than five terms? I&amp;#039;ve never seen one.&#xD;
&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2016-12-13at11.02.59AM.png&amp;amp;userId=11733&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2016-12-13at11.05.03AM.png&amp;amp;userId=11733&#xD;
  [3]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2016-12-13at11.11.57AM.png&amp;amp;userId=11733&#xD;
  [4]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2016-12-13at11.13.18AM.png&amp;amp;userId=11733&#xD;
  [5]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2016-12-13at11.15.04AM.png&amp;amp;userId=11733&#xD;
  [6]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2016-12-13at11.18.09AM.png&amp;amp;userId=11733&#xD;
  [7]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2016-12-13at11.21.46AM.png&amp;amp;userId=11733&#xD;
  [8]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2016-12-13at11.23.18AM.png&amp;amp;userId=11733&#xD;
  [9]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2016-12-13at11.30.09AM.png&amp;amp;userId=11733&#xD;
  [10]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2016-12-13at3.28.43PM.png&amp;amp;userId=11733&#xD;
  [11]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2016-12-13at3.32.31PM.png&amp;amp;userId=11733&#xD;
  [12]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2016-12-13at3.35.03PM.png&amp;amp;userId=11733</description>
    <dc:creator>Bill Gosper</dc:creator>
    <dc:date>2016-12-13T17:39:45Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2726860">
    <title>Benchmarking numerical differential equations in Wolfram Language</title>
    <link>https://community.wolfram.com/groups/-/m/t/2726860</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/d0094aa1-c4bc-47eb-b693-6f30a4f26f3c</description>
    <dc:creator>Hanfeng Zhai</dc:creator>
    <dc:date>2022-12-12T15:08:24Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2406638">
    <title>Enhancing aircraft handling with stability augmentation using LQR</title>
    <link>https://community.wolfram.com/groups/-/m/t/2406638</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/3f8cce09-cf45-450e-a27f-41eab038dac5&#xD;
&#xD;
&#xD;
&#xD;
  [Original NB]: https://www.wolframcloud.com/obj/177f4cd5-e401-4b1f-84ba-905244d26dae</description>
    <dc:creator>Maher Kuzbari</dc:creator>
    <dc:date>2021-11-14T12:38:52Z</dc:date>
  </item>
</rdf:RDF>

