anScript

Euclidean algorithm

Use timeWait() at the end of code to see output.

variableCreate(a,var.i)
variableCreate(b,var.i)
variableCreate(result,var.i)

consoleScan(a,b)

///////////////////////////////
/// Fastest implementation: ///
///////////////////////////////

/variableCreate(logic,var.i)
/variableCreate(logic2,var.i)

/comparisonIsNotEqual(logic,a,b)

/logicLoopLines(logic,8.i)
/   comparisonIsGreater(logic2,a,b)
/   logicIfLines(logic2,2.i)
/       basicSubstraction(a,a,b)
/   logicNegation(logic2)
/   logicIfLines(logic2,2.i)
/       basicSubstraction(b,b,a)
/   comparisonIsNotEqual(logic,a,b)

////////////////////////////////
/// Modern  implementation:  ///
////////////////////////////////

instructionCreate(gdc,result,a,b)
    variableCreateLocal(loopBool,var.i)
    variableCreateLocal(ifBool,var.i)
    /Loop calls loopBool.comparisonIsNotEqual(a,b) before checking loopBool
    logicLoopI(loopBool,comparisonIsNotEqual,loopBool,a,b)
        ifBool.comparisonIsGreater(a,b)
        logicIf(ifBool)
            a=a-b
        }
        ifBool.logicNegation()
        logicIf(ifBool)
            b=b-a
        }
    }
    variableDeleteLocal(loopBool,ifBool)
    result.variableAssign(a)
}

/Pass arguments by reference
result.gdc(*a,*b)

consolePrint(result)