Re: [LA-discussions] coder en scheme

[ Thread Index | Date Index | More linuxarverne.org/discussions Archives ]


Salut,

J'ai fini par y arriver, après bien des errements...

ma liste :

(define cte
 '(
  ( (4 0 0) . (5 1 2) )
  ( (6 0 0) . (6 1 2) )
  ( (0 1 0) . (5 1 3) )
  ( (1 1 0) . (6 1 3) )
  ( (2 1 0) . (5 1 4) )
  ( (3 1 0) . (6 1 4) )
  ( (4 1 0) . (5 1 5) )
  ( (5 1 0) . (6 1 5) )
  ( (0 2 0) . (5 1 6) )
  ( (6 1 0) . (6 1 6) )
  ( (2 2 0) . (5 1 7) )
  ( (1 2 0) . (6 1 7) )
  ( (4 2 0) . (5 1 8) )
  ( (3 2 0) . (6 1 8) )
  ( (0 3 0) . (5 1 9) )
  ( (5 2 0) . (6 1 9) )
  ( (2 3 0) . (5 1 10) )
  ( (6 2 0) . (6 1 10) )
  ( (0 0 0) . (5 2 3) )
  ( (2 0 0) . (6 2 3) )
  ( (3 0 0) . (5 2 4) )
  ( (4 0 0) . (6 2 4) )
  ( (5 0 0) . (5 2 5) )
  ( (6 0 -1/2) . (6 2 5) )
  ( (0 1 0) . (5 2 6) )
  ( (1 1 0) . (6 2 6) )
  ( (3 1 0) . (5 2 7) )
  ( (2 1 0) . (6 2 7) )
  ( (5 1 0) . (5 2 8) )
  ( (4 1 0) . (6 2 8) )
  ( (0 1 0) . (5 2 9) )
  ( (6 2 -1/2) . (6 2 9) )
  ( (3 2 0) . (5 2 10) )
  ( (1 2 0) . (6 2 10) )
  ( (5 2 0) . (5 2 11) )
  ( (2 2 0) . (6 2 11) )
 )
)

avec les significations suivantes:
( ( note-name note-oct note-alt) . ( btn-dir btn-row btn-num ) )

je connais :
(define kbd cte) ; cette valeur peut changer, j'ai une 12aine de dicos 
différents
(define note-name 6)
(define note-oct 2)
(define note-alt 0)

je commence par filtrer sur ( note-name note-oct note-alt)

(define av-btn (filter (lambda (ref) 
	(and 
		(equal? (caar ref) note-name) 
		(equal? (cadr (car ref)) note-oct)  
		(equal? (caddr (car ref)) note-alt)
	)) kbd ))

ensuite j'ai deux cas de figure, je connais note-dir ou note-row et je veux 
btn-dir btn-row btn-num (sauf celui que je connais bien entendu)

1er cas :

(define note-dir 6)
(define btn-row (caddar (filter (lambda (inf) (= (cadr inf) note-dir)) av-
btn )))
(define btn-num (car (cdddar (filter (lambda (inf) (= (cadr inf) note-dir)) 
av-btn))))
btn-row
btn-num

2e cas :

(define note-row 1)
(define btn-dir (cadar (filter (lambda (inf) (= (caddr inf) note-row)) av-
btn)))
(define btn-num (car (cdddar (filter (lambda (inf) (= (caddr inf) note-row)) 
av-btn))))
btn-dir
btn-num

testé dans le bac à sable de lilypond (guile) et tout fonctionne.

par contre je te dis pas comment j'en ai chié pour découvrir les syntaxes, 
les docs sont vraiment sommaires...

-- 
Cordialement, Daniel Cartron
« S'il n'y a que la vérité qui blesse, à quoi sert le mensonge ?. »
Robert Sabatier - Le livre de la déraison souriante


--
Liste de discussions de LinuxArverne
http://wiki.linuxarverne.org/listes_de_diffusion


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/