JSFiddle - React, Tailwind, and code Playground

by jrab227

JavaScript

function mergeArr(arr){

    var str = ''
    
    for (position in arr){
        str = str.concat(arr[position])   
    }
    
    return str
    
}

function vec_rotate(vector, angle){
 
    return [(Math.cos(angle)*vector[0]) - (Math.sin(angle)*vector[1]) ,
                (Math.sin(angle)*vector[0]) + (Math.cos(angle)*vector[1])]
    
}

function turtleMapper(axiom, start_level, rules, draw){
    
    var inner_rec = function(level, program){
        
        if (level == 0) {
            
            return program
            
        } else {
            
            var copy =[];
            
            for(var position=0; position < program.length; position++) {
                
                var word = program.slice(position, position+1)
                
                if (rules[word]) {
                    copy.push(rules[word])
                }
                
            }
            
            return inner_rec(level-1, mergeArr(copy))
            
        }
    }
        
        
    var finished_program = inner_rec(start_level, axiom)
    
    var position_state = {
        direction: [0,0],
        position: [0,0]
    }
    
    var positions = [[0,0]]
    
    for(var move = 0; move<2; move++){
        
        console.log(finished_program[move])
        position_state = step(finished_program[move], position_state)
        
        positions.push(position_state.position)
    }
    
    return positions
    
}
                        
function step(symbol,position_state){
    
    var new_position, new_direction
    
    if (symbol == "A" || symbol == "B"){
        
        var normalizing_factor = Math.sqrt(position_state.direction[0] + position_state.direction[1])
        
        var step = position_state.direction.map(function(dim){ return dim*normalizing_factor})
        
        new_position = [step[0]+position_state.position[0], 
                        step[1]+position_state.position[1]]
        new_direction =...