796 BoardArr2d.prototype.left = BoardArr2d.prototype.shiftLeft_mostly_unrolled; |
796 BoardArr2d.prototype.left = BoardArr2d.prototype.shiftLeft_mostly_unrolled; |
797 BoardArr2d.prototype.right = BoardArr2d.prototype.shiftRight_mostly_unrolled; |
797 BoardArr2d.prototype.right = BoardArr2d.prototype.shiftRight_mostly_unrolled; |
798 BoardArr2d.prototype.up = BoardArr2d.prototype.shiftUp_mostly_unrolled; |
798 BoardArr2d.prototype.up = BoardArr2d.prototype.shiftUp_mostly_unrolled; |
799 BoardArr2d.prototype.down = BoardArr2d.prototype.shiftDown_mostly_unrolled; |
799 BoardArr2d.prototype.down = BoardArr2d.prototype.shiftDown_mostly_unrolled; |
800 |
800 |
|
801 /** Array of which values will be merged. */ |
|
802 BoardObj.prototype.rightMerges = function() { |
|
803 var merges = []; |
|
804 var brd = this.brd; |
|
805 for (var i = 0; i < 3; i++) { |
|
806 var f0 = brd[i][0], f1 = brd[i][1], f2 = brd[i][2], f3 = brd[i][3]; |
|
807 if (f2 === f3) { |
|
808 if (f2 === 0) { |
|
809 if (f0 === f1 && f0 !== 0) { |
|
810 merges.push(f0); |
|
811 } |
|
812 } else { |
|
813 merges.push(f2); |
|
814 } |
|
815 } else if (f1 === f2) { |
|
816 if (f1 !== 0) { |
|
817 merges.push(f1); |
|
818 } |
|
819 } else if (f0 === f1 && f0 !== 0) { |
|
820 merges.push(f0); |
|
821 } |
|
822 } |
|
823 return merges; |
|
824 } |
|
825 /** Array of which values will be merged. */ |
|
826 BoardObj.prototype.downMerges = function() { |
|
827 var merges = []; |
|
828 var brd = this.brd; |
|
829 for (var j = 0; j < 3; j++) { |
|
830 var f0 = brd[0][j], f1 = brd[1][j], f2 = brd[2][j], f3 = brd[3][j]; |
|
831 if (f2 === f3) { |
|
832 if (f2 === 0) { |
|
833 if (f0 === f1 && f0 !== 0) { |
|
834 merges.push(f0); |
|
835 } |
|
836 } else { |
|
837 merges.push(f2); |
|
838 } |
|
839 } else if (f1 === f2) { |
|
840 if (f1 !== 0) { |
|
841 merges.push(f1); |
|
842 } |
|
843 } else if (f0 === f1 && f0 !== 0) { |
|
844 merges.push(f0); |
|
845 } |
|
846 } |
|
847 return merges; |
|
848 } |
|
849 /** Array of which values will be merged. */ |
|
850 BoardObj.prototype.leftMerges = function() { |
|
851 var merges = []; |
|
852 var brd = this.brd; |
|
853 for (var i = 0; i < 3; i++) { |
|
854 var f0 = brd[i][0], f1 = brd[i][1], f2 = brd[i][2], f3 = brd[i][3]; |
|
855 if (f1 === f0) { |
|
856 if (f1 === 0) { |
|
857 if (f3 === f2 && f3 !== 0) { |
|
858 merges.push(f3); |
|
859 } |
|
860 } else { |
|
861 merges.push(f1); |
|
862 } |
|
863 } else if (f2 === f1) { |
|
864 if (f2 !== 0) { |
|
865 merges.push(f2); |
|
866 } |
|
867 } else if (f3 === f2 && f3 !== 0) { |
|
868 merges.push(f3); |
|
869 } |
|
870 } |
|
871 return merges; |
|
872 } |
|
873 /** Array of which values will be merged. */ |
|
874 BoardObj.prototype.upMerges = function() { |
|
875 var merges = []; |
|
876 var brd = this.brd; |
|
877 for (var j = 0; j < 3; j++) { |
|
878 var f0 = brd[0][j], f1 = brd[1][j], f2 = brd[2][j], f3 = brd[3][j]; |
|
879 if (f1 === f0) { |
|
880 if (f1 === 0) { |
|
881 if (f3 === f2 && f3 !== 0) { |
|
882 merges.push(f3); |
|
883 } |
|
884 } else { |
|
885 merges.push(f1); |
|
886 } |
|
887 } else if (f2 === f1) { |
|
888 if (f2 !== 0) { |
|
889 merges.push(f2); |
|
890 } |
|
891 } else if (f3 === f2 && f3 !== 0) { |
|
892 merges.push(f3); |
|
893 } |
|
894 } |
|
895 return merges; |
|
896 } |
|
897 |
801 |
898 |
802 |
899 |
803 //////////////////////////////////////////////////////////////// |
900 //////////////////////////////////////////////////////////////// |
804 /** Create board as properties of object. |
901 /** Create board as properties of object. |
805 * Extract data from 'brd' if present. |
902 * Extract data from 'brd' if present. |
2573 } |
2670 } |
2574 } |
2671 } |
2575 } |
2672 } |
2576 return updated; |
2673 return updated; |
2577 } |
2674 } |
|
2675 |
|
2676 /** Array of which values will be merged. */ |
|
2677 BoardObj.prototype.rightMerges = function() { |
|
2678 var merges = []; |
|
2679 var brd = this.brd; |
|
2680 var f0 = brd.aa, f1 = brd.ab, f2 = brd.ac, f3 = brd.ad; |
|
2681 if (f2 === f3) { |
|
2682 if (f2 === 0) { |
|
2683 if (f0 === f1 && f0 !== 0) { |
|
2684 merges.push(f0); |
|
2685 } |
|
2686 } else { |
|
2687 merges.push(f2); |
|
2688 } |
|
2689 } else if (f1 === f2) { |
|
2690 if (f1 !== 0) { |
|
2691 merges.push(f1); |
|
2692 } |
|
2693 } else if (f0 === f1 && f0 !== 0) { |
|
2694 merges.push(f0); |
|
2695 } |
|
2696 var f0 = brd.ba, f1 = brd.bb, f2 = brd.bc, f3 = brd.bd; |
|
2697 if (f2 === f3) { |
|
2698 if (f2 === 0) { |
|
2699 if (f0 === f1 && f0 !== 0) { |
|
2700 merges.push(f0); |
|
2701 } |
|
2702 } else { |
|
2703 merges.push(f2); |
|
2704 } |
|
2705 } else if (f1 === f2) { |
|
2706 if (f1 !== 0) { |
|
2707 merges.push(f1); |
|
2708 } |
|
2709 } else if (f0 === f1 && f0 !== 0) { |
|
2710 merges.push(f0); |
|
2711 } |
|
2712 var f0 = brd.ca, f1 = brd.cb, f2 = brd.cc, f3 = brd.cd; |
|
2713 if (f2 === f3) { |
|
2714 if (f2 === 0) { |
|
2715 if (f0 === f1 && f0 !== 0) { |
|
2716 merges.push(f0); |
|
2717 } |
|
2718 } else { |
|
2719 merges.push(f2); |
|
2720 } |
|
2721 } else if (f1 === f2) { |
|
2722 if (f1 !== 0) { |
|
2723 merges.push(f1); |
|
2724 } |
|
2725 } else if (f0 === f1 && f0 !== 0) { |
|
2726 merges.push(f0); |
|
2727 } |
|
2728 var f0 = brd.da, f1 = brd.db, f2 = brd.dc, f3 = brd.dd; |
|
2729 if (f2 === f3) { |
|
2730 if (f2 === 0) { |
|
2731 if (f0 === f1 && f0 !== 0) { |
|
2732 merges.push(f0); |
|
2733 } |
|
2734 } else { |
|
2735 merges.push(f2); |
|
2736 } |
|
2737 } else if (f1 === f2) { |
|
2738 if (f1 !== 0) { |
|
2739 merges.push(f1); |
|
2740 } |
|
2741 } else if (f0 === f1 && f0 !== 0) { |
|
2742 merges.push(f0); |
|
2743 } |
|
2744 return merges; |
|
2745 } |
|
2746 /** Array of which values will be merged. */ |
|
2747 BoardObj.prototype.downMerges = function() { |
|
2748 var merges = []; |
|
2749 var brd = this.brd; |
|
2750 var f0 = brd.aa, f1 = brd.ba, f2 = brd.ca, f3 = brd.da; |
|
2751 if (f2 === f3) { |
|
2752 if (f2 === 0) { |
|
2753 if (f0 === f1 && f0 !== 0) { |
|
2754 merges.push(f0); |
|
2755 } |
|
2756 } else { |
|
2757 merges.push(f2); |
|
2758 } |
|
2759 } else if (f1 === f2) { |
|
2760 if (f1 !== 0) { |
|
2761 merges.push(f1); |
|
2762 } |
|
2763 } else if (f0 === f1 && f0 !== 0) { |
|
2764 merges.push(f0); |
|
2765 } |
|
2766 var f0 = brd.ab, f1 = brd.bb, f2 = brd.cb, f3 = brd.db; |
|
2767 if (f2 === f3) { |
|
2768 if (f2 === 0) { |
|
2769 if (f0 === f1 && f0 !== 0) { |
|
2770 merges.push(f0); |
|
2771 } |
|
2772 } else { |
|
2773 merges.push(f2); |
|
2774 } |
|
2775 } else if (f1 === f2) { |
|
2776 if (f1 !== 0) { |
|
2777 merges.push(f1); |
|
2778 } |
|
2779 } else if (f0 === f1 && f0 !== 0) { |
|
2780 merges.push(f0); |
|
2781 } |
|
2782 var f0 = brd.ac, f1 = brd.bc, f2 = brd.cc, f3 = brd.dc; |
|
2783 if (f2 === f3) { |
|
2784 if (f2 === 0) { |
|
2785 if (f0 === f1 && f0 !== 0) { |
|
2786 merges.push(f0); |
|
2787 } |
|
2788 } else { |
|
2789 merges.push(f2); |
|
2790 } |
|
2791 } else if (f1 === f2) { |
|
2792 if (f1 !== 0) { |
|
2793 merges.push(f1); |
|
2794 } |
|
2795 } else if (f0 === f1 && f0 !== 0) { |
|
2796 merges.push(f0); |
|
2797 } |
|
2798 var f0 = brd.ad, f1 = brd.bd, f2 = brd.cd, f3 = brd.dd; |
|
2799 if (f2 === f3) { |
|
2800 if (f2 === 0) { |
|
2801 if (f0 === f1 && f0 !== 0) { |
|
2802 merges.push(f0); |
|
2803 } |
|
2804 } else { |
|
2805 merges.push(f2); |
|
2806 } |
|
2807 } else if (f1 === f2) { |
|
2808 if (f1 !== 0) { |
|
2809 merges.push(f1); |
|
2810 } |
|
2811 } else if (f0 === f1 && f0 !== 0) { |
|
2812 merges.push(f0); |
|
2813 } |
|
2814 return merges; |
|
2815 } |
|
2816 /** Array of which values will be merged. */ |
|
2817 BoardObj.prototype.leftMerges = function() { |
|
2818 var merges = []; |
|
2819 var brd = this.brd; |
|
2820 var f0 = brd.aa, f1 = brd.ab, f2 = brd.ac, f3 = brd.ad; |
|
2821 if (f1 === f0) { |
|
2822 if (f1 === 0) { |
|
2823 if (f3 === f2 && f3 !== 0) { |
|
2824 merges.push(f3); |
|
2825 } |
|
2826 } else { |
|
2827 merges.push(f1); |
|
2828 } |
|
2829 } else if (f2 === f1) { |
|
2830 if (f2 !== 0) { |
|
2831 merges.push(f2); |
|
2832 } |
|
2833 } else if (f3 === f2 && f3 !== 0) { |
|
2834 merges.push(f3); |
|
2835 } |
|
2836 var f0 = brd.ba, f1 = brd.bb, f2 = brd.bc, f3 = brd.bd; |
|
2837 if (f1 === f0) { |
|
2838 if (f1 === 0) { |
|
2839 if (f3 === f2 && f3 !== 0) { |
|
2840 merges.push(f3); |
|
2841 } |
|
2842 } else { |
|
2843 merges.push(f1); |
|
2844 } |
|
2845 } else if (f2 === f1) { |
|
2846 if (f2 !== 0) { |
|
2847 merges.push(f2); |
|
2848 } |
|
2849 } else if (f3 === f2 && f3 !== 0) { |
|
2850 merges.push(f3); |
|
2851 } |
|
2852 var f0 = brd.ca, f1 = brd.cb, f2 = brd.cc, f3 = brd.cd; |
|
2853 if (f1 === f0) { |
|
2854 if (f1 === 0) { |
|
2855 if (f3 === f2 && f3 !== 0) { |
|
2856 merges.push(f3); |
|
2857 } |
|
2858 } else { |
|
2859 merges.push(f1); |
|
2860 } |
|
2861 } else if (f2 === f1) { |
|
2862 if (f2 !== 0) { |
|
2863 merges.push(f2); |
|
2864 } |
|
2865 } else if (f3 === f2 && f3 !== 0) { |
|
2866 merges.push(f3); |
|
2867 } |
|
2868 var f0 = brd.da, f1 = brd.db, f2 = brd.dc, f3 = brd.dd; |
|
2869 if (f1 === f0) { |
|
2870 if (f1 === 0) { |
|
2871 if (f3 === f2 && f3 !== 0) { |
|
2872 merges.push(f3); |
|
2873 } |
|
2874 } else { |
|
2875 merges.push(f1); |
|
2876 } |
|
2877 } else if (f2 === f1) { |
|
2878 if (f2 !== 0) { |
|
2879 merges.push(f2); |
|
2880 } |
|
2881 } else if (f3 === f2 && f3 !== 0) { |
|
2882 merges.push(f3); |
|
2883 } |
|
2884 return merges; |
|
2885 } |
|
2886 /** Array of which values will be merged. */ |
|
2887 BoardObj.prototype.upMerges = function() { |
|
2888 var merges = []; |
|
2889 var brd = this.brd; |
|
2890 var f0 = brd.aa, f1 = brd.ba, f2 = brd.ca, f3 = brd.da; |
|
2891 if (f1 === f0) { |
|
2892 if (f1 === 0) { |
|
2893 if (f3 === f2 && f3 !== 0) { |
|
2894 merges.push(f3); |
|
2895 } |
|
2896 } else { |
|
2897 merges.push(f1); |
|
2898 } |
|
2899 } else if (f2 === f1) { |
|
2900 if (f2 !== 0) { |
|
2901 merges.push(f2); |
|
2902 } |
|
2903 } else if (f3 === f2 && f3 !== 0) { |
|
2904 merges.push(f3); |
|
2905 } |
|
2906 var f0 = brd.ab, f1 = brd.bb, f2 = brd.cb, f3 = brd.db; |
|
2907 if (f1 === f0) { |
|
2908 if (f1 === 0) { |
|
2909 if (f3 === f2 && f3 !== 0) { |
|
2910 merges.push(f3); |
|
2911 } |
|
2912 } else { |
|
2913 merges.push(f1); |
|
2914 } |
|
2915 } else if (f2 === f1) { |
|
2916 if (f2 !== 0) { |
|
2917 merges.push(f2); |
|
2918 } |
|
2919 } else if (f3 === f2 && f3 !== 0) { |
|
2920 merges.push(f3); |
|
2921 } |
|
2922 var f0 = brd.ac, f1 = brd.bc, f2 = brd.cc, f3 = brd.dc; |
|
2923 if (f1 === f0) { |
|
2924 if (f1 === 0) { |
|
2925 if (f3 === f2 && f3 !== 0) { |
|
2926 merges.push(f3); |
|
2927 } |
|
2928 } else { |
|
2929 merges.push(f1); |
|
2930 } |
|
2931 } else if (f2 === f1) { |
|
2932 if (f2 !== 0) { |
|
2933 merges.push(f2); |
|
2934 } |
|
2935 } else if (f3 === f2 && f3 !== 0) { |
|
2936 merges.push(f3); |
|
2937 } |
|
2938 var f0 = brd.ad, f1 = brd.bd, f2 = brd.cd, f3 = brd.dd; |
|
2939 if (f1 === f0) { |
|
2940 if (f1 === 0) { |
|
2941 if (f3 === f2 && f3 !== 0) { |
|
2942 merges.push(f3); |
|
2943 } |
|
2944 } else { |
|
2945 merges.push(f1); |
|
2946 } |
|
2947 } else if (f2 === f1) { |
|
2948 if (f2 !== 0) { |
|
2949 merges.push(f2); |
|
2950 } |
|
2951 } else if (f3 === f2 && f3 !== 0) { |
|
2952 merges.push(f3); |
|
2953 } |
|
2954 return merges; |
|
2955 } |