Resolución del 1er Exámen de Intro

Publicado por Unknown en 11:22 0 comentarios
Primer exámen, 25/08/2010

Parte 1, Falso o Verdadero

-Python es un lenguaje interpretado o de script
Es verdadero

-Se dice que Python ofrece tipado dinámico porque es necesario declarar el tipo de datos que va a contener una determinada variable
Falso, Python ofrece tipado dinámico porque NO es necesario declarar el tipo de datos que va a contener una determinada variable

-El intérprete de Python está disponible en multitud de plataformas por esa razón se considera un lenguaje orientado a objetos.
Falso, se considera orientado a objetos no porque sea multiplataforma. Un lenguaje puede ser orientado a objetos y servir en una única plataforma

-Los números reales son los que tienen decimales. En Python se expresan mediante el tipo float.
Verdadero, los números de tipo flotante

-El bucle While (mientras) ejecuta un fragmento de código mientras se cumpla una condición.
Verdadero

Parte 2, detección de errores

1. Identifique los errores de la siguiente función:
http://i.imgur.com/Y4PAC.jpg

1er error: Faltan los dos puntos luego de declarar el nombre y los argumentos de la función

2do error: result=0 está mal indentado

2. Identifique los errores de la siguiente función:
http://i.imgur.com/W6NrQ.jpg

1er error: Los argumentos deben ir separados en coma, como en todas las tuplas (Más adelante las veremos). La coma es el elemento fundamental de una tupla
2do error: Los condicionales de if deben llevar doble signo de igual, == y los condicionales de esta función no llevan doble igual

Parte 3: Desarrollo

1. Defina una función en Python que verifique si los dígitos de un número entero positivo dado están ordenados de mayor a menor (derecha a izquierda)
Ejemplos:
ordenado(234516) -> False
ordenado(9873) -> False
ordenado(3455689) -> True
ordenado(24567) -> True

La solución que he creado (aunque puede hacerse de otras formas) es la siguiente:

http://i.imgur.com/s4pIS.jpg

2. En la empresa SeguriTEC le ha pedido a usted escribir un programa que desencripta la combinación de seguridad para la caja fuerte. a continuación se le explica como está encriptada la clave:
La clave encriptada es un número entero positivo compuesto de 12 dígitos. Para obtener la clave real se debe agrupar los dígitos en cuatro grupos de tres dígitos continuos cada uno. Tomar el dígito MÁS SIGNIFICATIVO de cada grupo.

Ejemplos:
desencriptar(356725512199)
356 725 512 199
3 7 5 1
clave=3751

desencriptar(367859323472)
367 859 323 472
3 8 3 4
clave= 3834

La solución que he creado (aunque puede hacerse de otras formas) es la siguiente:

http://i.imgur.com/12l7x.jpg

3. En la empresa SeguriTEC también le han pedido a usted escribir un programa que sirva para encriptar la combinación de seguridad de una caja fuerte. A continuación se le explica como se realiza el proceso de encriptamiento de la clave:
El usuario introduce un número entero positivo y la función agrega el primer dígito de forma normal. El segundo dígito es tomado para obtener la sumatoria de éste dígito dos veces. El tercer dígito es tomado para obtener la sumatoria de éste dígito tres veces, así sucesivamente, hasta llegar al final del número dado por el usuario

Ejemplos:
encriptar(79361)
77777 9999 333 66 1
35 36 9 12 1
clave encriptada: 35369121

encriptar(658162)
666666 55555 8888 111 66 2
36 25 32 3 12 2
clave encriptada: 3625323122

La solución que he creado (aunque puede hacerse de otras formas) es la siguiente:

http://i.imgur.com/aLCjb.jpg

PRÁCTICA 064

Publicado por Unknown en 7:03 0 comentarios
Escriba una función que tenga el siguiente comportamiento

Recibe este número:

196753438526

Y devuelve este otro:

350876

¿Qué hace la función?

Toma un dígito del número y lo introduce en el resultado, luego el siguiente dígito a colocar es la sumatoria de los siguientes dos digitos, luego el siguiente lo coloca normal, luego el siguiente es la sumatoria de los siguientes 3 digitos, luego el siguiente normal, luego la sumatoria de los siguientes 4 dígitos y así sucesivamente.

Si la sumatoria de los dígitos es mayor a 10 debe tomarse el dígito menos significativo.

Veamos el ejemplo de arriba:

196753438526

Debería realizarse la operación

1+9+6+7, 5, 3+4+3, 8, 5+2, 6

Entonces:


1+9+6+7 = 23, el dígito menos significativo es el 3
5
3+4+3 = 10, el dígito menos significativo es el 0
8
5 + 2 = 7, se toma el 7
6

Luego se forma un digito con todos esos números, quedandonos como resultado
350876



Fue un ejercicio de consulta antes del exámen, que es dentro de 45 minutos

PRÁCTICA 063

Publicado por Unknown en 11:42 0 comentarios
Realice una función que reciba un número conformado estricamente por 4 números. Debe intercambiar posiciones del primer par con el segundo.

Ejemplos:
invert(1234)
>> 3412

invert(9876)
>> 7698

invert(4576)
>> 7645


PRÁCTICA 062

Publicado por Unknown en 16:14 0 comentarios
Escriba una función que se componga de varios números. Entre los dígitos de ese número se encuentran varios unos y ceros. La idea es, que la función extraiga esos unos y ceros, formando un número binario, y luego devuelva ese número binario. Finalmente ese número binario debe ser convertido a decimal.

Ejemplo 1
ultimo_desencriptar_abel(90113)
dentro del número se encuentran unos y ceros formando el número 011
011 binario = 3 decimal
Devuelve 3

Ejemplo 2
ultimo_desencriptar_abel(4155166617771)
dentro del número se encuentran varios unos formando el número 1111
1111 binario = 15 decimal
Devuelve 15

Ejemplo 3
ultimo_desencriptar_abel(7188810743817834)
dentro del número se encuentran varios unos y ceros formando el número 1010
1010 binario = 10 decimal
Devuelve 10


PRÁCTICA 061

Publicado por Unknown en 16:07 0 comentarios
Escriba una función que recibe un número donde cada dígito aparece estrictamente 2 veces. Pueden estar juntos o distribuidos en el número. Debe eliminar la segunda aparición de cada dígito de derecha a izquierda.

Ejemplo 1
capricho_seguriTEC(255121)
Devuelve 521

Ejemplo 2
capricho_seguriTEC(323442)
Devuelve 342

Ejemplo 3
capricho_seguriTEC(2211)
Devuelve 21




Las funciones contardigitos e invertir fueron hechas en ejercicios anteriores

PRÁCTICA 060

Publicado por Unknown en 13:16 0 comentarios
Crear una función que recibe un número y devuelve el número de apariciones que tiene el número con más apariciones.

ejemplo

recibe 11123
el 1 es el que tiene más apariciones. Tiene 3 apariciones
Devuelve 3

recibe 1234557788889
el 8 es el que tiene más apariciones, tiene 4
devuelve 4


PRÁCTICA 059

Publicado por Unknown en 0:53 3 comentarios
El otro día que fui al laboratorio me encontré a Ema programando y había una especie de triángulo hecho con asteriscos en la pantalla. El sábado que se quedó una gente en resi 2 estaba también Gabriel y vi el triángulo de nuevo. Básicamente la cónsola imprime algo como lo siguiente:

http://i.imgur.com/67mjQ.jpg

Tampoco creo que salga algo como esto en el exámen, pero, el triángulo no es tan dificil de construir si te pones a pensar un poco.

Crear una función que reciba un número y construya un triángulo como el de arriba tal que la última fila (la base) contenga el mismo número de asteriscos que el número introducido si el número es impar, si el número es par, debe ser igual al número anterior.



PRÁCTICA 058

Publicado por Unknown en 22:34 0 comentarios
Para el primer semestre del 2010 hice 3 progras. La primera era una base de datos que no guardaba datos, la segunda progra un juego llamado tresillo, y la tercera una especie de red social similar a las famosas redes como facebook, hi5, y demás.

Pues, resulta que para la primera progra tenía un formulario de login en el que se introducia usuario y contraseña. La contraseña tenía se desencriptaba. El ejercicio a continuación, es el desencriptar de la primera progra.

La clave está en hexadecimal, cada dígito en hexadecimal es
pasado a binario y los bits de ese dígito sufren intercambio el bit menos
significativo por el más significativo. Ese resultado es pasado a decimal y se
obtiene la clave correcta.

Ejemplo:

La función recibe un argumento "A23B", un número en hexadecimal cualquiera.

Luego lo pasa a binario.
1010 0010 0011 1011

Luego los bits de ese dígito sufren intercambio el bit menos significativo por el
más significativo.
0011 0010 1010 1011

Y finalmente se pasa a decimal
1297110



Nota: La función de cómo pasar de binario a decimal ya está hecha en ejercicios anteriores,

PRÁCTICA 057

Publicado por Unknown en 19:55 0 comentarios
Crear las siguientes funciones que hagan las conversiones de bases de la siguiente forma:

DE DECIMAL A BINARIO (Ya fue hecha en el ejercicio 27)
DE BINARIO A DECIMAL
DE DECIMAL A OCTAL
DE OCTAL A DECIMAL
DE DECIMAL A HEXADECIMAL (Ya fue hecha en el ejercicio 45)
DE HEXADECIMAL A DECIMAL (Ya fue hecha en el ejercicio 47)
DE BINARIO A HEXADECIMAL
DE HEXADECIMAL A BINARIO

PRÁCTICA 056

Publicado por Unknown en 23:01 0 comentarios
Bueno, ayer asistí con algunos compañeros a la Acreditación de la Carrera de Computación, celebrada en la sede San Carlos. Estuvo bastante interesante todo lo que dijeron sobre el TEC y sobre el futuro de la carrera. Después de la acreditación dieron un coctel. Me tomé varias copitas de un ponche, y luego en residencia practicando para el próximo exámen, lo que surgió como una idea bastante simple luego se convirtió en un ejercicio bastante complejo.

Se trata de lo siguiente la función recibe un número entero positivo, y un rango, y luego invierte ese rango.

Ejemplo

invertir_ponche(2,5,123456789)
>> 154326789

invertir_ponche(4,8,123456789)
>> 123876549

Recibe como ya se explicó arriba 3 argumentos, ini, fin, n

Luego invierte el rango desde ini a fin. El problema parece bastante simple, no sé si es que me afectó el ponche, pero he terminado haciendo casi una progra... necesitando 7 funciones para el resultado final.



Para desarrollar esta función tuve que hacer muchas correcciones, por el asunto de las posiciones y el invertir que había que hacerle a varios rangos. El problema cuenta con las siguientes funciones:

1- contardigitos(n)
2- invertir(n)
3- averiguar_por_posicion(p,n)
4- armar_con_posiciones (ini,fin,n)
5- eliminar_por_posicion(p,n)
6- insertar_en_posicion(new,p,n)
7- ponche_de_acreditacion_computacion(ini,fin,n)

Resolví el problema con esas funciones, contando con el siguiente razonamiento:

Suponiendo que tenemos un número 123456789, y queremos invertir el rango desde el 3 al 7, para que nos quede 127654389, se procede de la siguiente forma:

Se extrae el rango que se quiere invertir = 34567
Se cuenta el número de dígitos de ese rango = 5
Se eliminan 5 veces el número que se encuentre en la posición 3.
Número original = 123456789
Se elimina = 12456789
Se elimina = 1256789
Se elimina = 126789
Se elimina = 12789
Se elimina = 1289

Quedandonos 1289 como número

Ahora invertimos el rango que habíamos extraído, 76543

y ahora insertamos el rango invertido en la posición 3 (que era la posición ini) del número formado por los dígitos restantes, quedándonos el resultado final:

127654389

----------------------------------------------

Bueno esto es la función de celebración de que nuestra carrera de computación ha sido acreditada.

PRÁCTICA 055

Publicado por Unknown en 20:49 0 comentarios
Construya una función de fibonacci cercano. Esta función encuentra al número más cercano a un número tal que el fibonacci del número encontrado <= número.

Ejemplos:

fibonacci_cercano 10
6
ya que el fibonacci de 6 es 8 y el de 7 13 (El de 7 sobrepasa a 10)

fibonacci_cercano 20
7
ya que el fibonacci de 7 es 13 y el de 8 es 21 (El de 8 sobrepasa a 20)

fibonacci_cercano 65
10
ya que el fibonacci de 10 es 55 y el de 11 es 89 (El de 11 es igual a 65)

PRÁCTICA 054

Publicado por Unknown en 14:42 0 comentarios
Construya una función que indique cuántos números primos, iniciando del menor al mayor, deben sumarse tal que la suma de los mismos sea mayor o igual que el número recibido.

Por cierto, haciendo una observación, en el libro de Jose E. Helo Guzmán, Introducción a la Programación con Scheme, en la página 89, es de esta página donde yo he tomado este ejercicio, es la sección de prácticas. Pero he notado que en esa página se toma al 1 como un número primo. Sin embargo, el 1 según tengo entendido no es un número primo. El primer número primo después del 0 es 2.

Los números primos son los que solo tienen dos divisores: Él mismo, y 1. El uno no es primo porque solo tiene un divisor que es sí mismo. Aunque pueda sonar ambiguo, o rebuscado, la comunidad matemática se ha inclinado por no considerarlo primo, y a continuación se presenta un poco de información antes de mostrar la solución:


Primalidad del número 1


La cuestión acerca de si el número 1 debe o no considerarse primo está basada en la convención. Ambas posturas tienen sus ventajas y sus inconvenientes. De hecho, hasta el siglo XIX, los matemáticos en su mayoría lo consideraban primo. Muchos trabajos matemáticos siguen siendo válidos a pesar de considerar el 1 como un número primo, como, por ejemplo, el de Stern y Zeisel. La lista de Derrick Norman Lehmer de números primos hasta el 10.006.721, reimpreso hasta el año 1956[11] empezaba con el 1 como primer número primo.

Actualmente, la comunidad matemática se inclina por no considerar a 1 en la lista de los números primos. Esta convención, por ejemplo, permite una formulación muy económica del teorema fundamental de la aritmética: «todo número natural tiene una representación única como producto de factores primos, salvo el orden». Además, los números primos tienen numerosas propiedades de las que carece el 1, tales como la relación del número con el valor correspondiente de la función φ de Euler o la función suma de divisores.

Fuente: http://es.wikipedia.org/wiki/N%C3%BAmero_primo#Primalidad_del_n.C3.BAmero_1



La función primo aparece oculta para mostrar solo la que estamos practicando. En los ejercicios anteriores encontrarán una forma de encontrar el primo

PRÁCTICA 053

Publicado por Unknown en 3:46 0 comentarios
Construya una función que averigüe si un número es primo. Luego use esta función para crear otra llamada primo_cercano, en la que, si el número no es primo, devuelve el primo más cercano que esté antes de sí.

Ejemplos,
primo_cercano(11)
devuelve 11

primo_cercano(20)
devuelve 19

PRÁCTICA 052

Publicado por Unknown en 3:23 0 comentarios
Construir una función que nos diga si dos números son CERCANOS.

Los números cercanos son los que, sumando todos los divisiores de ambos números, nos da el mismo resultado.

Ejemplo:

Los números 98 y 175 son cercanos, pues:
Los divisiores de 98 son: (1 2 7 14 49) todos sumados dan como resultado 73
Los divisores de 175 son: (1 5 7 25 35) todos sumados dan como resultado 73

La función recibe dos números y devuelve un string avisando si son cercanos, o de lo contrario, si no lo son.

PRÁCTICA 051

Publicado por Unknown en 23:54 0 comentarios
Cree una función que obtenga la raíz cuadrada de un número, utilizando el método de Newton-Raphson.



El método de Newton-Raphson es más efectivo que el método de bisección, para obtener la raíz cuadrada de un número, y lo hace en menos iteraciones. Incluso es más sencilla de programar con una simple fórmula.

Mientras más aumentemos el margen de error, más iteraciones serán usadas. Mientras que la bisección hace 15 iteraciones, Newton-Raphson hará talvez 3. Cuando el método de bisección haga 29 iteraciones, Newton-Raphson hará solo 4. Y cuando haga 42 iteraciones, el método de Newton-Raphson hará solamente 5.

Les recomiendo que revisen las páginas de la 66 a la 77 (Sí, 10 páginas....eh, son 12...) y ahí viene explicado demasiado fácil algunas diferencias entre ambas.

Una forma de comprobar el asunto de las iteraciones es pidiéndole a la función que imprima el resultado de la ecuación que reduce el problema o, que con un contador devuelva el número de iteraciones. Aunque me gusta más imprimir las iteraciones porque puedes ver los cálculos que hace la función y cómo trabaja.

PRÁCTICA 050

Publicado por Unknown en 22:39 0 comentarios
Bueno ya con esta sería la práctica 50 de los ejercicios propuestos en esta sección. Si practicaste todos los ejercicios que vienen acá y ya eres capaz de resolverlos o al menos lograr algo similar, aunque no sirva, y ver tus errores, estás listo para dar el siguiente paso. Para probar nuestro esfuerzo acá tenemos la cereza en el pastel:

Ejercicio 50

Crea una función iterativa que saque una raíz cuadrada utilizando el método de bisección.



Análisis y Conclusiones

Bueno, conozco el nombre de dos métodos para sacar raíces cuadradas, el método por Bisección y el Cálculo de Newton-Raphson. El método Newton-Raphson consume menos recursos ya que usa menos iteraciones para resolver la raíz.

Sin embargo, y como es costumbre, nos hemos complicado la vida y decidido probar el método de Bisección.

La función recibe un número, y devuelve su raíz cuadrada.

El método matemático es el siguiente

Recibe n, supongamos que queremos saber la raíz cuadrada de 2, por lo tanto n vale 2

n = n
elemento1 = 0
elemento2 = n = 2

El elemento1 debe ser cero, porque primero calcula en el intervalo desde 0 a 2

fórmula1 = (0 + n) / 2 = 1

fórmula2 = valor absoluto de 2 - (fórmula1 ** 2) = 1

En este punto se hace la pregunta, ¿Es menor o mayor el resultado de fórmula2, a n?

Si la respuesta es sí, entonces ahora elemento2 toma el valor de fórmula1
Si la respuesta es no, entonces ahora elemento1 toma el valor de fórmula1

Luego va creando intervalos y evaluando, haciendo una comparación con un margen de error decidido por nosotros, que sería 0.0001

Se comporta algo así:

[0,2]
[1,2]
[1,1.5]
[1.25,1.5]

Y así dividiendo y comparando hasta llegar a la raíz cuadrada del número.

Pues tuve que tener mucho cuidado haciendo esta función porque hay una cuestión jodida con los números decimales, que si no especificas que devuelva decimales, no lo hace.

Así pues, tuve que hacer cosas como dividir n entre 1.0, para que devolviera algo como n.0 y luego seguir trabajando con la función. Luego la cuestión de las fórmulas quise reducirlas lo mejor que se pudiese, pero no hubo forma, por eso quedó tanto código en la función, no encontré una mejor manera de hacerla (Y quería que quedara todo dentro de una sola función.)

Recuerdo que en Scheme se hacía pero recursivamente y necesitaba más de una función:



A pesar de ser algo relativamente fácil de comprender, se necesita querer aprenderlo, o comprenderlo.

El cálculo de raíces es un muy buen ejercicio para prepararse para los primeros exámenes de introducción del TEC.

PRÁCTICA 049

Publicado por Unknown en 22:26 0 comentarios
Crear una función que saque el valor absoluto a un número

Ejemplo absoluto(-45.3453)
Devuelve: 45.3453
Recibe -4
Devuelve 4



Analiza por un momento la función anterior. Ahora mira esta otra solución



Es más correcto así? pues mira la que sigue



En Python para obtener el absoluto de un número basta con colocar abs(n). Ya lo trae por defecto. Recordemos que Python ya viene cargado de métodos y clases, pero no está de más. ¿Porqué a estas alturas se habla del valor absoluto? A veces nos olvidamos que existe, y de su utilidad... Busquen en google información sobre valores absolutos.

Además de eso, quería que la función 50 (que ya la tengo hecha) fuera algo especial, y en cierto modo lo es. Además está relacionada con esta función de absoluto.

Accidente con Raíz Cuadrada en Python

Publicado por Unknown en 20:16 0 comentarios
El otro día estaba medio dormido y no sabía muy bien ni qué estaba haciendo si tenia el Python (PyCharm) abierto o el messenger o la cónsola. El caso es que en estos casos uno no debería ponerse a programar, si no puede toparse con desastres. Por eso hay que dormir bien. Aquí va un ejemplo de una desastroza función donde se suponía que debía devolver la raíz cuadrada del número.




Esta función devuelve como resultado

1.0
1.5
1.25
1.375
1.4375
1.40625
1.421875
1.4140625
1.41796875
1.416015625
1.4150390625
1.41455078125
1.41430664062
1.41418457031
1.41424560547
1.41421508789
1.4141998291
1.4142074585
1.41421127319
1.41421318054
1.41421413422
1.41421365738
1.41421341896
1.41421353817
1.41421359777
1.41421356797
1.41421355307
1.41421356052
1.41421356425
1.41421356238
1.41421356145
1.41421356192
1.41421356215
1.41421356227
1.41421356233
1.41421356236
1.41421356237
1.41421356238
1.41421356237

Y luego sigue imprimiendo infinitamente el número 1.41421356237. Le puse esos prints para saber qué era lo que estaba pasando sobre el porqué no devolvía ningún resultado


Lo más curioso es que la raíz cuadrada de 2 es 1.4142135623730951

Sin embargo ambos resultados elevados al cuadrado nos dan 2.

El método usado por esta desastroza función, se llama método de bisección en donde se obtiene el resultado dividiendo recursivamente con varios parámetros y operaciones definidas.

El método aparece explicado en el libro de Introducción a la Programación con Scheme de Jose E. Helo Guzmán en las páginas de la 66 a la 70, y en internet se pueden encontrar varios resultados donde se explica el método, utilizando algún buscador (como google o yahoo).

Se nos explica además que existe un método más efectivo conocido como Cálculo de Raíces por Newton-Raphson, que encuentra la respuesta en menos iteraciones que por bisección.

Bueno, la práctica es tan sencilla como: Encuentre el error y corrija la función anterior, o haga una nueva función que le saque la raíz cuadrada a un número, pero eso sí, debe ser iterativa, y además, no deben analizarla a partir de la que fue hecha en scheme. Deben hacerla basándose solo en el análisis matemático, del método de Bisección.

PRÁCTICA 048

Publicado por Unknown en 23:23 0 comentarios
Primer Quiz del segundo semestre 2010. Esta función:

Recibe: 1 número entero mayor que 0
Devuelve: 2 números, formados por los dígitos del número original. Uno de ellos formado por los pares, y el otro, por los impares. Ambos deben contener los dígitos ordenados de forma descendente.

Ejemplo:

ordenar(123456789)

Devuelve:

97531 # Formado por impares ordenado descenentemente
8642 # Formado por pares ordenado descendentemente

PRÁCTICA 047

Publicado por Unknown en 19:00 0 comentarios
Crear una función que convierta desde Hexadecimal, a Decimal



PRÁCTICA 046

Publicado por Unknown en 0:41 0 comentarios
Con el ejercicio 45 que convierte un número de decimal a hexadecimal, podemos armar una función que nos devuelva a manera de tabla, la lista de números en decimal y al lado su equivalencia en hexadecimal. Esto no solo sirve para decimal y hexadecimal, si no que es un ejemplo más de cómo armar tablas de equivalencia, tales como tablas de multiplicar, en hexadecimal, en binario, y en cualquier otro sistema que pueda haber.



¿Para qué buscar una tabla de decimal-hexadecimal, o cualquier otra cosa, si podemos crearlas dinámicamente nosotros mismos? En esta versión de prueba, la función tabla_hexadecimal(limite), recibe un número. Luego imprime todos los números en decimal y su equivalente en hexadecimal, hasta llegar a dicho número. También podrían hacer versiones alternativas, como por ejemplo, usando rangos, o devolviendo más de una equivalencia. Por ejemplo agregando para que también envíe la equivalencia en octal y binario.

Sé que este ejercicio ya no presenta un nivel de complejiidad superior o ascendente con respecto a los anteriores, pero es importante recordar que la programación sirve también para usos tan cotidianos como crear tablas, que a su vez, nos pueden ayudar a resolver otros problemas e incluso funciones.

Ya se han creado una tabla con todos los primos hasta cierto número, también agregar fibonaccis, factoriales, etc todo lo que sea posible para mejorar nuestra abstracción y nivel de análisis.

PRÁCTICA 045

Publicado por Unknown en 23:28 0 comentarios
Realizar una función que convierta de decimal a hexadecimal.



Esta es una alternativa. Se divide recursivamente entre 16, se evalúan los casos en caso de que el residuo sea igual al rango de números del 11 al 15, y se transforma en letras, luego se unen con el resultado, y al final se invierte con una función creada exclusivamente para invertir strings.

Se obtiene finalmente el resultado. Ejemplo recibe 999 decimal, devuelve 3E7, en hexadecimal

PRÁCTICA 044

Publicado por Unknown en 18:47 0 comentarios
En el ejercicio 43 del blog habíamos realizado una función que volteara los números de 2 en 2, de la siguiente forma:

Esto:
1234567

Lo convertía en esto:
1325476

Pues, ahora la función que queremos hacer es una función que haga lo mismo pero no que voltee solo de dos en dos los números, si no que lo haga volteando la cantidad que nosotros le digamos. Ejemplo le decimos a la función que voltee de 3 en 3 en la siguiente cifra

123456789

Nos debe quedar de la siguiente forma:
321654987

La función recibe dos argumentos, el primer argumento es la cantidad de números a voltear, y el segundo argumento es el número.

Ejemplos Finales:

voltearlos(4 , 12345678)
Devuelve: 43218765

voltearlos(3 , 12345678)
Devuelve: 12543876



PRÁCTICA 043

Publicado por Unknown en 17:36 0 comentarios
Invertir cada pareja de dígitos en un número dado

Ejemplos:
6152367125 -> 16 25 63 17 52 -> 1625631752
152367125 -> 1 25 63 17 52 -> 125631752
15236 -> 12536



PRÁCTICA 042

Publicado por Unknown en 15:24 0 comentarios
Realizar una función que una dos números
Ejemplo: Recibe dos números, 1111, 222. El resultado es 1111222



PRÁCTICA 041

Publicado por Unknown en 14:59 0 comentarios
Realizar una función que recibe un número y cambia los dígitos de la siguiente forma:
Los 9 los cambia por 33
Los 8 los cambia por 222

Ejemplo

129879
1233222733



PRÁCTICA 040

Publicado por Unknown en 0:01 0 comentarios
Se tiene una cuenta de ahorros en la cual se deposita un capital al inicio de un año. Por cada año que transcurra se recibe un interés sobre el capital depositado. Es decir, al terminar el año se cuenta con el capital inicial más el interés ganado. Construya una función que calcula el monto que se recibe al depositar un capital a un interés dado durante un cierto número de años. Recibe el capital, el interés, y el número de años.

Si el monto es 2000, el interés 0.10, y 0 años. Devuelve 2000
Si el monto es 2000, el interés 0.10, y 1 años. Devuelve 2200
Si el monto es 2000, el interés 0.10, y 2 años. Devuelve 2420
Si el monto es 2000, el interés 0.10, y 3 años. Devuelve 2662



PRÁCTICA 039

Publicado por Unknown en 13:06 0 comentarios
CREAR UNA FUNCIÓN QUE DEVUELVA EL FACTORIAL DE UN NÚMERO



PRÁCTICA 038

Publicado por Unknown en 12:59 0 comentarios
CREAR UNA FUNCIÓN QUE REPRESENTE A LA SECUENCIA DE FIBONACCI



PRÁCTICA 037

Publicado por Unknown en 19:51 0 comentarios
Escriba un programa que sume un número específico a todos los dígitos de otro número.
Si la suma es mayor que 10 se debe tomar el dígito menos significativo de la suma.



PRÁCTICA 036

Publicado por Unknown en 17:54 0 comentarios
Utilice el siguiente algoritmo para determinar si un número es divisible por 3:

- Sumar los dígitos del número de manera sucesiva hasta que la suma sea estrictamente menor que 10.

- Si la suma es 3, 6, 0 9 entonces el número es divisible por 3, en caso contrario no lo es.

- Por ejemplo: Para el número 124561 su suma es 1+2+4+5+6= 18. Luego se toma 18 y su suma es 1+8=9. Como es 3, 6 o 9 es divisible por 3.


PRÁCTICA 035

Publicado por Unknown en 16:14 0 comentarios
CREAR UNA FUNCIÓN QUE ELIMINE LOS DÍGITOS REPETIDOS EN UNA CIFRA CUALQUIERA



Primero se averigua cuántas veces aparece un número en una cifra y luego se usa como referencia para eliminar al número que tiene más de una repetición en la cifra

PRÁCTICA 034

Publicado por Unknown en 15:08 0 comentarios
CREAR UNA FUNCIÓN QUE ORDENE LOS DÍGITOS DE UN NÚMERO DE FORMA ASCENDENTE Y OTRA FUNCIÓN QUE HAGA LO MISMO PERO DE FORMA DESCENDENTE. DEBE DEVOLVER UN NÚMERO



Hoy después de ir a consulta hice terminé mi propia versión del ordenar, y así fue como quedó.

PRÁCTICA 033

Publicado por Unknown en 21:39 0 comentarios
Crear una función que elimine un dígito según su posición en una cifra. Por ejemplo

eliminarxposicion (2, 65782)

elimina el elemento en la segunda posición del número, el cual es el 5. Quedaría

6782



La función no es perfecta, pero funciona para propósito de prueba:

Esta función utiliza un switch, un tipo de condición que podemos usar para no caer en un bucle inadvertido. El razonamiento es el siguiente

1234 / 10 = 123,4 -> 4 * 10 ** 0 = 4
123 / 10 = 12,3 -> 3 * 10 ** 1 = 30
12 / 10 = 1,2 -> 2 * 10 ** 2 = 200
1 -> 1 * 10 ** 3 = 1000

4 + 30 + 200 + 1000 = 1234

Para omitir uno de estos números, tendriamos que utilizar los índices que son 0, 1, 2 y 3. Por ejemplo
si el índice es igual a 1, entonces se debe omitir ese número. El problema es que siempre habrá un indice 1,
pues si el número tiene 4 cifras, se necesitará siempre el indice 1. Por lo que debemos realizar un switch.

Con ese switch, podemos decirle con una condición que omita el índice 1, solamente si el switch está encendido.

switch = 1

Queremos eliminar el dígito 3 de 1234

1234 / 10 = 123,4 -> 4 * 10 ** 0 = 4 el indice es 0
123 / 10 = 12,3 -> 3 * 10 ** 1 = 30 el indice es 1
12 / 10 = 1,2 -> 2 * 10 ** 2 = 200 el indice es 2
1 -> 1 * 10 ** 3 = 1000 el indice es 3

Queremos eliminar el 3, dicho elemento se encuentra en la posición 2 del número. Sin embargo el índice es el inverso de esta posición.

0 = 3
1 = 2
2 = 1
3 = 0

por lo que lo más recomendable es invertir el número, eliminar el dígito en cuestión, y volver a invertir nuevamente dicha cifra para que nos quede finalmente el número solicitado

PRÁCTICA 032

Publicado por Unknown en 18:13 0 comentarios
Crear una función que elimine todas las apariciones de un número



PRÁCTICA 031

Publicado por Unknown en 17:48 0 comentarios
Crear una función que reconstruya un número mediante un índice y una sumatoria

PRÁCTICA 030

Publicado por Unknown en 16:44 0 comentarios
Crear una función que invierta los dígitos de una cifra



forma alternativa de hacerlo es convirtiendo el número en un string y utilizar los métodos que cuentan cuántos carácteres hay dentro de un string:



Práctica 029

Publicado por Unknown en 16:26 0 comentarios
Imprimir, sumar y contar los números, que son a la vez múltiplos de 2 y de 3, que hay entre la unidad y un determinado número



Práctica 028

Publicado por Unknown en 0:49 0 comentarios
Contar el número de dígitos de un número e invertirlo



Práctica 027

Publicado por Unknown en 23:59 0 comentarios
Crear una función que convierta de base decimal a base binario



Práctica 026

Publicado por Unknown en 22:42 0 comentarios
Imprimir y sumar los números desde el cero hasta un número determinado, excepto los múltiplos de 5. Imprimir el valor de la suma de los múltiplos de 5.