bem, com Megasena acumulada, houve um auê em torno de bolão lá no
trabalho.  É o tal negócio:  se alguns colegas entrarem e se tornarem
milionários, você vai continuar pobre e ainda por cima vai ter o
trabalho acumulado do serviço deixado por eles!  Então, você também
entra! :D

Assim sendo, fiz meu próprio analisador tabajara para resultados de
loterias.  Dá pro gasto...

em ypsilon o código abaixo roda em cerca de 0.029s e compilado por
chicken em 0.005s



; analisador tabajara de resultados de loteria, em Scheme
; namekuseijin at gmail_com set/2010
; digamos que usa a Licença Artística de Perl...
;(import (rnrs)) ; se não vai usar Scheme R6RS, comente esse import

; rotina principal, única com side-effects
(define (processa sorteio apostas)
   (mostra "Para o sorteio " sorteio ":")
   ; mostra o resultado da analise do sorteio para as apostas
   (for-each (lambda (par)
               (let ((aposta (ponta par))
                     (acertos (resto par)))
                 (if (not (vazio? acertos)) ; se acertou alguma, mostra
                    (mostra " a aposta " aposta " teve os acertos: " acertos))))
     (analise sorteio apostas '())))

; se desfazendo de reliquias do lisp
(define ponta car)
(define resto cdr)
(define empilha cons)
; aportuguesado por capricho
(define vazio? null?)
; util
(define (mostra . args) (for-each display args)(newline))

(define (analise sorteio apostas r)
  (let* ((px (proximas 6 apostas '()))
         (apostas (ponta px))
         (aposta  (resto px))
         (acertos (acertos aposta sorteio '())))
    (if (vazio? apostas) (reverse r)
       (analise sorteio apostas (empilha (empilha aposta acertos) r)))))

(define (proximas n apostas aposta)
        (if (zero? n)
                (empilha apostas (reverse aposta)) ; retorna apostas restantes 
tmb
                (proximas (- n 1) (resto apostas) (empilha (ponta apostas) 
aposta))))

(define (acertos aposta sorteio r)
        (cond ((or (vazio? sorteio) (vazio? aposta)) (reverse r))
                  ((< (ponta sorteio) (ponta aposta))
                        (acertos aposta (resto sorteio) r))
                  ((> (ponta sorteio) (ponta aposta))
                        (acertos (resto aposta) sorteio r))
                  ((= (ponta sorteio) (ponta aposta))
                        (acertos (resto aposta) (resto sorteio)
                (empilha (ponta aposta) r)))))

; exemplo de uso
(processa
; os argumentos para a chamada acima
; último resultado obtido da Loteria Federal
  '( 04 07 13 25 27 58)
; originalmente, uma listagem texto com nossas apostas, uma por linha
  '( 01 02 04 36 37 45
 01 02 05 28 38 50
 01 04 15 16 28 57
 01 04 18 32 43 59
 01 05 08 42 50 55
 01 07 08 15 37 49
 01 08 14 16 28 52
 01 09 16 39 45 52
 01 10 15 22 29 48
 01 16 27 47 49 51
 01 17 22 30 47 57
 01 17 32 37 55 56
 01 28 35 47 53 60
 02 03 05 18 32 34
 02 03 43 46 47 58
 02 04 05 14 17 33
 02 04 05 23 28 46
 02 04 11 25 37 52
 02 05 17 28 43 55
 02 05 22 24 36 51
 02 05 32 46 50 59
 02 07 08 27 30 42
 02 11 44 45 53 60
 02 12 24 45 55 57
 02 13 18 20 33 37
 02 17 19 31 37 55
 02 21 26 28 30 57
 02 21 35 37 38 42
 02 23 27 32 39 55
 02 23 31 32 38 46
 02 27 30 39 45 53
 02 29 34 38 53 60
 03 04 14 28 49 54
 03 08 09 30 44 55
 03 09 16 20 39 59
 03 09 27 34 36 40
 03 10 16 32 46 57
 03 12 13 19 34 44
 03 12 30 32 55 58
 03 14 22 29 41 56
 03 14 22 41 47 56
 03 14 40 46 47 60
 03 16 27 28 30 54
 03 19 30 39 49 56
 03 23 30 32 39 46
 03 30 41 43 51 58
 04 05 08 09 39 55
 04 05 19 30 48 53
 04 06 20 23 32 33
 04 07 18 26 36 57
 04 08 11 12 22 41
 04 09 10 23 44 53
 04 10 11 21 27 49
 04 10 15 26 34 36
 04 10 15 26 58 59
 04 11 13 17 36 38
 04 11 14 19 26 53
 04 13 20 24 37 56
 04 14 17 23 58 60
 04 15 32 37 45 53
 04 19 20 21 33 39
 04 19 22 28 47 54
 04 19 24 31 33 41
 04 20 38 48 49 60
 04 21 32 40 54 55
 04 22 24 25 36 42
 04 23 24 27 35 52
 04 23 28 43 47 54
 04 25 28 30 36 47
 05 06 15 16 50 52
 05 07 11 13 24 53
 05 08 17 28 41 43
 05 09 12 19 34 45
 05 11 12 17 22 42
 05 11 28 33 50 52
 05 13 25 31 36 37
 05 17 27 28 35 36
 05 17 28 35 46 51
 05 28 30 32 40 44
 06 07 08 18 48 53
 06 07 10 26 48 49
 06 07 33 35 36 46
 06 09 11 17 28 40
 06 09 12 29 50 55
 06 10 23 45 58 59
 06 10 26 32 49 50
 06 15 19 23 28 57
 06 15 29 33 34 56
 06 18 24 27 34 47
 06 23 30 32 43 59
 07 10 17 26 39 41
 07 11 18 41 49 56
 07 12 20 27 29 31
 07 12 37 38 54 57
 07 15 19 28 38 41
 07 15 23 33 48 52
 07 18 23 27 43 44
 07 18 31 42 54 60
 07 19 20 47 48 59
 07 27 28 32 46 49
 08 10 12 26 34 57
 08 13 32 37 43 52
 08 24 31 33 54 55
 09 10 18 26 30 32
 09 12 16 18 40 47
 09 17 20 23 29 46
 09 18 28 29 33 35
 09 21 26 29 48 59
 09 29 35 45 54 60
 10 11 32 40 47 48
 10 12 27 32 42 45
 10 13 22 30 43 56
 10 15 22 23 25 54
 10 18 30 36 40 47
 10 20 25 26 29 33
 10 23 30 45 54 58
 10 26 32 38 40 43
 10 32 39 48 51 58
 11 13 19 20 34 44
 11 13 28 34 57 58
 11 14 36 40 41 54
 11 15 19 33 36 60
 11 16 20 26 28 51
 11 19 22 38 41 50
 11 21 22 24 47 58
 11 31 40 42 51 56
 12 14 17 30 31 55
 12 15 16 27 38 51
 12 17 22 29 51 59
 12 17 26 38 40 48
 12 17 27 28 37 59
 12 17 32 46 50 52
 12 19 22 30 42 47
 13 15 33 39 44 53
 13 17 18 26 44 53
 13 19 24 34 40 43
 13 20 28 29 41 44
 13 22 24 29 32 40
 13 26 28 52 58 60
 13 35 36 41 45 52
 14 16 17 23 41 45
 14 17 30 44 50 58
 14 31 42 46 49 51
 15 16 18 21 28 39
 15 17 27 28 53 60
 15 20 25 36 41 56
 15 23 36 39 51 53
 15 25 37 38 48 53
 16 19 21 24 26 47
 16 20 25 36 40 43
 16 21 30 39 44 60
 16 29 33 34 44 52
 17 19 26 36 50 56
 17 21 26 37 51 58
 17 21 28 45 48 58
 17 27 42 43 51 54
 17 28 32 39 44 49
 18 20 31 53 57 60
 18 22 34 41 44 57
 19 20 22 27 36 49
 19 30 37 45 52 55
 20 23 33 34 41 43
 20 38 39 41 43 48
 21 22 28 41 43 51
 21 24 37 38 41 56
 22 28 30 38 49 50
 22 29 31 34 46 55
 24 28 31 33 37 53
 24 33 35 36 40 43
 25 27 28 29 35 40
 25 28 29 36 41 50
 25 35 36 43 49 53
 27 28 29 35 45 46
 27 28 29 45 49 60
 27 30 31 37 52 60))

-- 
You received this message because you are subscribed to the Google Groups 
"Lisp-br" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/lisp-br?hl=en.

Responder a