flash on 2012-5-19

by TmskSt
♥0 | Line 23 | Modified 2012-05-19 01:52:42 | MIT License
play

ActionScript3 source code

/**
 * Copyright TmskSt ( http://wonderfl.net/user/TmskSt )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/bbfN
 */

package {
    import com.actionscriptbible.Example;
    public class TwoPointCrossover extends Example {
        
        // 2点交叉
        // 自信はない
        
        public function TwoPointCrossover() {
            crossover(parseInt("10101010", 2), parseInt("11111111", 2), 3, 5);
        }
        
        private function crossover(n:/*Genotype*/uint, m:/*Genotype*/uint, sAd:uint, eAd:uint):void {
            //if (g1.size != g2.size) return;
            
            trace("n:" + n.toString(2), "m:" + m.toString(2));
            
            var k:uint = 0, p:uint = 0, i:int = 0;
            const size:uint = 8, L:int = size - sAd, R:int = size - eAd;
            
            k = Math.pow(2, R) - 1, p = Math.pow(2, L - R) - 1;
            
            var na:uint = n >> L, nb:uint = n & k, nx:uint = n >> R & p;
            var ma:uint = m >> L, mb:uint = m & k, mx:uint = m >> R & p;
            var c:uint = (na << L - R | mx) << R | nb, c2:uint = (ma << L - R | nx) << R | mb;
            
            trace("k:" + k.toString(2), "p:" + p.toString(2));
            trace(na.toString(2), nx.toString(2), nb.toString(2));
            trace(ma.toString(2), mx.toString(2), mb.toString(2));
            trace("c:" + c.toString(2), "c2:" + c2.toString(2));
        }
    }
}