@@ -750,41 +750,44 @@ pzpr.classmgr.makeCommon({
750750 // enc.decodeCircle() 白丸・黒丸をデコードする
751751 // enc.encodeCircle() 白丸・黒丸をエンコードする
752752 //---------------------------------------------------------------------------
753- genericDecodeThree : function ( set_func ) {
754- var bd = this . board ;
753+ genericDecodeTriple : function ( length , set_func ) {
755754 var bstr = this . outbstr ,
756755 c = 0 ,
757756 tri = [ 9 , 3 , 1 ] ;
758- var pos = bstr
759- ? Math . min ( ( ( bd . cols * bd . rows + 2 ) / 3 ) | 0 , bstr . length )
760- : 0 ;
757+ var pos = bstr ? Math . min ( ( ( length + 2 ) / 3 ) | 0 , bstr . length ) : 0 ;
761758 for ( var i = 0 ; i < pos ; i ++ ) {
762759 var ca = parseInt ( bstr . charAt ( i ) , 27 ) ;
763760 for ( var w = 0 ; w < 3 ; w ++ ) {
764- if ( ! ! bd . cell [ c ] ) {
765- var val = ( ( ca / tri [ w ] ) | 0 ) % 3 ;
766- if ( val > 0 ) {
767- set_func ( bd . cell [ c ] , val ) ;
768- }
769- c ++ ;
761+ var val = ( ( ca / tri [ w ] ) | 0 ) % 3 ;
762+ if ( val > 0 ) {
763+ set_func ( c , val ) ;
770764 }
765+ c ++ ;
771766 }
772767 }
773768 this . outbstr = bstr . substr ( pos ) ;
774769 } ,
770+ genericDecodeThree : function ( set_func ) {
771+ var bd = this . board ;
772+ this . genericDecodeTriple ( bd . cell . length , function ( c , val ) {
773+ var cell = bd . cell [ c ] ;
774+ if ( cell ) {
775+ set_func ( cell , val ) ;
776+ }
777+ } ) ;
778+ } ,
775779 decodeCircle : function ( ) {
776780 this . genericDecodeThree ( function ( cell , val ) {
777781 cell . qnum = val ;
778782 } ) ;
779783 } ,
780- genericEncodeThree : function ( get_func ) {
781- var bd = this . board ;
784+ genericEncodeTriple : function ( length , get_func ) {
782785 var cm = "" ,
783786 num = 0 ,
784787 pass = 0 ,
785788 tri = [ 9 , 3 , 1 ] ;
786- for ( var c = 0 ; c < bd . cell . length ; c ++ ) {
787- pass += get_func ( bd . cell [ c ] ) * tri [ num ] ;
789+ for ( var c = 0 ; c < length ; c ++ ) {
790+ pass += get_func ( c ) * tri [ num ] ;
788791 num ++ ;
789792 if ( num === 3 ) {
790793 cm += pass . toString ( 27 ) ;
@@ -798,6 +801,12 @@ pzpr.classmgr.makeCommon({
798801
799802 this . outbstr += cm ;
800803 } ,
804+ genericEncodeThree : function ( get_func ) {
805+ var bd = this . board ;
806+ this . genericEncodeTriple ( bd . cell . length , function ( c ) {
807+ return get_func ( bd . cell [ c ] ) ;
808+ } ) ;
809+ } ,
801810 encodeCircle : function ( ) {
802811 this . genericEncodeThree ( function ( cell ) {
803812 return Math . max ( 0 , cell . qnum ) ;
0 commit comments