Search in sources :

Example 96 with Expression

use of de.neemann.digital.hdl.model2.expression.Expression in project OpenNotebook by jaltekruse.

the class AssociativePropertiesWithVariables method generateExpression.

@Override
protected Node[] generateExpression(int difficulty) throws NodeException {
    Node[] n = new Node[2];
    if (ExUtil.randomBoolean()) {
        if (difficulty == ProblemGenerator.EASY) {
            double[] numPair = ExUtil.pairOfCleanAddingNumbers(100);
            n[0] = ExUtil.randomlyStaggerOperation(new Operator.Addition(), new Number(numPair[0]), ExUtil.randomTerm(1, ExUtil.randomVarName(), 3, 12), new Number(numPair[1]));
        } else if (difficulty == ProblemGenerator.MEDIUM) {
            double[] numPair = ExUtil.pairOfCleanAddingNumbers(100);
            double[] numPair2 = ExUtil.pairOfCleanAddingNumbers(200);
            n[0] = ExUtil.randomlyStaggerOperation(new Operator.Addition(), new Number(numPair[0]), new Number(numPair2[1]), ExUtil.randomTerm(1, ExUtil.randomVarName(), 3, 12), new Number(numPair[1]), new Number(numPair2[0]));
        } else if (difficulty == ProblemGenerator.HARD) {
            double[] numPair = ExUtil.pairOfCleanAddingNumbers(400);
            double[] numPair2 = ExUtil.pairOfCleanAddingNumbers(200);
            Vector<String> varNames = ExUtil.randomUniqueVarNames(2);
            n[0] = ExUtil.randomlyStaggerOperation(new Operator.Addition(), new Number(numPair[0]), ExUtil.randomTerm(1, varNames.get(0), 2, 12), new Number(numPair2[1]), ExUtil.randomTerm(1, varNames.get(1), 3, 12), new Number(numPair[1]), new Number(numPair2[0]));
        }
    } else {
        // otherwise create a problem testing the associative property of multiplication
        if (difficulty == ProblemGenerator.EASY) {
            double[] numPair = ExUtil.pairOfCleanFactors(20);
            n[0] = ExUtil.randomlyStaggerOperation(new Operator.Multiplication(), new Number(numPair[0]), ExUtil.randomTerm(1, ExUtil.randomVarName(), 3, 12), new Number(numPair[1]));
        } else if (difficulty == ProblemGenerator.MEDIUM) {
            double[] numPair = ExUtil.pairOfCleanFactors(30);
            Vector<String> varNames = ExUtil.randomUniqueVarNames(2);
            n[0] = ExUtil.randomlyStaggerOperation(new Operator.Multiplication(), new Number(numPair[0]), ExUtil.randomTerm(1, varNames.get(0), 3, 9), ExUtil.randomTerm(1, varNames.get(1), 3, 12), new Number(numPair[1]));
        } else if (difficulty == ProblemGenerator.HARD) {
            double[] numPair = ExUtil.pairOfCleanFactors(40);
            Vector<String> varNames = ExUtil.randomUniqueVarNames(2);
            n[0] = ExUtil.randomlyStaggerOperation(new Operator.Multiplication(), new Number(numPair[0]), ExUtil.randomTerm(1, varNames.get(0), 3, 9), ExUtil.randomTerm(1, varNames.get(1), 3, 12), new Number(numPair[1]));
            ;
        }
    }
    n[0] = ExUtil.randomlyAddParenthesis((Expression) n[0], 0, 3);
    n[1] = n[0].smartNumericSimplify().standardFormat();
    return n;
}
Also used : Operator(expression.Operator) Node(expression.Node) Number(expression.Number) Expression(expression.Expression) Vector(java.util.Vector)

Example 97 with Expression

use of de.neemann.digital.hdl.model2.expression.Expression in project OpenNotebook by jaltekruse.

the class GraphedCartFunction method draw.

@Override
public void draw(Graphics g) {
    // used to temporarily store the value stored in the independent and dependent vars,
    // this will allow it to be restored after graphing, so that if in the terminal a
    // value was assigned to x, it will not be overriden by the action of graphing
    // Number xVal = getIndependentVar().getValue();
    // Number yVal = getDependentVar().getValue();
    super.clearPts();
    Graphics2D g2d = ((Graphics2D) g);
    g.setColor(getColor());
    if (hasFocus()) {
        graph.LINE_SIZE = 3;
    } else {
        graph.LINE_SIZE = 2;
    }
    int tempLineSize = graph.LINE_SIZE;
    double lastX = 0, lastY = 0, currX = 0, currY = 0;
    Node origionalEx = null;
    Node ex;
    try {
        lastX = graph.X_MIN;
        origionalEx = Node.parseNode(getFuncEqtn());
        ex = origionalEx.cloneNode();
        ex = ex.replace(new Identifier(getIndependentVar()), new Number(lastX));
        ex = ex.replace("\u03C0", new Number(Math.PI));
        ex = ex.replace("e", new Number(Math.E));
        ex = ex.numericSimplify();
        if (ex instanceof Expression) {
            if (((Expression) ex).getOperator() instanceof Operator.Equals) {
                if (((Expression) ex).getChild(1) instanceof Number) {
                    lastY = ((Number) ((Expression) ex).getChild(1)).getValue();
                }
            }
        }
        if (gridxToScreen(lastX) <= graph.X_SIZE + graph.X_PIC_ORIGIN && gridxToScreen(lastX) >= +graph.X_PIC_ORIGIN && gridyToScreen(lastY) <= graph.Y_SIZE + graph.Y_PIC_ORIGIN && gridyToScreen(lastY) >= +graph.Y_PIC_ORIGIN) {
            // if the current point is on the screen, add it to the list of points
            addPt(gridxToScreen(lastX), gridyToScreen(lastY));
        }
    } catch (Exception e1) {
        currX = graph.X_MIN;
        lastY = graph.Y_MIN;
        ;
    }
    currX = graph.X_MIN;
    boolean validExpression;
    for (int i = 1; i < graph.X_SIZE; i += 1) {
        validExpression = false;
        try {
            currX = currX + graph.X_PIXEL;
            ex = origionalEx.cloneNode();
            ex = ex.replace(getIndependentVar(), new Number(currX));
            ex = ex.replace("\u03C0", new Number(Math.PI));
            ex = ex.replace("e", new Number(Math.E));
            ex = ex.numericSimplify();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            lastX = currX;
            lastY = graph.Y_MIN;
            continue;
        }
        if (ex instanceof Expression) {
            if (((Expression) ex).getOperator() instanceof Operator.Equals) {
                if (((Expression) ex).getChild(1) instanceof Number) {
                    currY = ((Number) ((Expression) ex).getChild(1)).getValue();
                    validExpression = true;
                }
            }
        } else if (!validExpression) {
            lastX = currX;
            lastY = graph.Y_MIN;
            continue;
        }
        if (gridxToScreen(currX) <= graph.X_SIZE + graph.X_PIC_ORIGIN && gridxToScreen(currX) >= graph.X_PIC_ORIGIN && gridyToScreen(currY) <= graph.Y_SIZE + graph.Y_PIC_ORIGIN && gridyToScreen(currY) >= graph.Y_PIC_ORIGIN) {
            // if the current point is on the screen, add it to the list of points
            if (lastY <= graph.Y_MIN) {
                addPt(gridxToScreen(lastX), graph.Y_SIZE + graph.Y_PIC_ORIGIN);
            }
            if (lastY >= graph.Y_MAX) {
                addPt(gridxToScreen(lastX), 0 + graph.Y_PIC_ORIGIN);
            }
            addPt(gridxToScreen(currX), gridyToScreen(currY));
        } else if (gridxToScreen(lastX) <= graph.X_SIZE + graph.X_PIC_ORIGIN && gridxToScreen(lastX) >= graph.X_PIC_ORIGIN && gridyToScreen(lastY) <= graph.Y_SIZE + graph.Y_PIC_ORIGIN && gridyToScreen(lastY) >= graph.Y_PIC_ORIGIN) {
            // if the last point is on the screen, add the correct boundary for this point to the list
            addPt(gridxToScreen(lastX), gridyToScreen(lastY));
            if (currY <= graph.Y_MIN) {
                addPt(gridxToScreen(currX), graph.Y_SIZE + graph.Y_PIC_ORIGIN);
            }
            if (currY >= graph.Y_MAX) {
                addPt(gridxToScreen(currX), 0 + graph.Y_PIC_ORIGIN);
            }
        } else if (lastY >= graph.Y_MAX && currY <= graph.Y_MIN) {
            // if the last point was off the the top of the screen, and this one is off
            // the bottom, add the two to the list of points
            addPt(gridxToScreen(lastX), graph.Y_SIZE + graph.Y_PIC_ORIGIN);
            addPt(gridxToScreen(currX), 0 + graph.Y_PIC_ORIGIN);
        } else if (currY >= graph.Y_MAX && lastY <= graph.Y_MIN) {
            // if the last point was off the the bottom of the screen, and this one is off
            // the top, add the two to the list of points
            addPt(gridxToScreen(lastX), 0 + graph.Y_PIC_ORIGIN);
            addPt(gridxToScreen(currX), graph.Y_SIZE + graph.Y_PIC_ORIGIN);
        }
        if (isConnected()) {
            drawLineSeg(lastX, lastY, currX, currY, getColor(), g);
        }
        lastX = currX;
        lastY = currY;
    }
    // g2d.setStroke(new BasicStroke(graph.LINE_SIZE * graph.DOC_ZOOM_LEVEL,
    // BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
    // if ( this.getxVals().size() > 0){
    // GeneralPath polyline =
    // new GeneralPath(GeneralPath.WIND_EVEN_ODD, this.getxVals().size());
    // polyline.moveTo (this.getxVals().get(0), this.getyVals().get(0));
    // for (int i = 1; i < this.getxVals().size(); i++) {
    // polyline.lineTo( getxVals().get(i), getyVals().get(i));
    // };
    // g2d.draw(polyline);
    // }
    graph.LINE_SIZE = 2;
    g2d.setStroke(new BasicStroke(1));
}
Also used : BasicStroke(java.awt.BasicStroke) Identifier(expression.Identifier) Number(expression.Number) Expression(expression.Expression) Node(expression.Node) NodeException(expression.NodeException) Graphics2D(java.awt.Graphics2D)

Example 98 with Expression

use of de.neemann.digital.hdl.model2.expression.Expression in project siena by mandubian.

the class FullText method addColumnData.

private static void addColumnData(ArrayList<String> columns, ArrayList<String> data, Expression expr) {
    if (expr instanceof ConditionAndOr) {
        ConditionAndOr and = (ConditionAndOr) expr;
        Expression left = and.getExpression(true);
        Expression right = and.getExpression(false);
        addColumnData(columns, data, left);
        addColumnData(columns, data, right);
    } else {
        Comparison comp = (Comparison) expr;
        ExpressionColumn ec = (ExpressionColumn) comp.getExpression(true);
        ValueExpression ev = (ValueExpression) comp.getExpression(false);
        String columnName = ec.getColumnName();
        columns.add(columnName);
        if (ev == null) {
            data.add(null);
        } else {
            data.add(ev.getValue(null).getString());
        }
    }
}
Also used : ValueExpression(org.h2.expression.ValueExpression) Expression(org.h2.expression.Expression) Comparison(org.h2.expression.Comparison) ValueExpression(org.h2.expression.ValueExpression) ConditionAndOr(org.h2.expression.ConditionAndOr) ExpressionColumn(org.h2.expression.ExpressionColumn)

Aggregations

Expression (org.h2.expression.Expression)84 ValueExpression (org.h2.expression.ValueExpression)53 Column (org.h2.table.Column)45 ExpressionColumn (org.h2.expression.ExpressionColumn)38 IndexColumn (org.h2.table.IndexColumn)24 AlterTableAlterColumn (org.h2.command.ddl.AlterTableAlterColumn)21 AlterTableAddConstraint (org.h2.command.ddl.AlterTableAddConstraint)18 ValueString (org.h2.value.ValueString)18 AlterTableRenameColumn (org.h2.command.ddl.AlterTableRenameColumn)17 TableFilter (org.h2.table.TableFilter)15 AlterTableDropConstraint (org.h2.command.ddl.AlterTableDropConstraint)14 AlterTableRenameConstraint (org.h2.command.ddl.AlterTableRenameConstraint)14 Expression (expression.Expression)13 Table (org.h2.table.Table)13 Value (org.h2.value.Value)12 ArrayList (java.util.ArrayList)11 Node (expression.Node)10 RangeTable (org.h2.table.RangeTable)10 Number (expression.Number)9 CreateTable (org.h2.command.ddl.CreateTable)9