To make new generator tests, one can use this template:

```
(q ((0x0101010101010101010101010101010101010101010101010101010101010101 <puzzle> 123 <solution>)))
```

example puzzle:

```
(mod (N)
    (defun another_send (n)
        (if n
            (c (list 66 0x3f 0x1337 0x00000000000000000000000000000000) (another_send (- n 1)))
            ()
        )
    )

    (another_send N)
)
```

To compile it to CLVM:

```
run puzzle.cl
```

solution:

```
(1024)
```

The complete generator becomes:

```
(q (
(0x0101010101010101010101010101010101010101010101010101010101010101
(a (q 2 2 (c 2 (c 5 ()))) (c (q 2 (i 5 (q 4 (q 66 63 4919 0x00000000000000000000000000000000) (a 2 (c 2 (c (- 5 (q . 1)) ())))) ()) 1) 1))
123 (1024))))
```

This is an example of a generator that _generates_ the puzzles programmatically:

```
(mod (condition condition_two amount)

    (defun loop (condition condition_two amount)
        (if amount
            (c condition (c condition_two (loop condition condition_two (- amount 1))))
            ()
        )
    )

    ; main
    (list (list (list (q . 0x0101010101010101010101010101010101010101010101010101010101010101) (c 1 (loop condition condition_two amount)) 123 (list 0 (list 1)))))
)
```

Though it would need to be curried as generators are not run with solutions.

Here's another programmatic generator which generates multiple spends:

```
(mod (amount)

    (defun generate_conds (id pair_count)
        (if pair_count
            (c (list 66 36 "hello" id) (c (list 67 36 "hello" id) (generate_conds id (- pair_count 1))))
            0
        )
    )

    (defun loop_coins (id amount)
        (if amount
            (c (list id (c 1 (generate_conds id 50)) 123 (list 0 (list 1))) (loop_coins (+ id 1) (- amount 1)))
            ()
        )
    )
    ; main
    (list (loop_coins 0x0101010101010101010101010101010101010101010101010101010101010101 amount))
)
```
