Desafios en JavaScript, ronda 2

Para continuar con los artículos de escaso valor didáctico, recopilo otros tres problemas para resolver.

En esta oportunidad es mi intención que los problemas sean de una naturaleza menos ‘oscura’ y algo más accesibles al público general.

Las referencias originales a los problemas 2 y 3 (y a sus respectivos autores) van a ser publicadas con las soluciones, a fines de evitar posibles spoilers de las soluciones.

Problema 1

Escribir una función que reciba un único argumento númerico y devuelva el número romano correspondiente. Por ejemplo:

// Sea f la función que cumple el enunciado

f(11); // "XI"
f(6); // "VI"
f(16); // "XVI"
f(98); // "XCVIII"

Ante cualquier duda con los caracteres utilizados, sus reglas y precedencia, pueden consultar la wikipedia: Numeración romana.

Problema 2

Escribir una función que reciba un único argumento númerico y devuelva la factorización del mismo, respetando el orden ascendente de la descomposición. Por ejemplo:

// Sea f la función que cumple el enunciado

f(11); // "11"
f(6); // "2 x 3"
f(16); // "2^4"
f(98); // "2 x 7^2"

Problema 3

Escribir una función que ordene una lista (array) de números enteros sin usar condicionales. Al igual que la entrega anterior, consideramos condicionales a las sentencias operadores booleanos, if, switch, operador ternario, try/catch.

Aclaraciones extras: no vale usar una sorted collection, un árbol, radix sort, etc.


Shortlink: http://goo.gl/heEot




3 views shared on this article. Join in...

  1. Franz dice:

    Hola hace poco he encontrado tu blog y me parecio muy bueno, tambien te estoy siguiendo en twitter y espero aprender mucho de usted

    este es mi código del segundo problema, aunque está desordenado creo que funciona

     function Descomponer(numero){
    	var i = 2;
    	while(i<=numero/2){
    		if(numero%i==0){
    			aux = i;
    			valor=2;
    			cont=0;
    			while(valor<=aux/2){
    				if(aux%valor==0)
    					cont++;
    				if(cont==1)	
    					break;
    				valor++;	
    			}
    			if(cont==0){
    				numeroAux = numero;
    				cont2=0;
    				while(numeroAux%aux==0){
    					numeroAux = numeroAux/aux;
    					cont2++;
    				}	
    				if(cont2==1)
    					document.write(aux);
    				else{
    					document.write(aux+"^"+cont2);
    				}	
    				document.write(' x ');
    			}	
    		}	
    		i++;
    	}
     }
     
     Descomponer(144);
     

    falta limpiar el codigo =)

    • Espero que aprender de mi sea posible 🙂

      Un par de tips con respecto al código que son fácilmente solucionables.

      1. Como regla general, los nombres de variables y funciones comienzan en minúscula (a menos que estemos hablando de una clase/constructor).

      2. Estás declarando variables sin utilizar el var, lo cual produce variables globales implícitas y es una mala práctica.

      3. Estás escribiendo en pantalla cuando la premisa del problema dice claramente que debe devolver el resultado.



Pings to this post

  1. […] modo de resumen, expongo en esta entrada algunas de las soluciones a los problemas expuestos en la entrada anterior. En este tema del foro Foros del Web, se pueden ver distintas soluciones volcadas por los usuarios […]


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Comment

You may use these tags : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>