xtodo Wolfram language
- finish doc the Groupings
- Wolfram: List. Combinatorics
- add
FileSystemMap
FileSystemScan
- Wolfram: List Files (Walk Directory)
- put my functions from my packages to website
- Wolfram language Packages by Xah Lee
- redo old images
- Algorithmic Mathematical Art
- Wolfram language figure out, DiscretizeGraphics and DiscretizeRegion returns a MeshRegion.
- write Wolfram language graphics to svg
- redo graphics in
- Algorithmic Mathematical Art
how to print in binary, hex.
- add
- IntegerString
- find out how to cut a graphics.
- Wolfram: Mesh Region
(* when there are multiple rules, the more specific is applied first? *) ReplaceAll[ {1, {2, {3, {4}}}}, { {2,_} -> x, {1,{2,_}} -> y } ] (* y *) (* when there are multiple rules, the more specific is applied first? *) ReplaceAll[ {1, {2, {3, {4}}}}, { {2,_} -> x, {3, {4}} -> y } ] (* {1, x} *)
- work on. go thru code, improve. also add that tile the other guy send me.
- Wolfram: Plane Tiling Package 📦
$CharacterEncodings $SystemCharacterEncoding
$SystemCharacterEncoding = "UTF-8"; x = "i ♥ cats and dogs"
- 2022-05-14 read the char encoding Wolfram: Find Replace Text 📜
- 2022-08-01 need test using diff encoding for WolframScript Wolfram: File Encoding
- all xah Wolfram language packages, the doc notebook, need to give a homepage url
- need to add a blurb on where to put the package
- need to write a emacs lisp script to sync my packages
- find out how to find the script's dir.
- finish tutorial Wolfram language import export json.
- Wolfram: JSON Import Export
(* move all 0 to the left of 1 *) ReplaceAll[ {3, 1, 1, 0, 0, 3, 1, 1, 0, 0} , {head___, Pattern[dots, Longest[ 1.. ] ], Pattern[balls, Longest[ 0.. ] ], tail___} -> {head , balls , dots , tail} ] (* {3, 0, 0, 1, 1, 3, 1, 1, 0, 0} *) (* look into why don't do the rest *)
- list all .nb link in plane curves. work on them one by one
need work
- redo the xah Wolfram mode list of keywords.
- the problem is, find a way to list all symbols that are function, and non-function such as option names.
- also, update the function list for latest version.
- also, find a way to complete or color the Wolfram language named special chars
ValueQ[Table, Method -> Automatic] (* False *) ValueQ[Table, Method -> "SymbolDefinitionsPresent"] (* True *) ValueQ[Table, Method -> "OwnValuesPresent"] (* False *) ValueQ[Table, Method -> "Legacy"] (* False *) (* HHHH--------------------------------------------------- *) ValueQ[PlotPoints, Method -> Automatic] (* False *) ValueQ[PlotPoints, Method -> "SymbolDefinitionsPresent"] (* False *) ValueQ[PlotPoints, Method -> "OwnValuesPresent"] (* False *) ValueQ[PlotPoints, Method -> "Legacy"] (* False *) (* HHHH--------------------------------------------------- *) ValueQ[Pi, Method -> Automatic] (* False *) ValueQ[Pi, Method -> "SymbolDefinitionsPresent"] (* False *) ValueQ[Pi, Method -> "OwnValuesPresent"] (* False *) ValueQ[Pi, Method -> "Legacy"] (* False *) (* Automatic "SymbolDefinitionsPresent" → one or more symbols have any sort of definition present "TrialEvaluation" → test if the expression changes after evaluation "OwnValuesPresent" → one or more symbols have a non-empty OwnValues "Legacy" *) (* xah-wolfram-special-char *) xx = { }; Select[ xx, ((ValueQ[#, Method -> "SymbolDefinitionsPresent"] ) &) ] Select[Names["*"] , ((ValueQ[#, Method -> "SymbolDefinitionsPresent"]) &)] StringQ @ Names["*"][[400]] Names["*"][[400]] ValueQ[ Symbol[ "A298" ], Method -> "SymbolDefinitionsPresent"] ValueQ[ Symbol[ "A298" ], Method -> "OwnValuesPresent"] ValueQ[ Symbol[ "A298" ], Method -> "Legacy"] OwnValues[ Symbol[ "A298" ] ] symbolq ValueQ[ Symbol[ "A298" ]] Symbol[ ArrayPad ]
- 2024-03-26 more update on transform 2d plot
- 2024-03-26 more update on tiling package
- 2024-03-26 update plane curve site
- Wolfram language NotebookDirectory[ ] return slash or not
- why stringjoin that works in notebook
- Wolfram: Navigate Directory
- look into Wolfram language format code for xah-wolfram-mode
wstp wolfram symbolic transfer protocol
- https://www.youtube.com/watch?v=nXVEOUMZbzQ
- Developing Wolfram Language Code in Other Editors and IDEs with LSP
- Wolfram
- Dec 31, 2021
- unit test.
VerificationTest
- VerificationTest
to read
function repo
- function repo
- https://resources.wolframcloud.com/FunctionRepository/
- https://resources.wolframcloud.com/FunctionRepository/style-guidelines
- wolfram submissions pending status https://resources.wolframcloud.com/publisher/submissions
- recent https://resources.wolframcloud.com/FunctionRepository/recent
paclet package repo
- 2024-02-15 check the paclet repo. read in detail. especially check how to doc.
- Paclets
- wolfram resource system
- https://resources.wolframcloud.com/
- WolframResourceSystem
programatically turn a expression into a function
th[ft_Function , xrest___] := tt[ With[{expr179= ft@argHq2Ky}, With[{x881= First@ expr179, y804= Last@ expr179}, {x881, y804} /. argHq2Ky -> #1 ] ] , xrest] /; SameQ[Length@ ft, 2];
(* \|01f469 *) StringLength[ FromCharacterCode[{128105, 8205, 128300}]] === 3 (* StringLength["\|01f469"] *)
pattern matching issues
- number of rules.
assume just 1 rule:
- whole expression or parts
- if parts, issue of sequential items vs levelspec
- when to stop: stop at first match e.g. 「{x,x}」, just one part.
- when to stop: stop at first match, all?.
Replace[ f[x,x] , {x -> 3, y -> 4}, {1, Infinity } ] (* f[3, 3] *)
- Replace[expr,rules,levelspec]
- levelspec default to {0}
- A list of rules can be given. The rules are tried in order. The result of the first one that applies is returned. If none of the rules apply, the original expr is returned.
- If the rules are given in nested lists, Replace is effectively mapped onto the inner lists. Thus Replace[expr,{{r11,r12},{r21,…},…}] is equivalent to {Replace[expr,{r11,r12}],Replace[expr,{r21,…}],…}.
- Replace
- ReplaceAll looks at each part of expr, tries all the rules on it, and then goes on to the next part of expr. The first rule that applies to a particular part is used; no further rules are tried on that part or on any of its subparts.
- ReplaceAll applies a particular rule only once to an expression.
- ReplaceAll
(* WolframScript does not behave the same as notebook. In notebook, these eval correctly. in WolframScript, they do not. *) StringCases[ "αβ🌞ab", StringExpression[ LetterCharacter.. ] ] (* {Î, Î, ð, ab} *) StringCases[ "πσ", StringExpression[ "ΠΣ" ], IgnoreCase -> True ] (* {} *)
What's the difference between Hold, HoldForm, Unevaluate
Attributes[ CompoundExpression ] (* {HoldAll, Protected, ReadProtected} *) (* CompoundExpression *) FullForm[ a;b;c ] (* FullForm[c] *) FullForm[ Hold[ a;b;c ] ] (* FullForm[Hold[a; b; c]] *) FullForm[ HoldForm[ a;b;c ] ] (* FullForm[HoldForm[a; b; c]] *)


# list file path of WolframLang Get-Command wolframscript.exe | Format-List Source # on windows, it's usually at # C:\Program Files\Wolfram Research\WolframScript\wolframscript.exe
on linux or MacOS, type which wolframscript
- 2022-05-14 find out where Wolfram language package located is. builtin, and user addon.
2022-05-13, commented on https://reference.wolfram.com/language/ref/ParametricPlot.html the two examples with Exclusions, has no effect. ParametricPlot[{Tan[u], u}, {u, 0, 2 Pi}, Exclusions -> Range[Pi/2, 2 Pi, Pi]] ParametricPlot[{Tan[u], u + v}, {u, 0, 2 Pi}, {v, 0, 1}, Exclusions -> {u == Pi/2, u == 3 Pi/2}, Axes -> None]
- 2022-07-06 Wolfram language write Level, Apply, Sequence
sequence specification:
All
→ all elementsNone
→ no elementsn
→ elements 1 through nUpTo[n]
→ elements 1 up to at most n, as available-n
→ last n elements{n}
→ element n only{m,n}
→ elements m through n inclusive{m,n,s}
→ elements m through n in steps of s
All
- all elements
None
- no elements
n
- elements 1 through n
UpTo[n]
- elements 1 up to at most n, as available
-n
- last n elements
{n}
- element n only
{m,n}
- elements m through n inclusive
{m,n,s}
- elements m through n in steps of s
- Replace[expr,rules,levelspec]
- levelspec default to {0}
- A list of rules can be given. The rules are tried in order. The result of the first one that applies is returned. If none of the rules apply, the original expr is returned.
- If the rules are given in nested lists, Replace is effectively mapped onto the inner lists. Thus Replace[expr,{{r11,r12},{r21,…},…}] is equivalent to {Replace[expr,{r11,r12}],Replace[expr,{r21,…}],…}.
- ReplaceAll looks at each part of expr, tries all the rules on it, and then goes on to the next part of expr. The first rule that applies to a particular part is used; no further rules are tried on that part or on any of its subparts.
- ReplaceAll applies a particular rule only once to an expression.
Implementing Contour Plot 3D
This is interesting and hard to implement. The function takes a 3D array. Then, create a surface that basically connects similar values together. Say, you have a 3d array, each value is a number from 1 to 1000.

ListContourPlot3D[array] generates a contour plot from a three-dimensional array of values. ListContourPlot3D[{{x1, y1, z1, f1}, {x2, y2, z2, f2}, ...}] generates a contour plot from values defined at specified points in three-dimensional space.
needs computational geometry knowledge to implement this.
actually this post should be in #programing .
first hard problem is , imagine you have a 3d matrix, how to you find out the indexes for elements in the matrix that have the same value? (let's assumes all the values are integers. forget about float or approximately equate as required) this is non-trivial to implement it efficiently.
second non-trivial problem: once you found indexes that have the same value, you need to determine if they are adjacent in 3D space. Basically, the indexes for each el in matrix is its coordinate. If 2 same value are not connected, you don't draw surface.
3rd hard problem is, given a bunch of points in 3d space forming a surface, you need to triangulate them into a mesh in order to draw the surface. classic computational geometry problem.
omg this is one level harder. computational geometry! once you have a surface, and given a plane intersecting it. you need to draw curves on the plane to show the intersection (like cross section). The plane can actually be ANY surface!

one can get a phd in computational geometry just for creating a algorithm to solve this problem efficiently. i presume it's mostly solved problem.