1voto
Listín telefónico funcional en Haskell
por

josejuan

hace 5 años

Debo reconocer que ha sido mas fácil de lo que pensaba. El código seguro que es mucho más verbose de lo necesario, pero por algo se empieza :) Por otro lado, lo suyo es separar el código en al menos tres archivos (estructuras, código puro, código impuro) pero aquí (en solveet) es más cómodo poner todo junto.

0votos
Booleanos y numeración en Haskell
por

josejuan

hace 5 años

Se puede establecer una biyección entre la lista de bits solicitada y el ordinal de cada bit. Para ello, basta ver que hay "n * 2^n" bits (de 0 a n*2^n-1) y que cada uno de los 2^n números contiene n bits. Así, dado el ordinal 'x', su bit estará a cero, si es cero el valor (x/n)&(1<<(n-x%n-1)). Si se quieren empaquetar, pues sólo es tomar de n en n la secuencia indicada.

0votos
Finales de Mersenne en Haskell
por

josejuan

hace 5 años

Calculo cualquier nº de dígitos de cualquier nº Mersenne. Solo hay que fijarse, que el módulo de un número, es el módulo del producto de los módulos de cualquieras factores. Y que la suma o resta del número, puede hacerse sobre el módulo. Así, podemos reducir la potencia M-ésima y luego restar uno a su módulo. Varios speedups son posibles (yo hago bipartición), memoize, etc... pero éste no es lento.