GithubHelp home page GithubHelp logo

cc_bigintegers's Introduction

cc_bigintegers's People

Contributors

garciparedes avatar ismtabo avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Forkers

garciparedes

cc_bigintegers's Issues

Recoger expresión de interfaz e interpretarla

Redefinir la interfaz, no permitiendo la edición en el textpane y redefiniendo la estructura de la salida(colores, identación,...). Por ahora hay que pensar como mostrar los errores a los usuarios.

Implementación de clase BigInt

He puesto este nombre a la tarea porque no sabía cómo llamarla.

Se me ha ocurrido algo para luego no tener que modificar el código independiente a la clase BigInteger en el caso de que al final nos decidiéramos a implementarla nosotros mismos.

Podríamos crear una interfaz con los métodos que necesitemos de la clase BigInteger (con el mismo nombre) y utilizar esta interfaz en nuestro código.

Después crear una clase que herede de BigInteger cuyo único cambio respecto de la original sea que implemente nuestra interfaz.

Con esto conseguiríamos que al utilizar nuestra clase en el resto del código tan solo tendríamos que cambiar el valor que le damos a la interfaz, es decir, sustituiríamos

InterfazBigInt bigInt = new BigIntegerHeredada();

por

InterfazBigInt bigInt = new NuestraClaseBigInt();

y nada más. =)

Convertir una expresión en bruto a identificador y expression

La tarea consiste en extraer de la expresión en bruto "nombreVariable = expresión" en:
"nombreVariable" como un String
"expresion" como un String
Lo que se hará a continuación con estos dos Strings es lo siguiente:

ExpressionTree.putVar("nombreVariable", new ExpressionInfix("expresion"));

Lo que creará un árbol de expresión (en el ejemplo se crea a partir de una expresión infija) para luego meterle en el diccionario de variables que por el momento se aloja de manera estática en la clase ExpressionTree aunque.

ExpressionInfix bug isOp has char needs String

Cambiar en la clase ExpressionInfix al saber si un nodo es una operación del tipo Operation hay que cambiar el tipo del operador de char a String, ya que se ha cambiado esto en la clase enumerada Operation.

¿Qué hacer cuando se introduce en expresión variables no asignadas?

Creo que deberíamos dejar claro qué va a suceder en este caso.

Se me ocurren varias alternativas posibles:

  • Utilizar esa variable como si su valor fuese 0.
  • Dar un mensaje de error en el momento de la introducción.
  • Permitir introducir la expresión y comprobar si está definida o no en el momento en que se pida el resultado de la variable por si las variable se ha instanciado posteriormente, es decir, evaluación perezosa.

Encontrado bug de sintaxis al asignar variables

Ahora mismo solo deja asignar variables con el siguiente formato:
variable = expresión fijando estrictamente el número de espacios.
Propongo que se eliminen todos los espacios con

string.replaceAll("\\s+", "")

y a partir de ahí se busque "=" en vez de " = "

Implementar operaciones adicionales

Como viene en los requisitos de la práctica, hay que implementar:

Supongamos que 335, 447 y 8989 son tres BigInteger “arbitrarios”
Además debemos poder calcular
335.modInverse(447)
335.modPow(447,8989)
447.isProbablePrime(200)
447.nextProbablePrime()

Todas estas operaciones ya están implementadas por la propia clase BigInteger, por lo que lo que hay que hacer es modelar el método de entrada e implementarlo

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.