Hace 8 años | Por enrii.bc a elladodelmal.com
Publicado hace 8 años por enrii.bc a elladodelmal.com

La selección de las becas Talentum para Zaragoza. Allí he entrevistado ya a más de 30 personas, la mayoría Ingenieros Informáticos e Ingenieros de Telecomunicaciones, y algunos me dijeron una frase que me llama mucho la atención: "Si hay que picar código, pues se pica". No, no, no. Yo no quiero que piquéis código. Quiero que os sintáis como yo me sentía cuando veía a Los Programadores en TRON, siendo dioses capaces de crear vuestra propia tecnología. Programar no es un castigo. ¡Ni mucho menos! Es un don.

Comentarios

h

#!/usr/bin/env python3
import math
print(math.factorial(100))

enrii.bc

#15 en Python si . el articulo habla de Fortran.

h

program fact100
print *, "93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000"
end program fact100

#16

enrii.bc

#18 que hablas?no seria mejor que comentaras una vez leido el articulo para así tener una opinion mas fundada?? es un truco que te doy de gratis

h

#20 pensaba que era el experto en fortran de meneame, lo siento.

enrii.bc

#22 si . sabes mas que Chema alonso 8 veces MvP de Microsoft y uno de los mejores Hackers del mundo.si.

h

#23 Seguramente exista alguna rama o tecnologia informatica en la cual yo, 0 veces MvP de Microsoft, sepa mas que Chema Alonso.

enrii.bc

#24 seguramente. como BI o Redes ..pero es que el articulo habla de programacion de la vieja escuela.

Ramanutha

#25 Si Redes es lo que yo pienso, seguro que no, pero en algún lenguaje de programación me parece muy probable.

beco

a=1;for(i=100;1

Robus

Podría haber buscado un ejemplo que necesistase "picar código" más de 10 segundos...

Aquí le dejo el factorial de 100... o de el número que usted quiera:

funcion factorial (p)
si p > 1
factorial = p * factorial (p-1)
sino
factorial = 1
fsi
ffuncion

#4 con un for es muy vulgar... mejor una función recursiva!

dreierfahrer

#6 Dame tu floooooooow

Que le hago un overflooooooow

Eso, necesitas mas que la operacion en si... Un numero de 100 cifras no te cabe en un double...

enrii.bc

#8 hay mucho listillo que se ha visto un par de Videos de youtube de "Aprende a programar desssde sero amigosss" y se cree que sabe algo. me encanta como dice lo de funcion recursiva en plan sonando rinbombante..miradme, miradme cuanto se..ee eee miradme

enrii.bc

#6 nos os habeis leido el articulo eee pillines... en Fortran necesitas usar TAD . y hay que programar de verdad.

voidcarlos

#4 El resultado de eso es: a = 1.

enrii.bc

#7 for 1 < 0 ??

A

#4 No declaras ni el tipo de a ni el tipo de i: Error de compilación y además como dice #7 con esa condición de parada 1

D

#14 ya puestos, no pone includes ni main ni nada.

y

#19 eso es para newbies cuando sólo quieres poner snippets

zhensydow

#4

let a = product [2..100]

Y si nos queremos poner estupendos:

let a = foldl1' (*) [2..100]


Por cierto, tu código tiene varios errores. Es lo que tiene no poder probarlo interactivamente.

ikipol

Emmm ninguno de los programas que ponéis calcula realmente el factorial. Probadlo

Calcular el factorial de 100 necesita saber mucha programación y mucho conocimiento de resultados matemáticos.

enrii.bc

#13 el articulo lo ha escrito chema Alonso Mvp de Microsoft.. no es precisamente alguien que no sabe programar. realmente el lo explica.el porque se desborda etc etc

D

#13 a= fact(x);

Que el becario se encargue del resto.

dreierfahrer

Creo que lo que busca no se aprende en Teleco ni en Informatica...

Se lleva en la sangre

luiggi

#32 Según la calculadora de Google hasta ese paso 100*99*98*97 (ya me dio pereza seguirle) la solución funciona ...

No pude evitar entrarle al reto. De hecho creí que me iba a costar más o que a esta solución que se me ocurrió en primer lugar fallaría.

Así o de otra manera, esto es a fin de cuentas lo que pedían en esa práctica. Si Python ya incorpora el uso de variables/objetos numéricos extragrandes (que no lo se) no creo que el maestro te aprobara poniendo código en Python salvo que sea un cachondo mental y le haga gracia la solución.

Y efectivamente en 5 lineas de código no se logra. Además tengo la sensación de que el autor del blog creo una solución más global y no se limitó a obtener el resultado concreto pedido, sino que ha debido crear un objeto capaz de representar un número entero extragrande y hacer operaciones básicas con él ...

enrii.bc

#34 1) efectivamente phyton se soluciona en 3 lineas de codigo porque tiene ya ge te que en paquetes ha implementado tu solucion pasandola a string etc etc
2) la practica obligaba a usar Fortran
3) la moraleja del envio no es la practica sino el desprecio con el que se trata a programar por parte de mis propios compañeros informaticos llamandolo despectivamente "picar codigo"
saludos

luiggi

#35 Programar tiene una parte de arte y otra de juegos mentales

Lo peor es cuando no eres capaz de avanzar, no por no ser capaz de dar con el logaritmo adecuado, sino porque no encuentras la información adecuada sobre algo específico del lenguaje/entorno que estas usando.

Picar código lo llamo cuando haces la parte repetitiva, lo bueno es que esa parte, en general, se hace rápido con copiar, pegar y modificación mínima.

D

#35 Es la puta ignorancia introducida por el mundo empresarial y de los proyectos informáticos. Ignorancia porque se obvia la historia de la Informática en mayúsculas, en la que programar es un ejercicio de abstracción, ingenio y adaptabilidad a los recursos de la máquina. El mundo empresarial sólo se interesa por costes y plazos, no por los resultados, y por lo tanto un experto en algorítmica no aporta nada, cuando se puede contratar a alguien que conoce la sintaxis pero no las tripas de lo que está programando. El resultado son miles de programas mal hechos que provocan pérdidas económicas por mal rendimiento, errores, etc. Pero como el proyecto ya está terminado, el problema lo tiene el cliente, los administradores de sistemas, y otro pobre desarrollador que hará el mantenimiento. La historia que llevo viendo N años.

ikipol

El factorial de 100 no se resuelve, se calcula

luiggi

mmmm....

Imaginemos que usamos enteros con un rango de solo 10.000
Podemos hacer una matriz dinámica de enteros ....

enteroenorme[x]

almacenamos el 100 en la enteroenorme[0] y lo multiplicamos por 99

enteroenorme[0] = 9900

Ahora tomamos sus dos ultimos digitos y los almacenamos en
enteroenorme[0] = 99
enteroenorme[1] = 00

ahora multiplicamos por 98

primero enteroenorme[1] (en este caso queda igual)

enteroenorme[0]=99*98=9702

volvemos a separar sus valores:

enteroenorme[0] = 97
enteroenorme[1] = 02
enteroenorme[2] = 00

Y otra vez ... multiplicamos por 97
enteroenorme[2] =00 (sigue quedando igual)
enteroenorme[1] =194 ... lo que hacemos es pasar ese 1 a enteroenorme[0] (despues de multiplicarlo) y dejar enteroenorme[1] = 94
enteroenorme[0] = 97 *97 +1 = 9410, que volvemos a dividir:

enteroenorme[0] = 94
enteroenorme[1] = 10
enteroenorme[2] = 94
enteroenorme[2] = 00


Y así hasta factorizar un numero de cualquier longitud

¿algún empresario que quiera darme un puesto de trabajo bien remunerado?

enrii.bc

#30 la solucion tiene buena pinta ..no se si exactamente esta bien..pero eso no se programa en 5 min ..ni con las soluciones "while/for" que decia la gente

K_os

print 100*99*98*97*96.... Soy programador

enrii.bc

malditos corbatas.

p

Yo escribí en su momento un modulito para enteros con el único límite del tamaño del heap pero no tengo ni idea de qué carajo es un TAD. ¿Tanto cuesta poner las ~¬#@~ palabras enteras? ¡Que solo son una veintena de letras!

dreierfahrer

#28 tipo abstracto de dato...

Heaps, sets, mapas, fifos, lifos y todo eso....

p

#29 Muy agradecido
🍺

D

Soy ingeniero en informática, y no tengo ni idea de lo que es el factorial de 100

D

#10 ¿Como aprobaste todas las asignaturas de cálculo de primero?

¿No te suena ni lejanamente "100!"?

D

#38 ¿Como aprobaste todas las asignaturas de cálculo de primero? Ni idea.

¿No te suena ni lejanamente "100!"? No...