0votos

Reloj Digital en Haskell

por josejuan hace 5 años

Bueno, si se trata de "no complicarse tanto", con cuatro líneas es más que suficiente para: codificar la fuente, renderizarla, procesar cadenas e imprimir la fechora del sistema ¬¬ XD XD (sin usar ni funciones, ni libs, ni apps específicas)

Contruye un reloj digital creando los números a partir de un caracter de relleno, es decir, teniendo un array bidimensional, rellenar las posiciones necesarias para que al imprimirlo en pantalla simule la hora y fecha.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
-- Codifica la fuente a utilizar 
drawChar c = map((\n->[n.&.2^b/=0|b<-[0..4]]).(+(-32)).ord)$(' ':)$take 4$drop(4*p)s 
            where (s, p) = if c.&.16==0 then("    0,# ",c.&.1)else("?1? 2?0 =57 55? '$? 75= ?5= !!? ?5? '%?  *  ",c.&.15) 
 
-- Dibuja una cadena tal como se ha pedido (matriz NxM) 
drawString s = mapM_ putStrLn [[if xs!!n then '▒' else ' '|xs<-concatMap(drawChar.ord)s]|n<-[0..4]] 
 
-- Dibuja la hora de sistema en el formato indicado 
drawSystemTime = getCurrentTime >>= drawString . formatTime defaultTimeLocale "%H:%M %d/%m/%Y" 
 
 
 
 
 
 
{- 
 
 
 ▒▒▒  ▒▒▒       ▒▒▒  ▒▒▒       ▒▒▒  ▒▒▒    ▒  ▒▒▒  ▒ ▒    ▒  ▒▒▒  ▒▒▒   ▒   ▒ ▒ 
   ▒  ▒ ▒   ▒     ▒  ▒ ▒         ▒  ▒ ▒    ▒  ▒ ▒  ▒ ▒    ▒    ▒  ▒ ▒  ▒▒   ▒ ▒ 
 ▒▒▒  ▒ ▒       ▒▒▒  ▒ ▒       ▒▒▒  ▒ ▒   ▒   ▒ ▒  ▒▒▒   ▒   ▒▒▒  ▒ ▒   ▒   ▒▒▒ 
 ▒    ▒ ▒   ▒   ▒    ▒ ▒       ▒    ▒ ▒   ▒   ▒ ▒    ▒   ▒   ▒    ▒ ▒   ▒     ▒ 
 ▒▒▒  ▒▒▒       ▒▒▒  ▒▒▒       ▒▒▒  ▒▒▒  ▒    ▒▒▒    ▒  ▒    ▒▒▒  ▒▒▒  ▒▒▒    ▒ 
 
 
 
import System.Locale 
import Data.Time.Clock 
import Data.Char 
import Data.Bits 
import Data.Time.Format 
-} 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.