Skip to content

Instantly share code, notes, and snippets.

@akouryy
Last active November 24, 2017 14:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save akouryy/f6dadc84742614aadf01dd9bea2790d9 to your computer and use it in GitHub Desktop.
Save akouryy/f6dadc84742614aadf01dd9bea2790d9 to your computer and use it in GitHub Desktop.
ADD10 = / # A + B = C
(?<B0> (?= (?<BC0Rec> [0-9] \g<BC0Rec> [0-9] | \+ .*? 0 ) \= )){0}
(?<B1> (?= (?<BC1Rec> [0-9] \g<BC1Rec> [0-9] | \+ .*? 1 ) \= )){0}
(?<B2> (?= (?<BC2Rec> [0-9] \g<BC2Rec> [0-9] | \+ .*? 2 ) \= )){0}
(?<B3> (?= (?<BC3Rec> [0-9] \g<BC3Rec> [0-9] | \+ .*? 3 ) \= )){0}
(?<B4> (?= (?<BC4Rec> [0-9] \g<BC4Rec> [0-9] | \+ .*? 4 ) \= )){0}
(?<B5> (?= (?<BC5Rec> [0-9] \g<BC5Rec> [0-9] | \+ .*? 5 ) \= )){0}
(?<B6> (?= (?<BC6Rec> [0-9] \g<BC6Rec> [0-9] | \+ .*? 6 ) \= )){0}
(?<B7> (?= (?<BC7Rec> [0-9] \g<BC7Rec> [0-9] | \+ .*? 7 ) \= )){0}
(?<B8> (?= (?<BC8Rec> [0-9] \g<BC8Rec> [0-9] | \+ .*? 8 ) \= )){0}
(?<B9> (?= (?<BC9Rec> [0-9] \g<BC9Rec> [0-9] | \+ .*? 9 ) \= )){0}
(?<C0> (?= \g<BC0Rec> $ )){0}
(?<C1> (?= \g<BC1Rec> $ )){0}
(?<C2> (?= \g<BC2Rec> $ )){0}
(?<C3> (?= \g<BC3Rec> $ )){0}
(?<C4> (?= \g<BC4Rec> $ )){0}
(?<C5> (?= \g<BC5Rec> $ )){0}
(?<C6> (?= \g<BC6Rec> $ )){0}
(?<C7> (?= \g<BC7Rec> $ )){0}
(?<C8> (?= \g<BC8Rec> $ )){0}
(?<C9> (?= \g<BC9Rec> $ )){0}
(?<S0> 0 \g<B0>){0}
(?<S1> 0 \g<B1> | 1 \g<B0>){0}
(?<S2> 0 \g<B2> | 1 \g<B1> | 2 \g<B0>){0}
(?<S3> 0 \g<B3> | 1 \g<B2> | 2 \g<B1> | 3 \g<B0>){0}
(?<S4> 0 \g<B4> | 1 \g<B3> | 2 \g<B2> | 3 \g<B1> | 4 \g<B0>){0}
(?<S5> 0 \g<B5> | 1 \g<B4> | 2 \g<B3> | 3 \g<B2> | 4 \g<B1> | 5 \g<B0>){0}
(?<S6> 0 \g<B6> | 1 \g<B5> | 2 \g<B4> | 3 \g<B3> | 4 \g<B2> | 5 \g<B1> | 6 \g<B0>){0}
(?<S7> 0 \g<B7> | 1 \g<B6> | 2 \g<B5> | 3 \g<B4> | 4 \g<B3> | 5 \g<B2> | 6 \g<B1> | 7 \g<B0>){0}
(?<S8> 0 \g<B8> | 1 \g<B7> | 2 \g<B6> | 3 \g<B5> | 4 \g<B4> | 5 \g<B3> | 6 \g<B2> | 7 \g<B1> | 8 \g<B0>){0}
(?<S9> 0 \g<B9> | 1 \g<B8> | 2 \g<B7> | 3 \g<B6> | 4 \g<B5> | 5 \g<B4> | 6 \g<B3> | 7 \g<B2> | 8 \g<B1> | 9 \g<B0>){0}
(?<S10> 1 \g<B9> | 2 \g<B8> | 3 \g<B7> | 4 \g<B6> | 5 \g<B5> | 6 \g<B4> | 7 \g<B3> | 8 \g<B2> | 9 \g<B1>){0}
(?<S11> 2 \g<B9> | 3 \g<B8> | 4 \g<B7> | 5 \g<B6> | 6 \g<B5> | 7 \g<B4> | 8 \g<B3> | 9 \g<B2>){0}
(?<S12> 3 \g<B9> | 4 \g<B8> | 5 \g<B7> | 6 \g<B6> | 7 \g<B5> | 8 \g<B4> | 9 \g<B3>){0}
(?<S13> 4 \g<B9> | 5 \g<B8> | 6 \g<B7> | 7 \g<B6> | 8 \g<B5> | 9 \g<B4>){0}
(?<S14> 5 \g<B9> | 6 \g<B8> | 7 \g<B7> | 8 \g<B6> | 9 \g<B5>){0}
(?<S15> 6 \g<B9> | 7 \g<B8> | 8 \g<B7> | 9 \g<B6>){0}
(?<S16> 7 \g<B9> | 8 \g<B8> | 9 \g<B7>){0}
(?<S17> 8 \g<B9> | 9 \g<B8>){0}
(?<S18> 9 \g<B9>){0}
(?<Carry0> (?= \g<S9>*+ (?: \g<S0> | \g<S1> | \g<S2> | \g<S3> | \g<S4> | \g<S5> | \g<S6> | \g<S7> | \g<S8> | \+ ))){0}
(?<Carry1> (?= \g<S9>*+ (?: \g<S10> | \g<S11> | \g<S12> | \g<S13> | \g<S14> | \g<S15> | \g<S16> | \g<S17> | \g<S18> ))){0}
^
\g<Carry0>
(?:
(?: \g<S0> | \g<S10>) \g<Carry0> \g<C0>
| (?: \g<S0> | \g<S10>) \g<Carry1> \g<C1>
| (?: \g<S1> | \g<S11>) \g<Carry0> \g<C1>
| (?: \g<S1> | \g<S11>) \g<Carry1> \g<C2>
| (?: \g<S2> | \g<S12>) \g<Carry0> \g<C2>
| (?: \g<S2> | \g<S12>) \g<Carry1> \g<C3>
| (?: \g<S3> | \g<S13>) \g<Carry0> \g<C3>
| (?: \g<S3> | \g<S13>) \g<Carry1> \g<C4>
| (?: \g<S4> | \g<S14>) \g<Carry0> \g<C4>
| (?: \g<S4> | \g<S14>) \g<Carry1> \g<C5>
| (?: \g<S5> | \g<S15>) \g<Carry0> \g<C5>
| (?: \g<S5> | \g<S15>) \g<Carry1> \g<C6>
| (?: \g<S6> | \g<S16>) \g<Carry0> \g<C6>
| (?: \g<S6> | \g<S16>) \g<Carry1> \g<C7>
| (?: \g<S7> | \g<S17>) \g<Carry0> \g<C7>
| (?: \g<S7> | \g<S17>) \g<Carry1> \g<C8>
| (?: \g<S8> | \g<S18>) \g<Carry0> \g<C8>
| (?: \g<S8> | \g<S18>) \g<Carry1> \g<C9>
| (?: \g<S9> ) \g<Carry0> \g<C9>
| (?: \g<S9> ) \g<Carry1> \g<C0>
)++
\+ [0-9]++ \= [0-9]++ $
/x
ADD2 = / # A + B = C
(?<B0> (?= (?<B0Rec> [01] \g<B0Rec> [01] | \+ .*? 0 ) \= )){0}
(?<B1> (?= (?<B1Rec> [01] \g<B1Rec> [01] | \+ .*? 1 ) \= )){0}
(?<C0> (?= (?<C0Rec> [01] \g<C0Rec> [01] | \+ .*? 0 ) $ )){0}
(?<C1> (?= (?<C1Rec> [01] \g<C1Rec> [01] | \+ .*? 1 ) $ )){0}
(?<Carry0> (?= (?: 1 \g<B0> | 0 \g<B1> )*+ (?: 0 \g<B0> | \+ ))){0}
(?<Carry1> (?= (?: 1 \g<B0> | 0 \g<B1> )*+ 1 \g<B1> )){0}
^
\g<Carry0>
(?:
0 \g<B0> \g<Carry0> \g<C0>
| 0 \g<B0> \g<Carry1> \g<C1>
| 0 \g<B1> \g<Carry0> \g<C1>
| 0 \g<B1> \g<Carry1> \g<C0>
| 1 \g<B0> \g<Carry0> \g<C1>
| 1 \g<B0> \g<Carry1> \g<C0>
| 1 \g<B1> \g<Carry0> \g<C0>
| 1 \g<B1> \g<Carry1> \g<C1>
)++
\+ [01]++ \= [01]++ $
/x
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment