Javier / Mar 14 2023
Remix of Environments: A Deep Dive by
Nextjournal
Explorando lenguajes de programación
El propósito de esta notebook es que la utilicen para explorar distintos lenguajes de programación. No están limitados a las celdas que abrí, también pueden crear celdas de otros lenguajes que están disponible cuando hacen click en el ícono +
Así que ¡diviértanse! (Y recuerden tratar de realizar la función de potencia en uno de los dos lenguajes de abajo, Racket o Python).
Java
/**Calcula la potencia de un número x, siempre y cuando el exponente sea un número natural*/public double potencia(double base, int expt) throws IllegalArgumentException{ if(expt < 0) throw new IllegalArgumentException("El exponente debe ser un número natural"); double res = 1.0; while(expt >= 1){ res*=base; expt--; }return res;} 2.8s
Math.pow(-2,-32)0.4s
potencia(-2, -32)0.3s
Scala
def potencia(base:Double , expt:Int): Either[String,Double] = { if(expt < 0) Left("El exponente debe ser un número natural") else Right({ val vec = for(i <- 1 to expt) yield base vec.foldLeft(1.0)((a,b) => a*b) }) }11.1s
potencia(3,6)1.5s
java.lang.Math.pow(6,6)0.9s
potencia(6,6)1.2s
Julia
function potencia(a, b) reduce(*, repeat([a],b))end0.2s
Clojure
(defn potencia [base expt] (if (< expt 0) "El exponente debe ser un numero natural" (->> (repeat base) (take expt) (reduce *))))0.1s
(potencia 9 -12)0.1s
(Math/pow 9 12)0.1s
Python
# Descomente (es decir, borre el símbolo #) y complete la función# def potencia(base,expt): 0.1s
Racket
; Complete la función. Arrojará error si se evalúa porque falta el cuerpo.(define (potencia base expt) )0.4s