;; experiment with all gauche regex facilities (let ((match (#/mag-(\w+)-(\d+)/ "mag-ac-02"))) (print (match)) (print (match 1)) (print (match 2))) (rxmatch-let (#/mag-(\w+)-(\d+)/ "mag-ac-02") (all alpha numeric) (print all) (print alpha) (print numeric)) (print ((#/mag-(\w+)-(\d+)/ "mag-ac-02"))) (print ((#/mag-(\w+)-(\d+)/ "mag-ac-02") 0)) (print ((#/mag-(\w+)-(\d+)/ "mag-ac-02") 1)) (print ((#/mag-(\w+)-(\d+)/ "mag-ac-02") 2)) ;; problem 1: ;; file naming scheme: mag-AA-NN.png, where A in [a-z], N in [0-9] ;; starting with a list of filenames, group by alphabetic part, then ;; output in alphanumeric order, both by alphabetic and numeric part. ;; e.g. ;; mag-aa-01 ;; mag-aa-02 ;; mag-ab-01 ;; mag-ac-02 ;; mag-ac-01 ;; yields: ;; ((mag-aa-01 mag-aa-02) (mag-ab-01) (mag-ac-01 mag-ac-02)) (define filenames '("mag-ab-01.png" "mag-aa-02.png" "mag-ac-02.png" "mag-ac-01.png" "mag-aa-01.png")) (define (decompose-filename name) (rxmatch-let (#/mag-(\w+)-(\d+)\.png/ name) (#f part1 part2) (list part1 part2))) (define (sort-procedure a b) (if (string=? (car a) (car b)) (string