[Push] Random code generation
    PerPlex Ed 
    edperplex at yahoo.com
       
    Sun Jun 20 09:00:33 EDT 2010
    
    
  
Function RANDOM-CODE-WITH-SIZE (input: POINTS)
  If POINTS is 1 then choose a random element of the instruction
     set. If this is an ephemeral random constant then return a
     randomly-chosen value of the appropriate type; otherwise
     return the chosen element.
  ...
From this description I understand that the set of all possible
elements to be returned is
<all possible kinds of ephemeral random constants> + <all instructions> + <all defined instructions>
"<all defined instructions>" is not actually contained in that description 
but it's mentioned few lines above, if I recall correctly.
Since the number of instruction is 2 order of magnitude bigger than
then number of all possible kinds of ephemeral random constants (which is
the number of activated "value types"), I get code that will fail in most
of the cases because the instructions have no inputs on the stack.
So this can't be the correct procedure. How do I have to read that?
The following lisp source code seems to confirm my impression
(defun random-code-with-size (points)
  "Returns a random expression containing the given number of points."
  (if (< points 2)
    (expand-erc (random-element 
                 (append *ephemeral-random-constant-generators* 
                         *active-push-instructions*
                         (mapcar #'first *defined-instructions*))))
    (let ((elements-this-level
           (shuffle (decompose (- points 1) (- points 1)))))
          (mapcar #'random-code-with-size elements-this-level))))
Is it really the better choice? Did you do so because otherwise it would
add some bias in the kind of code generated?
Thanks!
      
    
    
More information about the Push
mailing list