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))
end
0.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