<?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 questions tagged with Computer-Based Maths sorted by active.</description>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3665390" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1732367" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2411433" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/896287" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2131707" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2168033" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1930470" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1933157" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1900786" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1718762" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1773727" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1752461" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1737790" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1728683" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1703100" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1670664" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1258865" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1140640" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1007307" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/994225" />
      </rdf:Seq>
    </items>
  </channel>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3665390">
    <title>&amp;#034;WPGDivide&amp;#034; keep appearing in Wolfram Problem Generator step-by-step solutions</title>
    <link>https://community.wolfram.com/groups/-/m/t/3665390</link>
    <description>In the Wolfram Problem Generator Arithmetic summary Advanced, I keep seeing WPGDivide in the step-by-step solutions. Can&amp;#039;t find anything about this anywhere. Is it a glitch?&#xD;
&#xD;
Edit:Oops I&amp;#039;m dumb, just realized &amp;#034;WPG&amp;#034; probably means &amp;#034;Wolfram Problem Generator&amp;#034;. Regardless, why is this showing up and what does it mean? My apologies if this is something obvious.&#xD;
&#xD;
Could I please get help? It seems like im literally the ONLY person who has this problem. &amp;#034;expert&amp;#034; support is totally useless too. ugh retarded and infuriating.&#xD;
Arithmetic. Crazy this broken POS is $12 a month. I&amp;#039;m sorry but WOW!&#xD;
![enter image description here][1]&#xD;
![enter image description here][2]&#xD;
![enter image description here][3]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot_20260317-150428_Chrome.jpg&amp;amp;userId=3662999&#xD;
  [2]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2026-03-17003953.png&amp;amp;userId=3662999&#xD;
  [3]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2026-03-16220458.png&amp;amp;userId=3662999</description>
    <dc:creator>R L</dc:creator>
    <dc:date>2026-03-18T05:19:24Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1732367">
    <title>[WSC19] Generating Nets for Random Convex Polyhedra</title>
    <link>https://community.wolfram.com/groups/-/m/t/1732367</link>
    <description>## Abstract&#xD;
&#xD;
This project is a visualization of Shephard&amp;#039;s conjecture, which states that every convex polyhedron admits a self-nonoverlapping unfolding. The conjecture remains unsolved to this day. Currently, there exists unfolding data for several predefined polyhedra in the Wolfram Language, and my goal is to create a function that can do this for any random convex polyhedron. I chose this project because of my love for origami and art, and my interest in 3D visualization.&#xD;
&#xD;
## Generating a Graph for Connectivity Between Faces&#xD;
&#xD;
The first step was to create a graph that captures the relationship between faces of the polyhedron so that it could be used later to generate the net. The built-in function DualPolyhedron converts the polyhedron to one where each vertex corresponds to a face on the original. I then extracted the vertices of the dual polyhedron and partitioned and sorted them, allowing me to create a graph using those vertices.&#xD;
&#xD;
&#xD;
	polyhedronfacegraph[polyhedron_]:= &#xD;
    &#xD;
		Block[{dualpolyhedron, vertexlist, vertexpairings, sortedvertices},&#xD;
&#xD;
		dualpolyhedron = DualPolyhedron[polyhedron];  &#xD;
		vertexlist = dualpolyhedron[[2]];   &#xD;
&#xD;
		vertexpairings = Flatten[Table[Append[&#xD;
&#xD;
			Partition[vertexlist[[n]], 2, 1], &#xD;
			{Last[vertexlist[[n]]], First[vertexlist[[n]]]}],  &#xD;
			{n, 1, Length[vertexlist]}], 1];&#xD;
&#xD;
		sortedvertices = Sort /@ vertexpairings // DeleteDuplicates; &#xD;
&#xD;
	        Graph[UndirectedEdge@@@sortedvertices,VertexLabels -&amp;gt; &amp;#034;Name&amp;#034;] &#xD;
    ]&#xD;
A random polyhedron and the graph of its dual:    &#xD;
![enter image description here][1]&#xD;
&#xD;
## Generating Spanning Trees &#xD;
&#xD;
I then used the graph to generate different paths in which a polyhedron could unfold. One way to do this is by using a spanning tree, a tree generated from a graph that retains the same amount of vertices while having the minimum amount of edges. This essentially creates a simple version of what the final net should look like. Each vertex represents a face, and connections between them signify that they are adjacent. It is important to note that not every spanning tree will correspond to a non-overlapping net, which is why I generate a spanning tree from every possible vertex.&#xD;
&#xD;
	generatetrees[graph_] := Table[FindSpanningTree[{graph, n}], {n, 1, VertexCount[graph]}]&#xD;
Five of the spanning trees of the previous polyhedron:&#xD;
![enter image description here][2]&#xD;
## Generating Net Coordinates&#xD;
&#xD;
To create the net of the polyhedron, I had to implement an unfolding algorithm. My first approach was to extract each face individually, but that ended up complicating the transformations. My final algorithm consisted of applying one transformation to move one face to the xy plane, then unfolding using connections between vertices from the spanning tree. &#xD;
&#xD;
I first created a function to find the normal vector to a plane using the cross product.&#xD;
&#xD;
	normvector[coords_] := Cross[coords[[2]] - coords[[1]], coords[[3]] - coords[[1]]];  &#xD;
&#xD;
I then use transformation matrices so that one face is lying on the xy plane, and convert the new mesh into a list of its primitives. The next step is to begin unfolding the polyhedron from its bottom face using the list of spanning trees. To perform an algorithm on each step of the unfolding process, I use the function BreadthFirstScan, which can call the unfold function (discussed next) whenever a new vertex is reached. Finally, the function returns a list of coordinates of the completed net.&#xD;
 &#xD;
	generatenetcoords[mesh_, tree_]:=&#xD;
    &#xD;
		Block[{transformations, transformedmesh, meshlist, transformedmeshlist, normals, polygonfaces, transformedrotation},&#xD;
&#xD;
			polygonfaces = Reap[&#xD;
&#xD;
				meshlist = MeshPrimitives[mesh, 2][[All, 1]];&#xD;
&#xD;
				transformations =      &#xD;
				RotationTransform[{normvector[meshlist[[1]]], {0, 0, -1}}] @*   &#xD;
				TranslationTransform[-PropertyValue[{mesh, {2, 1}}, MeshCellCentroid]];  &#xD;
&#xD;
				transformedmesh = TransformedRegion[mesh, transformations];      &#xD;
				transformedmeshlist = MeshPrimitives[transformedmesh, 2][[All, 1]];     &#xD;
&#xD;
				normals = normvector[#] &amp;amp;/@ transformedmeshlist;    &#xD;
&#xD;
				Sow[transformedmeshlist[[1]], &amp;#034;flat&amp;#034;];&#xD;
&#xD;
				transformedrotation[1] = TransformationFunction[IdentityMatrix[4]];&#xD;
&#xD;
				BreadthFirstScan[tree, 1, &amp;#034;DiscoverVertex&amp;#034; -&amp;gt; unfold[transformedmeshlist, normals, transformedrotation]];,  &#xD;
				{&amp;#034;flat&amp;#034;}][[-1, All, 1]];&#xD;
			Chop[polygonfaces]&#xD;
	]&#xD;
	&#xD;
The unfold function operates by finding the intersection of two polygons, calculating the angle between them, and applying transformations using normal vectors to unfold the face. The function returns coordinates of the transformed polygons.&#xD;
&#xD;
	unfold[meshlist_, normals_, transformedrotation_][u_, v_, _] /; (u =!= v) :=&#xD;
&#xD;
		Block[{edgecoord1, edgecoord2, angle, rotation},&#xD;
&#xD;
		{edgecoord1, edgecoord2} = Intersection @@ meshlist[[{u, v}]]; &#xD;
		angle = DihedralAngle[{edgecoord1, edgecoord2}, normals[[{u, v}]]];&#xD;
		rotation = RotationTransform[angle, edgecoord2 - edgecoord1, Mean[{edgecoord1, edgecoord2}]];&#xD;
		&#xD;
		transformedrotation[u] = transformedrotation[v] @* rotation;&#xD;
		Sow[transformedrotation[u] @ meshlist[[u]], &amp;#034;flat&amp;#034;];&#xD;
	]&#xD;
    &#xD;
## Generating Possible Nets&#xD;
&#xD;
Finally, we put all the functions together. The program iterates through every spanning tree to produce nets using netcoordinates. The third element of each coordinate is deleted to convert the net to 2D. Each net is then tested for overlap by calculating the surface area of the original polyhedron and comparing it to the surface area of the net. Only nets where the two surface areas are equal are appended to the list that is returned. &#xD;
&#xD;
	generateallnets[polyhedron_] := &#xD;
    &#xD;
	    Block[{netcoords, trees, graph, mesh, surfacearea, netsurfacearea, goodnets},&#xD;
&#xD;
	    mesh = BoundaryDiscretizeGraphics[polyhedron];   &#xD;
	    graph = polyhedronfacegraph[polyhedron];&#xD;
	    trees = generatetrees[graph];&#xD;
&#xD;
	    goodnets = {};   &#xD;
&#xD;
	    Table[     &#xD;
		    netcoords = First@generatenetcoords[mesh, trees[[treeposition]]];    &#xD;
		    netcoords = Table[Delete[netcoords[[n, m]], {3}], {n, 1, Length[netcoords]}, {m, 1, 3}];        &#xD;
&#xD;
		    surfacearea = SurfaceArea[polyhedron];&#xD;
		    netsurfacearea = RegionMeasure[RegionUnion[Polygon /@ netcoords]];&#xD;
&#xD;
		    If[surfacearea == netsurfacearea,             &#xD;
		    	AppendTo[goodnets, Graphics[{Hue[0.94, 0.22, 1.], EdgeForm[{Thin, Pink}], Polygon /@ netcoords}]]        &#xD;
		    ];,  &#xD;
&#xD;
		    {treeposition, 1, Length[trees]} &#xD;
	    ];    &#xD;
&#xD;
	    Row[{Graphics3D[polyhedron], goodnets}]&#xD;
	]&#xD;
&#xD;
&#xD;
## Outputs&#xD;
&#xD;
Upon taking a polyhedron object in as its argument, the final output of the function is a 3D graphic of the original polyhedron and a list of all possible nets.&#xD;
&amp;lt;br&amp;gt;&#xD;
&amp;lt;br&amp;gt;&#xD;
An output of a random polyhedron:&#xD;
![enter image description here][3]&#xD;
&#xD;
## Summary &#xD;
&#xD;
With the help of my mentor, I was able to create a program that creates non-overlapping nets for random polyhedra. The process consisted of extracting graphs, creating spanning trees, generating nets, and checking for overlap. The function returns several successful results for every random polyhedron that I tested, although the program does run quite slowly for polyhedra with high numbers of faces, as the complexity of the graph and number of spanning trees increase drastically as the number of faces increase. From this project, I acquired knowledge of many aspects of three-dimensional modeling and geometric transformations, and I hope to work on extensions of this project in the future.&#xD;
&#xD;
## Future Work&#xD;
&#xD;
A possible extension would be applying a similar algorithm to non-convex polyhedra and showing that it is impossible to generate a non-overlapping net in some cases. Additionally, optimization algorithms could also be implemented to speed up the unfolding process. For example, another function could also be created to generate the first net that is valid, which would greatly increase speed if only one net is desired.&#xD;
&#xD;
## Acknowledgements&#xD;
&#xD;
I would like to sincerely thank my mentor, Jeremy Stratton-Smith, for providing invaluable advice and help throughout the entire project process. I would also like to thank Chip Hurst for his unfolding algorithm and tips for 3D transformations. Lastly, I would like to thank the Wolfram Summer Camp team for providing me with this opportunity to pursue a project of my choice.&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=polygraph.PNG&amp;amp;userId=1622104&#xD;
  [2]: https://community.wolfram.com//c/portal/getImageAttachment?filename=graphs.PNG&amp;amp;userId=1622104&#xD;
  [3]: https://community.wolfram.com//c/portal/getImageAttachment?filename=image.PNG&amp;amp;userId=1622104</description>
    <dc:creator>Sunny Wang</dc:creator>
    <dc:date>2019-07-12T01:09:08Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2411433">
    <title>Need more help on code for identity involving the Meijer G .</title>
    <link>https://community.wolfram.com/groups/-/m/t/2411433</link>
    <description>In [this][1] message at Stack Exchange, there is an identity involving the Meijer G function for M2 found at https://oeis.org/A157852.&#xD;
&#xD;
My question here is how can I code a check to a few upper limits in place of infinity to see if we can make&#xD;
&#xD;
![enter image description here][2]&#xD;
Of course, the proof is always best, particularly here where the Meijer G function for M2 is very sluggish for large upper limits! (I&amp;#039;ve never gotten over 20.)&#xD;
&#xD;
For all my work on this form of M2 see&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][3]&#xD;
&#xD;
&#xD;
  [1]: https://math.stackexchange.com/questions/4303385/can-we-find-sums-for-int-1-infty-e-pi-i-t-leftt1-t-1-right-dt&#xD;
  [2]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2021-11-22063320.png&amp;amp;userId=366611&#xD;
  [3]: https://www.wolframcloud.com/obj/ba90a470-9cc6-4742-b089-613a6ee0d804</description>
    <dc:creator>Marvin Ray Burns A.G.S. (cum laude)</dc:creator>
    <dc:date>2021-11-22T11:37:59Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/896287">
    <title>Use Manipulate in a ParametricPlot ?</title>
    <link>https://community.wolfram.com/groups/-/m/t/896287</link>
    <description>Hi, I&amp;#039;m trying to manipulate a Parametric Plot, but I clearly see its not working because I&amp;#039;m not able to fix it, that&amp;#039;s why I would love some help.&#xD;
Regards&#xD;
&#xD;
    Manipulate[ParametricPlot[{r Cos[x], r Sin[y]}, {y,1,k}, {x, 0, n}, Mesh -&amp;gt; Full], {n, 0, 2 Pi}, {k, 1, 2}]</description>
    <dc:creator>Muhammad Afzal</dc:creator>
    <dc:date>2016-07-30T07:33:09Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2131707">
    <title>Manipulate in a ParametricPlot</title>
    <link>https://community.wolfram.com/groups/-/m/t/2131707</link>
    <description>Hello, I used ParamtericPlot for obtaining curves by Euler elasticity theory. The shape of the curve depends on alpha variable which is initial angle in this issue. I am trying to use Manipulate in a ParametricPlot and changing alpha, but something is wrong (the shape of the curve is constant, but I don&amp;#039;t know how to plot it without prior defining alpha). I would really appreciate your help and advise. Regards&#xD;
&#xD;
     l = 300;&#xD;
        \[Alpha] = 130 Degree;&#xD;
        k = Sin[\[Alpha]/2]^2;&#xD;
        m = 2;&#xD;
        \[Lambda]L = (2*m*EllipticK[k])/l;&#xD;
        x1L[s_] := -s + &#xD;
           2/\[Lambda]L (EllipticE[&#xD;
               JacobiAmplitude[s*\[Lambda]L + EllipticK[k], k], k] - &#xD;
              EllipticE[JacobiAmplitude[EllipticK[k], k], k]);&#xD;
        x2L[s_] := -2 k/\[Lambda]L (JacobiCN[EllipticK[k] + (s*\[Lambda]L), &#xD;
             k]);&#xD;
         Manipulate[&#xD;
         ParametricPlot[{x1L[s], x2L[s]}, {s, 0, l}, AxesLabel -&amp;gt; {x, y}, &#xD;
          LabelStyle -&amp;gt; {FontSize -&amp;gt; 10, Darker[Black], Bold}, &#xD;
          PlotLegends -&amp;gt; &amp;#034;xlocal&amp;#034;], {\[Alpha], 0, 2 Pi}]</description>
    <dc:creator>Alexandra Man</dc:creator>
    <dc:date>2020-12-07T16:51:19Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2168033">
    <title>Solve a  Euro Math Cup 2020 Problem with GeometricScene</title>
    <link>https://community.wolfram.com/groups/-/m/t/2168033</link>
    <description>![enter image description here][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=2021-01-19_19-16-12.gif&amp;amp;userId=23928&#xD;
  [2]: https://www.wolframcloud.com/obj/fb24fca0-a37b-4671-8d20-0ef23bb42762</description>
    <dc:creator>Shenghui Yang</dc:creator>
    <dc:date>2021-01-20T04:18:41Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1930470">
    <title>Computational Thinking - Self-Study, Problem Solving Learning Resources</title>
    <link>https://community.wolfram.com/groups/-/m/t/1930470</link>
    <description>![enter image description here][1]&#xD;
&#xD;
The resources in this post have now been released on WolframU with completion certificates available.&#xD;
&#xD;
Please visit https://www.wolfram.com/wolfram-u/catalog/computational-thinking/&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=comp-thinking-icon.png&amp;amp;userId=778999</description>
    <dc:creator>Alec Titterton</dc:creator>
    <dc:date>2020-04-09T13:32:00Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1933157">
    <title>Question about the plot of a graphic</title>
    <link>https://community.wolfram.com/groups/-/m/t/1933157</link>
    <description>Hi there, if someone know why my plots are all gray, and could help me with my code, I will be extremely grateful! &#xD;
Have a nice evening!</description>
    <dc:creator>Michelle Gavilanez</dc:creator>
    <dc:date>2020-04-10T22:25:56Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1900786">
    <title>Two different accounts giving the same result in Mathematica</title>
    <link>https://community.wolfram.com/groups/-/m/t/1900786</link>
    <description>Hello. Although I selected the s value differently in these two files, the same result came out. I couldn&amp;#039;t understand the reason. I wonder if the results I get are correct. Where do you think I might have made a mistake?&#xD;
&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/db2a2a27-339f-4abb-bd1f-dd70c573a80d&#xD;
  [2]: https://www.wolframcloud.com/obj/52dba00d-7f6b-4358-8e42-8da468a5bf89</description>
    <dc:creator>Meryem Aslı</dc:creator>
    <dc:date>2020-03-17T23:40:39Z</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/1773727">
    <title>CBM resource that maps Wolfram Language notation to code?</title>
    <link>https://community.wolfram.com/groups/-/m/t/1773727</link>
    <description>Being a programmer, one of the challenges I find with math is unfamiliar notation. I&amp;#039;ll use summation as an example (as I actually understand that one):&#xD;
&#xD;
![enter image description here][1]&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Sum.jpg&amp;amp;userId=186897&#xD;
&#xD;
You could explain this formula fairly easily with a description (for all integers between 3 and 7, square each value and then add the squares together). The more complex the formula, however, the more complex the description.&#xD;
&#xD;
When I learn a new type of formula notation, I find it helps to create a &amp;#034;sudo code&amp;#034; version. Here&amp;#039;s a sudo code example (again, very basic) for summation:&#xD;
&#xD;
`For each integer i between 3 and 7:&#xD;
    CurrentValue = i^2&#xD;
    SummedValue = SummedValue + CurrentValue&#xD;
Print SummedValue`&#xD;
&#xD;
This not only provides an explanation of the notation, but allows my programmer mind to understand the process for performing the calculation. &#xD;
&#xD;
From a CBM perspective, are there any resources that provide this type of math-to-code examples?</description>
    <dc:creator>Les Fister</dc:creator>
    <dc:date>2019-08-23T21:36:24Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1752461">
    <title>Open problems in  computational linguistics</title>
    <link>https://community.wolfram.com/groups/-/m/t/1752461</link>
    <description>I should prepare some paper for a colloquium (kinda student-task) and it should cover the following points:&#xD;
&#xD;
(1) at least one notable discovery in theoretical informatics (or computer science)&#xD;
&#xD;
(2) at least one open problems in theoretical informatics&#xD;
&#xD;
(3) an example of short notable proof of some result in theoretical informatics&#xD;
&#xD;
I would like that it was related to computational linguistics. I have some basic knownledge (2 year cs student) but I don&amp;#039;t know from what I should start to explore these questions.&#xD;
 &#xD;
Can you draw some examples of it? Or some sources?&#xD;
&#xD;
Thank you</description>
    <dc:creator>Constantin Constantinov</dc:creator>
    <dc:date>2019-08-02T17:47:32Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1737790">
    <title>3D Plot a maximization of a definite integral</title>
    <link>https://community.wolfram.com/groups/-/m/t/1737790</link>
    <description>My Mathematica code ran forever; it took me the whole day and finally returned &amp;#039;Why the Beep?&amp;#039; message saying: &amp;#034;There appears to be an error in the file named below. You should close it without saving, then check the &amp;#034;Parse and load entire notebook into memory upon opening&amp;#034; checkbox in the Notebook Options dialog. File name: ....&amp;#034;&#xD;
&#xD;
What I&amp;#039;m trying to do is to 3D plot a maximization result of an definite integral under some constraints on the parameter values. Let me reproduce my code:&#xD;
&#xD;
    s = 2; d = 4/5; t = 0;&#xD;
    J= -((-(64/25) + 8/5 k (-1 + r) + k (k + 4 r + k (-3 + r) r))/(40 (-1 + r))) + c (((-1 + q) (16/25 (1 - 2 r) + (8 k r^2)/5 + k^2 r (1 + (-3 + r) r)))/(4 (-1 + r)^2) + (-(64/25) + 8/5 k (-1 + r) + k (k + 4 r + k (-3 + r) r))/(8 (-1 + r)))&#xD;
    AA = (((1 - r)*x + r*y - J)*(1 - t) - (d - t))/s^2; &#xD;
    BB = (((1 - r)*x + r*k - J)*(1 - t) - (d - t))/s^2; &#xD;
    CC = (((1 - r)*x + r*(x - k) + r*y - J)*(1 - t) - (d - t))/s^2; &#xD;
    DD = (((1 - r)*x + r*(x - k) + r*k - J)*(1 - t) - (d - t))/s^2; &#xD;
    EE = (((1 - r)*x + r*(x - k) + r*y - J)*(1 - t) - (d - t))/s^2; &#xD;
    FF = (((1 - r)*x + r*(x - k) + r*k - J)*(1 - t) - (d - t))/s^2;&#xD;
    regAA = ImplicitRegion[AA &amp;gt; 0 &amp;amp;&amp;amp; (d - r*k)/(1 - r) &amp;lt;= x &amp;lt;= k &amp;amp;&amp;amp; (d + r*x - x)/r &amp;lt;= y &amp;lt;= k, {x, y}];&#xD;
    regBB = ImplicitRegion[BB &amp;gt; 0 &amp;amp;&amp;amp; (d - r*k)/(1 - r) &amp;lt;= x &amp;lt;= k &amp;amp;&amp;amp; k &amp;lt;= y &amp;lt;= s, {x, y}]; &#xD;
    regCC = ImplicitRegion[CC &amp;gt; 0 &amp;amp;&amp;amp; k &amp;lt;= x &amp;lt;= d + r*k &amp;amp;&amp;amp; (d + r*k - x)/r &amp;lt;= y &amp;lt;= k, {x, y}];&#xD;
    regDD = ImplicitRegion[DD &amp;gt; 0 &amp;amp;&amp;amp; k &amp;lt;= x &amp;lt;= d + r*k &amp;amp;&amp;amp; k &amp;lt;= y &amp;lt;= s, {x, y}];&#xD;
    regEE = ImplicitRegion[EE &amp;gt; 0 &amp;amp;&amp;amp; d + r*k &amp;lt;= x &amp;lt;= s &amp;amp;&amp;amp; 0 &amp;lt;= y &amp;lt;= k, {x, y}];&#xD;
    regFF = ImplicitRegion[FF &amp;gt; 0 &amp;amp;&amp;amp; d + r*k &amp;lt;= x &amp;lt;= s &amp;amp;&amp;amp; k &amp;lt;= y &amp;lt;= s, {x, y}];&#xD;
    f2 = Integrate[AA, {x, y} \[Element] regAA] + Integrate[BB, {x, y} \[Element] regBB] + Integrate[CC, {x, y} \[Element] regCC] + Integrate[DD, {x, y} \[Element] regDD] + Integrate[EE, {x, y} \[Element] regEE] + Integrate[FF, {x, y} \[Element] regFF];&#xD;
    max2 = Flatten[ Table[{c, q, MaxValue[{f2, 0 &amp;lt;= c &amp;lt;= 1, 1 &amp;lt;= q &amp;lt;= 2, c*q &amp;lt;= 1, d &amp;lt;= k &amp;lt;= 2, 0 &amp;lt;= r*k &amp;lt; d}, {k, r}]}, {c, 0, 1, .1}, {q, 1, 2, .1}], 1]; &#xD;
    maxk2 = Flatten[Table[{c, q, k /. Last@Maximize[{f2, 0 &amp;lt;= c &amp;lt;= 1, 1 &amp;lt;= q &amp;lt;= 2, c*q &amp;lt;= 1, d &amp;lt;= k &amp;lt;= 2, 0 &amp;lt;= r*k &amp;lt; d}, {k, r}]}, {c, 0, 1, .1}, {q, 1, 2, .1}], 1];&#xD;
    maxr2 = Flatten[Table[{c, q, r /. Last@Maximize[{f2, 0 &amp;lt;= c &amp;lt;= 1, 1 &amp;lt;= q &amp;lt;= 2, c*q &amp;lt;= 1, d &amp;lt;= k &amp;lt;= 2, 0 &amp;lt;= r*k &amp;lt; d}, {k, r}]}, {c, 0, 1, .1}, {q, 1, 2, .1}], 1];&#xD;
    {ListPlot3D[max2, AxesLabel -&amp;gt; {&amp;#034;c&amp;#034;, &amp;#034;q&amp;#034;, &amp;#034;f&amp;#034;}], ListPlot3D[maxk2, PlotRange -&amp;gt; {0, 2}, AxesLabel -&amp;gt; {&amp;#034;c&amp;#034;, &amp;#034;q&amp;#034;, &amp;#034;k&amp;#034;}], ListPlot3D[maxr2, PlotRange -&amp;gt; {0, 1}, AxesLabel -&amp;gt; {&amp;#034;c&amp;#034;, &amp;#034;q&amp;#034;, &amp;#034;r&amp;#034;}]}&#xD;
    &#xD;
Can anyone help in figuring out any error in the code? &#xD;
&#xD;
Edit: I am attaching my Notebook file which will be helpful in understanding what I&amp;#039;m doing.</description>
    <dc:creator>Ian P</dc:creator>
    <dc:date>2019-07-16T03:06:38Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1728683">
    <title>[WSS19] Mathematical Auto-Grader in Calculus, Algebra 1 and Algebra 2</title>
    <link>https://community.wolfram.com/groups/-/m/t/1728683</link>
    <description>![A test implementation of the package][1]&#xD;
    **Abstract**&#xD;
&#xD;
   In order to automatically grade student problems, one must identify the scope and level of the problem and then define equivalent answers appropriate to the context of the question and knowledge of the student. To this end, we first train a Neural Network Classifier on a data set of problems in Algebra 1, Algebra 2 and Calculus. Then, using a combination of rule-based checks and the theorem prover, we define equivalent answers, then check that particular rules were not used in order to maintain equivalence at the level of the student to prevent cheating. &#xD;
&#xD;
**Introduction**&#xD;
&#xD;
When providing questions to students online, the teacher is often left with a dilemma. Do you give the student a multiple choice problem that fails to properly test their ability by allowing guessing, or do you give them a long answer that will only accept one correct answer, when there might be multiple equivalent answers? To add in all possible answers would be an onerous task, thus it would be preferable to have the system automatically identify all possible answers. However, this presents a challenge in its own right. How does one limit the possible answers to those that the student would have reached based on the level of their knowledge, and how does one deal with problems that may limit the scope of the equivalent answers? To this end, we define a two-part problem: classification of the problem&amp;#039;s level and scope and cross-checking for equivalent answers. &#xD;
	&#xD;
**Classification and context identification**&#xD;
&#xD;
The problem of classification is often solved by machine learning techniques trained on large data sets. In this case, I retrained a series of models in the Wolfram language &amp;#034;Classify&amp;#034; function on an 1800 question data set in algebra 1, 2  and calculus, grouping all the problems and providing the problems and groupings to the network, i.e. training in a supervised manner. Then, the accuracy of each model was tested by comparing the probability of identification as the proper grouping to the highest probability of the other two groups, using: &#xD;
&#xD;
    Clear[questionClassifier]&#xD;
    questionClassifier = &#xD;
     Classify[&amp;lt;|&amp;#034;algebra 1&amp;#034; -&amp;gt; algebra1Questions, &#xD;
       &amp;#034;algebra 2&amp;#034; -&amp;gt; algebra2Qs|&amp;gt; , PerformanceGoal -&amp;gt; &amp;#034;Quality&amp;#034;, &#xD;
      Method -&amp;gt; &amp;#034;Markov&amp;#034;]&#xD;
    &#xD;
    &#xD;
    algebra1IsAlgebra1 = &#xD;
      questionClassifier[algebra1Questions, {&amp;#034;Probability&amp;#034;, &amp;#034;algebra 1&amp;#034;}];&#xD;
    algebra1IsAlgebra2 = &#xD;
      questionClassifier[algebra1Questions, {&amp;#034;Probability&amp;#034;, &amp;#034;algebra 2&amp;#034;}];&#xD;
    &#xD;
    algebra2IsAlgebra1 = &#xD;
      questionClassifier[algebra2Qs, {&amp;#034;Probability&amp;#034;, &amp;#034;algebra 1&amp;#034;}];&#xD;
    algebra2IsAlgebra2 = &#xD;
      questionClassifier[algebra2Qs, {&amp;#034;Probability&amp;#034;, &amp;#034;algebra 2&amp;#034;}];&#xD;
    &#xD;
    lp = ListLogPlot[#right/#wrong &amp;amp;@ &amp;lt;|&amp;#034;right&amp;#034; -&amp;gt; algebra1IsAlgebra1, &#xD;
         &amp;#034;wrong&amp;#034; -&amp;gt; algebra1IsAlgebra2|&amp;gt;, AxesLabel -&amp;gt; {&amp;#034;Data&amp;#034;}, &#xD;
       PlotLabel -&amp;gt; &amp;#034;Algebra 1 &amp;#034;, GridLines -&amp;gt; {{}, {1}}, &#xD;
       GridLinesStyle -&amp;gt; Red] ;&#xD;
    lp1 = ListLogPlot[#right/#wrong &amp;amp;@ &amp;lt;|&amp;#034;right&amp;#034; -&amp;gt; algebra2IsAlgebra2, &#xD;
         &amp;#034;wrong&amp;#034; -&amp;gt; algebra2IsAlgebra1|&amp;gt;, AxesLabel -&amp;gt; {&amp;#034;Data&amp;#034;}, &#xD;
       PlotLabel -&amp;gt; &amp;#034;Algebra 2&amp;#034;, GridLines -&amp;gt; {{}, {1}}, &#xD;
       GridLinesStyle -&amp;gt; Red];&#xD;
&#xD;
Where the data sets are drawn from &amp;#034;final_project_trainingdata.mx&amp;#034; (attached). &#xD;
&#xD;
All models were given the &amp;#034;Quality&amp;#034; goal to improve accuracy at the cost of training time, as the training is taking place ahead of time, and the system is not retrained live. However, when this was performed on data generated by the Wolfram|Alpha Problem Generator, where the addition of calculus made &amp;#034;What is 1+1&amp;#034; evaluate as calculus independent of the number of inputs. Thus, the calculus tag was removed, and this identification was moved to a context-based pattern matching.  Total training inputs are 1302, with 651 each of algebra 1 and 2. &#xD;
![Results of Classifier with different Models. Automatic attempts multiple models at different points, updating the model used live][2]&#xD;
	&#xD;
	&#xD;
From the above results, one can clearly see that the Markov model is superior on this data set, however, it may be worse for others. &#xD;
 	&#xD;
**Identification of Context**&#xD;
	&#xD;
The context of the problem, however, does not get captured by the classifier above. The classifier simply finds the level, meanwhile the context, for example, would be &amp;#034;write your answer as a simplified fraction&amp;#034;. These contexts are identified via pattern matching. These rules are then used to assign a specific tag: &#xD;
&#xD;
    turnOffEquivFrac[question_] := &#xD;
      StringMatchQ[question, {&amp;#034;*raction*implest form&amp;#034;}];&#xD;
    isMatrixQ[answer_] := MatchQ[answer, MatrixForm];&#xD;
    allpoints[question_] := StringMatchQ[question, {&amp;#034;*all points*&amp;#034;}];&#xD;
    eitherPointfirst[a_, b_, c_, &#xD;
      d_] := {{&amp;#034;(&amp;#034;, a, b, &amp;#034;)&amp;#034;}, {&amp;#034;(&amp;#034; c, d &amp;#034;)&amp;#034;}} -&amp;gt; {{&amp;#034;(&amp;#034; c, d &amp;#034;)&amp;#034;}, {&amp;#034;(&amp;#034;, &#xD;
        a, b, &amp;#034;)&amp;#034;}}&#xD;
    isPoint[answer_] := StringMatchQ[answer, {&amp;#034;(*,*)&amp;#034;}];&#xD;
    improperFraction[question_] := &#xD;
      StringMatchQ[question, &amp;#034;*mproper fraction*&amp;#034;];&#xD;
    decForm[question_] := StringMatchQ[question, &amp;#034;*ecimal form*&amp;#034;];&#xD;
    isCalcQ[question_] := &#xD;
      StringMatchQ[&#xD;
       question, {&amp;#034;*erivative*&amp;#034;, &amp;#034;*ifferniate*&amp;#034;, &amp;#034;*ntegra*&amp;#034;, &#xD;
        &amp;#034;*aylor*xpand*&amp;#034;, &amp;#034;*acLa*xpand*&amp;#034;, &amp;#034;*imit*&amp;#034;}];&#xD;
    mixedNumber[question_] := StringMatchQ[question, &amp;#034;*ixed number*&amp;#034;]; &#xD;
&#xD;
&#xD;
![Table of Tags corresponding to concepts][3]&#xD;
 &#xD;
**Identifying Correct Answers**&#xD;
&#xD;
The identification of correct answers was performed by the implementation of the below code as part of a new package. &#xD;
&#xD;
&#xD;
    correctAnswer[answer_, correct_]:=MatchQ[Interpreter[&amp;#034;MathExpression&amp;#034;][answer], Interpreter[&amp;#034;MathExpression&amp;#034;][correct]]&#xD;
    turnOffEquivFrac[question_]:=StringMatchQ[question, {&amp;#034;*raction*implest form&amp;#034;}];&#xD;
    isMatrix[answer_]:=MatchQ[answer, MatrixForm];&#xD;
    allpoints[question_]:=StringMatchQ[question, {&amp;#034;*all points*&amp;#034;}];&#xD;
    eitherPointfirst[a_, b_,c_, d_]:= {{&amp;#034;(&amp;#034;,a, b, &amp;#034;)&amp;#034;},{&amp;#034;(&amp;#034;c, d &amp;#034;)&amp;#034;}}-&amp;gt; {{&amp;#034;(&amp;#034;c, d &amp;#034;)&amp;#034;},{&amp;#034;(&amp;#034;,a, b, &amp;#034;)&amp;#034;}}&#xD;
    isPoint[answer_]:=StringMatchQ[answer, {&amp;#034;(*,*)&amp;#034;}];&#xD;
    improperFraction[question_]:=StringMatchQ[question, &amp;#034;*mproper fraction*&amp;#034;];&#xD;
    decForm[question_]:=StringMatchQ[question, &amp;#034;*ecimal form*&amp;#034;];&#xD;
    isCalc[question_]:=StringMatchQ[question, {&amp;#034;*erivative*&amp;#034;, &amp;#034;*ifferniate*&amp;#034;, &amp;#034;*ntegra*&amp;#034;, &amp;#034;*aylor*xpand*&amp;#034;, &amp;#034;*acLa*xpand*&amp;#034;, &amp;#034;*imit*&amp;#034;}];&#xD;
    mixedNumber[question_]:=StringMatchQ[question, &amp;#034;*ixed number*&amp;#034;];&#xD;
    (*This is the wrong way to do it, patern matching is better here*)&#xD;
    expandToSix[answer_, correct_, x_]:=If[Series[answer, {x, 0, 6}]==Series[correct, {x, 0, 6}], True, False]&#xD;
    algebratheorems={ForAll[{a,b,c}, g[a, g[b,c]]==g[g[a, b], c]], &#xD;
    				 ForAll[{a,b}, g[a, b]==g[b,a]], &#xD;
    				 ForAll[{a,b}, f[a,b]==f[b,a]],&#xD;
    				 ForAll[{a,b,c}, f[a,f[b,c]]==f[f[a,b],c]],&#xD;
    				 ForAll[{a,b,c}, f[a, g[c,b]]==g[f[a,c], f[a,b]]],&#xD;
    				 ForAll[a, g[a,e]==a],&#xD;
    				 ForAll[a, f[a, e]==e],&#xD;
    				 ForAll[a, f[a, n]==a],&#xD;
    				 ForAll[a, g[a, inv[a]]==e],&#xD;
    				 ForAll[a, f[a, inv1[a]]==n]} (*This defines an abelian ring w/ distributive property*)&#xD;
    				 &#xD;
    algebraandtrigtheorems={ForAll[{a,b,c}, g[a, g[b,c]]==g[g[a, b], c]], &#xD;
    				 ForAll[{a,b}, g[a, b]==g[b,a]], &#xD;
    				 ForAll[{a,b}, f[a,b]==f[b,a]],&#xD;
    				 ForAll[{a,b,c}, f[a,f[b,c]]==f[f[a,b],c]],&#xD;
    				 ForAll[{a,b,c}, f[a, g[c,b]]==g[f[a,c], f[a,b]]],&#xD;
    				 ForAll[a, g[a,e]==a],&#xD;
    				 ForAll[a, f[a, e]==e],&#xD;
    				 ForAll[a, f[a, n]==a],&#xD;
    				 ForAll[a, g[a, inv[a]]==e],&#xD;
    				 ForAll[a, f[a, inv1[a]]==n], &#xD;
    				 ForAll[{a,b}, sin[g[a,b]]==g[f[sin[a],cos[b]], f[sin[b], cos[a]]]],&#xD;
    				 ForAll[ {a,b}, cos[g[a,b]]==g[f[cos[a],cos[b]], f[sin[inv[b]], sin[a]]]],&#xD;
    				 ForAll[a, sin[inv[a]]==inv[sin[a]]],&#xD;
    				 ForAll[a, cos[inv[a]]==cos[a]],&#xD;
    				 ForAll[a, g[f[sin[a],sin[a]], f[cos[a], cos[a]]]==n]}&#xD;
    theorems=&amp;lt;|&amp;#034;algebra 1&amp;#034;-&amp;gt; {algebratheorems}, &amp;#034;algebra 2&amp;#034;-&amp;gt; {algebraandtrigtheorems}, &amp;#034;calc&amp;#034;-&amp;gt; {algebraandtrigtheorems}|&amp;gt;;&#xD;
    removeSinCos[given_]:=given/.{Sin-&amp;gt;sin, Cos-&amp;gt;cos} &#xD;
    removeSinCos[Sin[5]+Cos[x]]&#xD;
    replacePlus[given_]:=given/.{Plus-&amp;gt; g, Times[-1, amin_]-&amp;gt;inv[amin]}&#xD;
    replacePlus[a-b]&#xD;
    replaceMulti[given_]:=given/.{Times-&amp;gt; f, Power[adiv_, -1]-&amp;gt; inv1[adiv]}&#xD;
    replaceTanSecCscCot[given_]:=given/.{Tan[atan_]-&amp;gt; f[sin[atan],inv1[cos[atan]]], Sec[asec_]-&amp;gt; inv1[cos[asec]], Csc[acsc_]-&amp;gt; inv1[sin[acsc]], Cot[acot_]-&amp;gt; f[inv1[sin[acot]],cos[acot]]}&#xD;
    replaceTanSecCscCot[Tan[y]+ Csc[x]]&#xD;
    removeProperFormat[given_]:=replacePlus[replaceMulti[removeSinCos[replaceTanSecCscCot[given]]]]&#xD;
    determinetags[question_]:=If[allpoints[question], &#xD;
    									If[turnOffEquivFrac[question], 5, &#xD;
    												If[decForm[question], 6, 3]],&#xD;
    									If[turnOffEquivFrac[question], 1, &#xD;
    											If[decForm[question], 2, &#xD;
    												If[isCalc[question], 4, &#xD;
    													If[mixedNumber[question], 7, &#xD;
    														If[improperFraction[question], 8, 0]&#xD;
    													   ]&#xD;
    													]&#xD;
    												]&#xD;
    											]&#xD;
    								]; &#xD;
    &#xD;
    &#xD;
    equivalentAnswer[level_, tags_, answer_, correct_]:=&#xD;
    Module[{formattedanswer, formattedcorrectanswer, proof}, &#xD;
    			&#xD;
    				If[tags==4, level=&amp;#034;calc&amp;#034;];&#xD;
    				Switch[tags, &#xD;
    				0| 3| 4, If[correctAnswer[answer, correct], True, If[Simplify[Interpreter[&amp;#034;MathExpression&amp;#034;][answer]- Interpreter[&amp;#034;MathExpression&amp;#034;][correct]]==0, &#xD;
    					If[UnsameQ[Head[Interpreter[&amp;#034;MathExpression&amp;#034;][answer]], Failure], &#xD;
    						formattedanswer:=removeProperFormat[Interpreter[&amp;#034;MathExpression&amp;#034;][answer]];&#xD;
    						formattedcorrectanswer=removeProperFormat[Interpreter[&amp;#034;MathExpression&amp;#034;][correct]];&#xD;
    						proof=TimeConstrained[FindEquationalProof[formattedanswer==formattedcorrectanswer , theorems[level]],10];&#xD;
    							If[proof[&amp;#034;Logic&amp;#034;]==&amp;#034;EquationalLogic&amp;#034;, &#xD;
    								If[Complement[Query[Key[{&amp;#034;SubstitutionLemma&amp;#034;, All}proof[&amp;#034;ProofDataset&amp;#034;][&amp;#034;Statement&amp;#034;]]], theorems[level]]=={}, True, False],&#xD;
    								False],&#xD;
    						False],&#xD;
    					False]],&#xD;
    				1, If[correctAnswer[answer, correct], True, False], &#xD;
    				2, If[correctAnswer[answer, correct], True, False], &#xD;
    				5, If[Complement[StringSplit[answer, &amp;#034;),(&amp;#034;], StringSplit[correct, &amp;#034;),(&amp;#034;]]=={}, True, False],  &#xD;
    				6, If[Complement[StringSplit[answer, &amp;#034;),(&amp;#034;], StringSplit[correct, &amp;#034;),(&amp;#034;]]=={}, True, False],&#xD;
    				_, MatchQ[answer, correct] (*exact match is default case*)&#xD;
    				&#xD;
    				]] &#xD;
    				&#xD;
    checkforEquivlentanswers[question_, answer_, correct_, level_]:=&#xD;
    Module[{t},&#xD;
    			t=determinetags[question];&#xD;
    			equivalentAnswer[level, t, answer, correct]]&#xD;
&#xD;
&#xD;
&#xD;
**Conclusions and Future Work**&#xD;
&#xD;
This project has developed a Classifier and a Package that may be implemented in a variety of applications. Ideally, one can consider two exemplars. One has the student submits an answer to a randomly selected question from a database that has been built using Wolfram|Alpha&amp;#039;s Problem Generator. The student may select one of the three levels, receive a question, submit an answer and check that it is correct. After the correct answer has been submitted, the system automatically pulls a new question from the list in the selected type. The second allows for the teacher to create a quiz and store it as a new database, which will then be fed to the first exemplar. Thus, we see this project as a quiet server-side application, and as a service that would be deliverable to a client. Further work could encompass the addition of further levels of questions, the use of graphical data as a selected answer or the inclusion of a retraining function in the neural net to improve classification accuracy, as well as the integration of the data into the described GUIs.  &#xD;
![Further tests of the check equivalent answers function][4]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=working_versions.PNG&amp;amp;userId=1726808&#xD;
  [2]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Training_Model.png&amp;amp;userId=1726808&#xD;
  [3]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Tags.png&amp;amp;userId=1726808&#xD;
  [4]: https://community.wolfram.com//c/portal/getImageAttachment?filename=more_tests.PNG&amp;amp;userId=1726808</description>
    <dc:creator>Silas Grossberndt</dc:creator>
    <dc:date>2019-07-10T17:41:19Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1703100">
    <title>Get computer-based math materials/resources?</title>
    <link>https://community.wolfram.com/groups/-/m/t/1703100</link>
    <description>A video at http://www.wolfram.com/broadcast/video.php?c=91&amp;amp;v=2367 tells how to install the &amp;#034;CMB [Computer-based Math] Resources&amp;#034; to use with *Mathematica*.&#xD;
&#xD;
But what and where are these resources?</description>
    <dc:creator>Murray Eisenberg</dc:creator>
    <dc:date>2019-06-12T20:56:34Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1670664">
    <title>Mathematica does not simplify Sqrt[x^2] in expressions?</title>
    <link>https://community.wolfram.com/groups/-/m/t/1670664</link>
    <description>Mathematica does not simplify Sqrt[x^2] in expressions. Even if attempting:&#xD;
&#xD;
    Simplify[Sqrt[x^2]] &#xD;
or &#xD;
&#xD;
    FullSimplify[Sqrt[x^2]]&#xD;
&#xD;
The result remains: Sqrt[x^2] instead of just x.&#xD;
&#xD;
Am I missing something?&#xD;
Do I need to specify a condition like x belongs to R for it to work?</description>
    <dc:creator>LV VS</dc:creator>
    <dc:date>2019-04-27T07:52:09Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1258865">
    <title>Can someone interpret the output?</title>
    <link>https://community.wolfram.com/groups/-/m/t/1258865</link>
    <description>Hello, &#xD;
I am very very new in Mathematica. I am deriving equations for a system of pendulums using the Lagrange function. As you can see, I wrote down the equations of the coordinates of the pendulums, and the output then is the Lagrange function, but I do not quite understand it. Can someone introduce me?</description>
    <dc:creator>Jonas Hamp</dc:creator>
    <dc:date>2018-01-04T18:15:49Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1140640">
    <title>[WSC17] Using Kleene and Priest Logic Rules to Create Ternary Logic Tables</title>
    <link>https://community.wolfram.com/groups/-/m/t/1140640</link>
    <description>&amp;lt;h1&amp;gt;Introduction&amp;lt;/h1&amp;gt;&amp;lt;br&amp;gt;&#xD;
&#xD;
My name is Taha Shaikh and I attended the 2017 Wolfram Alpha High School Summer Camp. At this camp, I researched and created a project about many-valued logic.&#xD;
&#xD;
In this exploration, I implemented multivalued logic with the Wolfram language. Multivalued logic is a branch of propositional calculus in which there are more than two truth values. Multivalued logic contrasts with traditional two-valued logic in which only two truth values exist: &amp;lt;i&amp;gt;True&amp;lt;/i&amp;gt; and &amp;lt;i&amp;gt;False&amp;lt;/i&amp;gt;. The most popular types of many-valued logic are three-valued Kleene and Priest logic, which incorporate an additional &amp;lt;i&amp;gt;Indeterminate&amp;lt;/i&amp;gt; value. The truth function for conjunction, for example, is given by:&#xD;
&#xD;
![Ternary Logic Conjunction Table][1]&#xD;
&#xD;
&amp;lt;hr&amp;gt;&#xD;
&#xD;
&amp;lt;h2&amp;gt;Procedure&amp;lt;/h2&amp;gt;&#xD;
&amp;lt;br&amp;gt;&#xD;
The first step in this project was understanding the aim of the investigation and doing research on the topics at hand. Next, support for the new truth value &amp;lt;i&amp;gt;Undecided&amp;lt;/i&amp;gt; was added to the basic boolean operations. I used Kleene and Priest logic tables to redefine the boolean operations. &#xD;
&#xD;
![Different Logic Tables][2]&#xD;
&#xD;
    Undecided = Undecided;&#xD;
    Unprotect[And];&#xD;
    And[Undecided, True] := Undecided&#xD;
    And[Undecided, Undecided] := Undecided&#xD;
    Protect[And];&#xD;
    Unprotect[Boole];&#xD;
    Boole[Undecided] := 0&#xD;
    Boole[False] := -1&#xD;
    Protect[Boole];&#xD;
    Unprotect[Or];&#xD;
    Or[Undecided, False] := Undecided&#xD;
    Or[Undecided, Undecided] := Undecided&#xD;
    Protect[Or];&#xD;
    Unprotect[Not];&#xD;
    Not[Undecided] := Undecided&#xD;
    Unprotect[Implies];&#xD;
    Implies[True, Undecided] := Undecided&#xD;
    Implies[Undecided, Undecided] := True&#xD;
    Implies[False, Undecided] := True&#xD;
    Implies[Undecided, True] := True&#xD;
    Implies[Undecided, False] := Undecided&#xD;
    Protect[Implies];&#xD;
    Unprotect[Nand];&#xD;
    Nand[Undecided, Undecided] := Undecided&#xD;
    Protect[Nand];&#xD;
    Unprotect[Nor];&#xD;
    Nor[Undecided, Undecided] := Undecided&#xD;
    Protect[And];&#xD;
&#xD;
&amp;lt;br&amp;gt;&#xD;
These functions ensured that the rest of the functions created worked smoothly. The next step was creating a function that would generate truth tables based on a given operation and the list of the variables used. The TernaryTable function used an input of a logic expression and the list of used variables and converts it into a truth table. Where Boolean logic has $2^2 = 4$ unary operators, the addition of a third value in ternary logic leads to a total of $3^3 = 27$ distinct operators on a single input value. It uses the Tuples function to run through all of the possible permutations of the three truth values and runs them through the given expression.&#xD;
&amp;lt;br&amp;gt;&#xD;
&amp;lt;br&amp;gt;&#xD;
&#xD;
    TernaryTable[expr_, vars__] :=&#xD;
     &#xD;
     ReplaceAll[expr, Thread[vars -&amp;gt; #]] &amp;amp; /@ &#xD;
      Tuples[{True, False, Undecided}, {Length[vars]}]&#xD;
&#xD;
&amp;lt;br&amp;gt;&#xD;
An example of TernaryTable in action:&#xD;
&#xD;
![enter image description here][3]&#xD;
&#xD;
This function uses the Tuples function to run through the various combinations and permutations of the three different truth values. The truth table generated has length $3^n$ in which $n$ is the number of variables used in the logic expression. In the case of this example, since four variables are present (x, y, z, w), the length of its truth table is $3^4$ or 81. This is because all possible permutations of the three truth values are considered when generating the truth table. Even though many of the outputs are the same, their individual logic expressions were unique. Creating a function that created truth tables was a good first step and helped me better visualize and understand the topic.&#xD;
&amp;lt;hr&amp;gt;&#xD;
&amp;lt;h2&amp;gt;Cooking Up Some Functions&amp;lt;/h2&amp;gt;&amp;lt;br&amp;gt;&#xD;
&#xD;
The main strategy for determining the identity of the truth table was brute-force-esque. All of the possible arrangements of the basic logic functions were ran through the tuples of the three logic values. Their logic expression was also calculated and correlated to their truth table. First, I made a function called LotsOfTernaryTables that produces a lot of ternary tables. Given the number of variables, it produces every possible truth table for every possible arrangement of the functions And, Or, Nand, Nor, and Not for the given variables. &amp;lt;br&amp;gt;&#xD;
&#xD;
    LotsOfTernaryTables[x_] :=&#xD;
      &#xD;
      MatrixForm[&#xD;
       Groupings[#, {And -&amp;gt; 2, Or -&amp;gt; 2, Nand -&amp;gt; 2, Nor -&amp;gt; 2, Not -&amp;gt; 1}, &#xD;
          HoldForm] &amp;amp; /@ Tuples[{True, False, Undecided}, {x}]]&#xD;
&#xD;
&amp;lt;br&amp;gt;&#xD;
In this function, Groupings was used in coordination with Tuples to produce a huge number of different tables.&#xD;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#xD;
In order to visualize these massive tables, I created a function called TernaryPlot that generates a colorful plot of the different logic truth tables. It converts the outputs from LotsOfTernaryTables into numerical values and creates a colorful array plot. It uses similar mechanics to the previous function.&amp;lt;br&amp;gt;&#xD;
&#xD;
    TernaryPlot[x_] :=&#xD;
     &#xD;
     ArrayPlot[&#xD;
      Boole[Groupings[#, {And -&amp;gt; 2, Or -&amp;gt; 2, Nand -&amp;gt; 2, Nor -&amp;gt; 2, &#xD;
           Not -&amp;gt; 1}]] &amp;amp; /@ Tuples[{True, False, Undecided}, {x}], &#xD;
      ColorRules -&amp;gt; {1 -&amp;gt; Green, 0 -&amp;gt; LightBlue, -1 -&amp;gt; Red}]&#xD;
&amp;lt;br&amp;gt;&#xD;
The array plot created by this function has several visible patterns and sequences and makes very interesting art. A ternary plot with 3 variables, for example, looks like so:&amp;lt;br&amp;gt;&#xD;
![enter image description here][4]&#xD;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#xD;
In this plot, every column represents an individual truth table. In this case, since there are three variables, each column contains $3^3=27$ values. When creating ternary plots with more variables, patterns become crazier and the resulting image has some pretty appealing qualities. The ternary plot for 6 variables looks like so:&amp;lt;br&amp;gt;&#xD;
![enter image description here][5]&#xD;
&#xD;
&amp;lt;br&amp;gt;&#xD;
Finally, the last function I created was called TernaryFunction and was based off of the pre-existing BooleanFunction. When given a ternary truth table, this function would return the logic expression associated with it. After generating a list of truth tables and a list of logic expressions, the two lists were then correlated with each other. After retrieving the correct truth table, its corresponding logic expression was derived and returned. In order to assist with this process, the logarithm base 3 of the length of the truth table was calculated and used to narrow down the number of arguments that had to be processed. The function still works with an unlimited number of arguments as long as $log_3n$ is an integer with $n$ representing the length of the inputted truth table. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#xD;
This is an example of TernaryFunction in action:&amp;lt;br&amp;gt;&#xD;
![enter image description here][6]&#xD;
&amp;lt;br&amp;gt;&#xD;
The logic function is returned with the given variables as defined by the user.&#xD;
&#xD;
&amp;lt;hr&amp;gt;&#xD;
&amp;lt;h2&amp;gt;Differences From Binary Logic&amp;lt;/h2&amp;gt;&amp;lt;br&amp;gt;&#xD;
&amp;lt;p&amp;gt;Multi-valued logics are intended to preserve the property of designationhood, or being designated. Since there are more than two truth values, rules of inference may be intended to preserve more than just whichever corresponds to truth. For example, in a three-valued logic, sometimes the two greatest truth-values (when they are represented as e.g. positive integers) are designated and the rules of inference preserve these values. Precisely, a valid argument will be such that the value of the premises taken jointly will always be less than or equal to the conclusion.&amp;lt;/p&amp;gt;&#xD;
&amp;lt;br&amp;gt;&#xD;
&amp;lt;hr&amp;gt;&#xD;
&amp;lt;h2&amp;gt;Applications of Ternary Logic&amp;lt;/h2&amp;gt;&#xD;
&amp;lt;br&amp;gt;&#xD;
&amp;lt;p&amp;gt;An application of many valued logic is geared towards the design of electronic circuits which employ more than two discrete levels of signals, such as many-valued memories, arithmetic circuits, and field programmable gate arrays. Many-valued circuits have a number of theoretical advantages over standard binary circuits. For example, the interconnect on and off chip can be reduced if signals in the circuit assume four or more levels rather than only two. In memory design, storing two instead of one bit of information per memory cell doubles the density of the memory in the same die size. Applications using arithmetic circuits often benefit from using alternatives to binary number systems. For example, residue and redundant number systems can reduce or eliminate the ripple-through carries which are involved in normal binary addition or subtraction, resulting in high-speed arithmetic operations.&amp;lt;/p&amp;gt;&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=tablemyb.png&amp;amp;userId=1138154&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=allthetables.png&amp;amp;userId=1138154&#xD;
  [3]: http://community.wolfram.com//c/portal/getImageAttachment?filename=terntable.png&amp;amp;userId=1138154&#xD;
  [4]: http://community.wolfram.com//c/portal/getImageAttachment?filename=plotarry.png&amp;amp;userId=1138154&#xD;
  [5]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ternarylogic6-1.png&amp;amp;userId=1138154&#xD;
  [6]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ternfunc.png&amp;amp;userId=1138154</description>
    <dc:creator>Taha Shaikh</dc:creator>
    <dc:date>2017-07-07T11:10:37Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1007307">
    <title>Looking for math students - can you help?</title>
    <link>https://community.wolfram.com/groups/-/m/t/1007307</link>
    <description>Hello All&#xD;
&#xD;
Ill be brief - I am looking for math students to teach.  Im hoping that you can help spread the word.  The course would be online and will start in September.  (And, of course, I am doing this for my own interest and there is no fee.)&#xD;
&#xD;
I am a teacher with over twenty years of teaching high school math.  I have developed a new math curriculum based on the ideas and precepts of Computer Based Math (CBM). You can watch a great short video by Conrad Wolfram describing CBM here:&#xD;
&#xD;
https://www.youtube.com/watch?v=60OVlfAUPJg&#xD;
&#xD;
The basic idea is that math teaching has not evolved much in the last 100 years.  In fact, the main emphasis, in nearly all schools, is the teaching of symbolic manipulation (solving for x). The irony is that this is the one and only thing that computers can do better than humans.  We should have our students analyzing solutions, proposing methods of solution, analyzing results, and applying knowledge to new and difficult problems.&#xD;
&#xD;
I have developed a curriculum that shifts the paradigm from solving for x to big and complex thinking.&#xD;
&#xD;
I am looking for three to five students who would like to learn math the way it is really used by mathematicians, scientists, and engineers.  I will work with these students personally each day.  &#xD;
&#xD;
If you have such a student in mind, please contact me at: markstevenlawton@gmail.com&#xD;
&#xD;
All students should be Algebra I ready. &#xD;
&#xD;
Please feel to read all about me at www.markslawton.com&#xD;
&#xD;
&#xD;
Thank You,&#xD;
&#xD;
Mark Lawton&#xD;
&#xD;
Educator</description>
    <dc:creator>Mark Lawton</dc:creator>
    <dc:date>2017-02-02T19:29:54Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/994225">
    <title>Show the color space boundary while using ChromaticityPlot?</title>
    <link>https://community.wolfram.com/groups/-/m/t/994225</link>
    <description>I have plotted `ChromaticityPlot[&amp;#034;sRGB&amp;#034;]` but the color space boundary does not show up..though the legend is there. What shall I do? anyone please help. Thanks in advance.</description>
    <dc:creator>Timun Mas</dc:creator>
    <dc:date>2017-01-12T22:09:24Z</dc:date>
  </item>
</rdf:RDF>

