All pastes #761834 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-11-05 02:55 UTC
rendered paste body
(=================================)
(========Edward Martin============)
(** This program will count the **)
(** Parenthenses in a line and  **)
(** determine if they are       **)
(** matching pairs;             **)
(** input is considered over    **)
(** when a \n is encountered    **)
(=================================)

jump to cell 1 (where we take out inputs)
>

    set our constants we are looking for
    (set cell 2 to a '(' )
    (set cell 3 to a ')' )
    >[-]>[-]+> (zero 2 and 3 and set 3 to 1)
    ++++++++++[-<+++<+++>>] (set 2 and 3 correctly)
    <<< back to 1

,---------- (get the character and subtract 10 for a newline char)
[
    
    (==========================================)
    (===========Check Left=====================)
    (==========================================)
    check if 1==2 and store in 5
    [->>>>+>+>>+<<<<<<<]>>>>>[-<<<<<+>>>>>]<<<<           (copy 1 to 5 and 8)
    [->>>>+>+>>+<<<<<<<]>>>>>[-<<<<<+>>>>>]<<<<< at 2;            (copy 2 to 6 and 9)
    
    and 5 and 6; save in 7
    >>>[>[->+<]<[-]]>[-]< at 5;
    >>[[-]
            zero 7; then subtract from 8 and 9
            copy 8 and 9 to 5 and 6; then and 5 and 6 to 7
        >->- dec 8 and 9
        [->+<<<<<+>>>>]>[-<+>]<<  copy 9 to 5 (use 10 for temp)
        [->>+<<<<+>>]>>[-<<+>>] at 10;   copy 8 to 6 (use 10 for temp)
        
        and 5 and 6 save in 7
        <<<<<[>[->+<]<[-]]>[-]>
      ]
    >[-<+>]>[-<<+>>]<<
    or 8 and 9 to 7 (was 5 and 6 to 7)
    not 7 into 5
    <<+>>[<<->>[-]] at 7;
    8 and 9 need to get zeroed
    >[-]>[-]<<
    should have the equals in 5 now; everything else zeroed; go back to 1
    (do check here on 5)
    <<[     (this code executes when a '(' was seen on the input
            [-]<<<<<+>>>>>
      ]<<<<        
    (====================================================================)
    ok we have checked if its a '(' and added to the counter as needed
    we now need to check if its a ')' and subtract from the counter as needed
        (code here is pretty much a copy/paste of whats above)



    (==================================)
    (===========Check Right===========)
    (==================================)

    check if 1==3 and store in 5
    [->>>>+>+>>+<<<<<<<]>>>>>[-<<<<<+>>>>>]<<<           (copy 1 to 5 and 8)
    [->>>+>+>>+<<<<<<]>>>>[-<<<<+>>>>]<<<<< at 2;            (copy 3 to 6 and 9)
    
    and 5 and 6; save in 7
    >>>[>[->+<]<[-]]>[-]< at 5;
    >>[[-]
            zero 7; then subtract from 8 and 9
            copy 8 and 9 to 5 and 6; then and 5 and 6 to 7
        >->- dec 8 and 9
        [->+<<<<<+>>>>]>[-<+>]<<  copy 9 to 5 (use 10 for temp)
        [->>+<<<<+>>]>>[-<<+>>] at 10;   copy 8 to 6 (use 10 for temp)
        
        and 5 and 6 save in 7
        <<<<<[>[->+<]<[-]]>[-]>
      ]
    >[-<+>]>[-<<+>>]<<
    or 8 and 9 to 7 (was 5 and 6 to 7)
    not 7 into 5
    <<+>>[<<->>[-]] at 7;
    8 and 9 need to get zeroed
    >[-]>[-]<<
    should have the equals in 5 now; everything else zeroed; go back to 1
    (do check here on 5)
    <<[[-]     (this code executes when a ')' was seen on the input
            we should set 1 to zero if 0 is zero
            copy zero to 5 (we will not this later; 5 should always be zero)
            <<<<<[->>>>>+>+<<<<<<]>>>>>>[-<<<<<<+>>>>>>]<
            not 5 to 4
            <+>[[-]<->]
            
            <<<<<->>>>>
      ]+ set 5 to 1
    subtract 4 from 5
    <[[-]>-<]>
    <<<<[-]>>>> zero 1
    [[-] if 5; zero it and input the next char

    <<<<
    input the next char

    ,---------->>>>]
    <<<< to 1
]

<
this is just saying if its valid
[[-]>>>>>no!
    not valid so put 'Not' at 5;6;7
    >[-]++++++++++[<+++++++>-]<
    ++++++++.(N)
    >++++++++++[<+++>-]<
    +++.(o)
    +++++.(t)
    [-]
    >+++++[<+++++++++>-]<.(dash)
    <<<<<
]
>>>>>
[-]
>[-]++++++++[<+++++++++++>-]<--.(V)
>++[<+++++>-]<+.(a)
>++[<+++++>-]<+.(l)
---.(i)
-----.(d)