2016-04-13 14 views
0

maltab dizisinde yer değiştirmiyor, bu benim en son ... Orijinal 2 yönünü doğru yönde değiştirmek istiyorum & aynı anda yeni bir sayı 2 görünür 3x3 matrisorijinal numara neden önceki kodlamadan,

m=zeros(3); m(randi(numel(m)))=2 

ans = orijinal 2 beklenen rastgele cevap arasındaydı

0 0 0 
0 0 0 
2 0 0 

sonra yön çekme

case 'right' 
    %number= find(m); 

    if (m>=7); 
    circshift(m,[0 0]); 
     m_subset = setdiff(find(m),numel(m)); 

     m(randi(numel(m))) = 2 
     count=0; 
    elseif (m>=4) | (m<=6); 

     circshift(m,[0 1]); 
     m_subset = setdiff(find(m),numel(m)); 

     m(randi(numel(m))) = 2 

    elseif (m<4);  

     circshift(m,[0 2]); 
     m_subset = setdiff(find(m),numel(m)) ; 

     m(randi(numel(m))) = 2 

    else 
     msgbox('next'); 
    end 

beklenen cevap orijinal sayı 2 doğru yönde & rastgele 2 görünür gitmek

0 0 0 
0 2 0 
0 0 2 

olduğunu. ancak yukarıdaki kodlama, orijinal sayı değişikliği yönünü değiştirmedi.

cevap

1

circshift numaralı telefonu aradığınızda, bu, m girişini yerinde değiştirmez. numaralı telefonu arayarak numaralı telefona numaralı numaralı telefonu yeniden atamanız gerekir. senin Koşullamalar için

Ayrıca
m = circshift(m, [0, 2]); 

sen number değil m karşılaştırarak edilmelidir. Bunun yerine, sütunu bulmak için find'un ikinci çıktısını kullanırım ve bunu kullanırdım.

[r,c] = find(m); 

%// If column 1 
if c == 1 
    %// do thing 
elseif c == 2 
    %// do other thing 
else 
    %// do yet another thing. 
end 
+0

wow .. Bunu tamamen unutuyorum .. teşekkürler! – user6196619