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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
|
<!--
BEGIN TTF BLOCK
(define days 5)
(define periods 7)
(define maxperday 2)
(define perday (make-vector days 0))
(define (get-day tupleid) (quotient (get-time tupleid) periods))
(define (get-period tupleid) (modulo (get-time tupleid) periods))
; Increments a value with index "i" in vector "v"
(define (vector-inc! v i)
(vector-set! v i (+ (vector-ref v i) 1))
)
; Fills vector "v" with constant value "e"
(define (vector-fill! v e)
(let ((n (vector-length v)))
(let loop ((i 0))
(if (= i n)
v
(begin (vector-set! v i e) (loop (+ i 1)))))))
; Counts how many tuples with ids between "from" and "to" are scheduled in
; each day. Results are stored in "perday" vector.
(define (tuple-collect from to)
(let loop ((i from))
(if (< i to)
(begin
(vector-inc! perday (get-day i))
(loop (+ i 1))))))
; Checks if there are less than "maxperday" tuples each day.
(define (check-days)
(let loop ((i 0) (result #t))
(if (< i days)
(loop (+ i 1) (and result
(<= (vector-ref perday i) maxperday)))
result)))
(define (check-tuples start stop)
(vector-fill! perday 0)
(tuple-collect start stop)
(check-days))
(test-ttf
(check-tuples 0 4)
(check-tuples 5 14)
(check-tuples 15 21))
END TTF BLOCK
-->
<ttm version="0.2.0">
<modules>
<module name="sametime" weight="60" mandatory="yes"/>
<module name="timeplace" weight="60" mandatory="yes"/>
<module name="maxperday" weight="60" mandatory="yes">
<option name="resourcetype">teacher</option>
<option name="maxperday">2</option>
</module>
<module name="maxperday" weight="60" mandatory="yes">
<option name="resourcetype">class</option>
<option name="maxperday">4</option>
</module>
</modules>
<resources>
<constant>
<resourcetype type="teacher">
<resource name="a"/>
<resource name="b"/>
<resource name="c"/>
</resourcetype>
<resourcetype type="class">
<resource name="1"/>
<resource name="2"/>
</resourcetype>
</constant>
<variable>
<resourcetype type="room">
<linear name="#" from="1" to="40"/>
</resourcetype>
<resourcetype type="time">
<matrix width="5" height="7"/>
</resourcetype>
</variable>
</resources>
<events>
<!-- tuples from 0 to 4 -->
<event name="test-1-a" repeats="5">
<resource type="teacher" name="a"/>
<resource type="class" name="1"/>
</event>
<!-- tuples from 5 to 14 -->
<event name="test-1-b" repeats="5">
<resource type="teacher" name="b"/>
<resource type="class" name="1"/>
</event>
<event name="test-1-b" repeats="5">
<resource type="teacher" name="b"/>
<resource type="class" name="2"/>
</event>
<!-- tuples from 15 to 21 -->
<event name="test-1-c" repeats="7">
<resource type="teacher" name="c"/>
<resource type="class" name="1"/>
</event>
</events>
</ttm>
|