Strong array notation

Strong array notation is a notation for large numbers made by Wikia user Hyp cos.

The notation is currently composed of 12 parts, which is as follows:


 * Linear array notation (LAN)
 * Extended array notation (exAN)
 * Expanding array notation (EAN)
 * Multiple expanding array notation (mEAN)
 * Primary dropping array notation (pDAN)
 * Secondary dropping array notation (sDAN)
 * Dropping array notation (DAN)
 * Nested dropper array notation (NDAN)
 * Weak dropper-expanding notation (WDEN)
 * Multiple weak dropper-expanding notation (mWDEN)
 * Weak dropper-multiexpanding notation (WDmEN)
 * Primary dropper-dropping notation (pDDN)

In addition, there were five parts that didn't work:


 * Nested dropper array notation (NDAN)
 * Dropper-expanding notation (DEN)
 * Multiple dropper-expanding notation (mDEN)
 * Second-order dropper-expanding notation (soDEN)
 * Higher-order dropper-expanding notation (hoDEN)

Linear array notation
Linear array notation is the first part of strong array notation. It has the following rules, where # is a part of the array:


 * Rule 1 (base rule): s(a,b) = a^b
 * Rule 2 (tailing rule): s(#,1) = s(#)
 * Rule 3 (recursion rule): s(a,b+1,c+1#) = s(a,s(a,b,c+1#),c#)

If none of these apply, start the process shown below, starting from the third entry:


 * If the entry is 1, then jump to the next entry.
 * If the entry is not 1, then:
 * Change the "1,n" into "b,n-1" where n is this entry and b is the second element of the array.
 * Change all entries before these two into the first entry.
 * This process ends.

Examples
s(3,2,3) = s(3,s(3,1,3),2) = s(3,s(3,1,2),2) = s(3,s(3,1,1),2)= s(3,s(3,1),2) = s(3,3^1,2) = s(3,3,2) = s(3,s(3,2,2),2) = s(3,s(3,s(3,1,2),1),1) = s(3,s(3,3,1),1) = s(3,s(3,3),1) = s(3,27,1) = s(3,27) = 3^27

s(3,2,2,2) = s(3,s(3,1,2,2),1,2) = s(3,s(3,1,1,2),1,2) = s(3,s(3,3,1,1),1,2) = s(3,s(3,3),1,2) = s(3,27,1,2) = s(3,3,27) = 3^^^...^^^3 (27 arrows)

s(3,2,2,1,2) = s(3,s(3,1,2,1,2),1,1,2) = s(3,s(3,1,1,1,2),1,1,2) = s(3,s(3,3,3,1,1),1,1,2) = s(3,s(3,3,3),1,1,2) = s(3,3^^^3,1,1,2) = s(3,3,3,3^^^3,1) = s(3,3,3,3^^^3) (the result is equal to a Conway chain of threes \(3\uparrow\uparrow\uparrow3+2\) numbers long)

Comparisons
For 3-entry arrays, s(a,b,c) = \(a \underbrace{\uparrow\cdots\uparrow}_c b\), or \(\{a, b, c\}\) in BEAF.

For 4-entry arrays, s(a,b,c,d) = \(\underbrace{a \rightarrow \cdots \rightarrow a}_d \rightarrow b \rightarrow c\) using chained arrow notation.

Extended array notation
Extended array notation is the second part of strong array notation. It adds separators between entries. The comma is a shorthand for {1}. It has the following rules:


 * Rule 1 (base rule): s(a,b) = a^b
 * Rule 2a (tailing rule) s(# A 1) = s(#) (A is any separator)
 * Rule 2b: {# A 1} = {#} (Again, A as a separator)
 * Rule 3 (recursion rule): s(a,b,c #) = s(a,s(a,b-1,c #),c-1 #)

If none of these applies, start the process, which is as follows:


 * Start from the third entry. If it is a one, skip to the next entry.
 * If it is greater than 1, look to your left:
 * If it has a comma before it, decrease it by 1, change the previous entry into the current second entry, and change all the other entries at the outermost layer before the current entry into the original first entry. This works even if the second entry is a 1.
 * If it has a separator not comma A before it, change the "A n" to "A 2 A n-1", and move to the first entry of the first A.
 * If it has a { before it, change the {n#} to Sb where b is the current second entry, S1 = "{n-1#}", and Sn+1 = "{n-1#} 1 Sn".

Examples
s(3,3{2}2) = s(3,3{2}2{2}1) = s(3,3,1,1,2{2}1) = s(3,3,1,1,2) = s(3,3,3,3)

s(3,2{2}1{2}2) = s(3,2{2}1,1,2) = s(3,3{2}3,2)

s(3,2{3}2) = s(3,2{2}1{2}2)

s(3,3{1,1,2}2) = s(3,3{1,1,2}2{1,1,2}1) = s(3,3{1,3}2) = s(3,3{3,2}2)