from simple puzzle by Sajin A
simle puzzle using 4 numbers

fun(varargin)
function varargout = fun(varargin)
% FUN M-file for fun.fig
%      FUN, by itself, creates a new FUN or raises the existing
%      singleton*.

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @fun_OpeningFcn, ...
                   'gui_OutputFcn',  @fun_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before fun is made visible.
function fun_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% Choose default command line output for fun
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes fun wait for user response (see UIRESUME)

% --- Outputs from this function are returned to the command line.
function varargout = fun_OutputFcn(hObject, eventdata, handles) 
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
 
varargout{1} = handles.output;
tic;
% --- Executes on selection change in popup_1_1.
function popup_1_1_Callback(hObject, eventdata, handles)
out = add_pop_val(handles.popup_1_1, handles.popup_1_2, handles.popup_1_3,...
                  handles.popup_1_4);
set(handles.out7,'String',out);
set(handles.out8,'String',out);

out = add_pop_val(handles.popup_1_1, handles.popup_2_2, handles.popup_3_3,...
                  handles.popup_4_4);
set(handles.out1,'String',out);
set(handles.out20,'String',out);

out = add_pop_val(handles.popup_1_1, handles.popup_2_1, handles.popup_3_1,...
                 handles.popup_4_1);
set(handles.out2,'String',out);
set(handles.out16,'String',out);
check_box(hObject, eventdata, handles);

% --- Executes on selection change in popup_1_2.
function popup_1_2_Callback(hObject, eventdata, handles)
out = add_pop_val(handles.popup_1_1, handles.popup_1_2, handles.popup_1_3,...
                  handles.popup_1_4);
set(handles.out7,'String',out);
set(handles.out8,'String',out);

out = add_pop_val(handles.popup_1_2, handles.popup_2_2, handles.popup_3_2,...
                  handles.popup_4_2);
set(handles.out3,'String',out);
set(handles.out17,'String',out);
check_box(hObject, eventdata, handles);

% --- Executes on selection change in popup_1_3.
function popup_1_3_Callback(hObject, eventdata, handles)
out = add_pop_val(handles.popup_1_1, handles.popup_1_2, handles.popup_1_3,...
                  handles.popup_1_4);
set(handles.out7,'String',out);
set(handles.out8,'String',out);

out = add_pop_val(handles.popup_1_3, handles.popup_2_3, handles.popup_3_3,...
                  handles.popup_4_3);
set(handles.out4,'String',out);
set(handles.out18,'String',out);
check_box(hObject, eventdata, handles);

% --- Executes on selection change in popup_1_4.
function popup_1_4_Callback(hObject, eventdata, handles)
out = add_pop_val(handles.popup_1_1, handles.popup_1_2, handles.popup_1_3,...
                  handles.popup_1_4);
set(handles.out7,'String',out);
set(handles.out8,'String',out);

out = add_pop_val(handles.popup_1_4, handles.popup_2_4, handles.popup_3_4,...
                  handles.popup_4_4);
set(handles.out5,'String',out);
set(handles.out19,'String',out);

out = add_pop_val(handles.popup_1_4, handles.popup_2_3, handles.popup_3_2,...
                  handles.popup_4_1);
set(handles.out6,'String',out);
set(handles.out15,'String',out);
check_box(hObject, eventdata, handles);

% --- Executes on selection change in popup_2_1.
function popup_2_1_Callback(hObject, eventdata, handles)
out = add_pop_val(handles.popup_2_1, handles.popup_2_2, handles.popup_2_3,...
                  handles.popup_2_4);
set(handles.out9,'String',out);
set(handles.out10,'String',out);

out = add_pop_val(handles.popup_1_1, handles.popup_2_1, handles.popup_3_1,...
                  handles.popup_4_1);
set(handles.out2,'String',out);
set(handles.out16,'String',out);
check_box(hObject, eventdata, handles);

% --- Executes on selection change in popup_2_2.
function popup_2_2_Callback(hObject, eventdata, handles)
out = add_pop_val(handles.popup_2_1, handles.popup_2_2, handles.popup_2_3,...
                  handles.popup_2_4);
set(handles.out9,'String',out);
set(handles.out10,'String',out);

out = add_pop_val(handles.popup_1_2, handles.popup_2_2, handles.popup_3_2,...
                  handles.popup_4_2);
set(handles.out3,'String',out);
set(handles.out17,'String',out);

out = add_pop_val(handles.popup_1_1, handles.popup_2_2, handles.popup_3_3,...
                  handles.popup_4_4);
set(handles.out1,'String',out);
set(handles.out20,'String',out);
check_box(hObject, eventdata, handles);

% --- Executes on selection change in popup_2_3.
function popup_2_3_Callback(hObject, eventdata, handles)
out = add_pop_val(handles.popup_2_1, handles.popup_2_2, handles.popup_2_3,...
                  handles.popup_2_4);
set(handles.out9,'String',out);
set(handles.out10,'String',out);

out = add_pop_val(handles.popup_1_3, handles.popup_2_3, handles.popup_3_3,...
                  handles.popup_4_3);
set(handles.out4,'String',out);
set(handles.out18,'String',out);

out = add_pop_val(handles.popup_1_4, handles.popup_2_3, handles.popup_3_2,...
                  handles.popup_4_1);
set(handles.out6,'String',out);
set(handles.out15,'String',out);
check_box(hObject, eventdata, handles);

% --- Executes on selection change in popup_2_4.
function popup_2_4_Callback(hObject, eventdata, handles)

out = add_pop_val(handles.popup_2_1, handles.popup_2_2, handles.popup_2_3,...
                  handles.popup_2_4);
set(handles.out9,'String',out);
set(handles.out10,'String',out);

out = add_pop_val(handles.popup_1_4, handles.popup_2_4, handles.popup_3_4,...
                  handles.popup_4_4);
set(handles.out5,'String',out);
set(handles.out19,'String',out);
check_box(hObject, eventdata, handles);

% --- Executes on selection change in popup_3_1.
function popup_3_1_Callback(hObject, eventdata, handles)

out = add_pop_val(handles.popup_3_1, handles.popup_3_2, handles.popup_3_3,...
                  handles.popup_3_4);
set(handles.out11,'String',out);
set(handles.out12,'String',out);

out = add_pop_val(handles.popup_1_1, handles.popup_2_1, handles.popup_3_1,...
                  handles.popup_4_1);
set(handles.out2,'String',out);
set(handles.out16,'String',out);
check_box(hObject, eventdata, handles);

% --- Executes on selection change in popup_3_2.
function popup_3_2_Callback(hObject, eventdata, handles)

out = add_pop_val(handles.popup_3_1, handles.popup_3_2, handles.popup_3_3,...
                  handles.popup_3_4);
set(handles.out11,'String',out);
set(handles.out12,'String',out);

out = add_pop_val(handles.popup_1_2, handles.popup_2_2, handles.popup_3_2,...
                  handles.popup_4_2);
set(handles.out3,'String',out);
set(handles.out17,'String',out);

out = add_pop_val(handles.popup_1_4, handles.popup_2_3, handles.popup_3_2,...
                  handles.popup_4_1);
set(handles.out6,'String',out);
set(handles.out15,'String',out);
check_box(hObject, eventdata, handles);

% --- Executes on selection change in popup_3_3.
function popup_3_3_Callback(hObject, eventdata, handles)

out = add_pop_val(handles.popup_3_1, handles.popup_3_2, handles.popup_3_3,...
                  handles.popup_3_4);
set(handles.out11,'String',out);
set(handles.out12,'String',out);

out = add_pop_val(handles.popup_1_3, handles.popup_2_3, handles.popup_3_3,...
                  handles.popup_4_3);
set(handles.out4,'String',out);
set(handles.out18,'String',out);

out = add_pop_val(handles.popup_1_1, handles.popup_2_2, handles.popup_3_3,...
                  handles.popup_4_4);
set(handles.out1,'String',out);
set(handles.out20,'String',out);
check_box(hObject, eventdata, handles);

% --- Executes on selection change in popup_3_4.
function popup_3_4_Callback(hObject, eventdata, handles)
out = add_pop_val(handles.popup_3_1, handles.popup_3_2, handles.popup_3_3,...
                  handles.popup_3_4);
set(handles.out11,'String',out);
set(handles.out12,'String',out);

out = add_pop_val(handles.popup_1_4, handles.popup_2_4, handles.popup_3_4,...
                  handles.popup_4_4);
set(handles.out5,'String',out);
set(handles.out19,'String',out);
check_box(hObject, eventdata, handles);

% --- Executes on selection change in popup_4_1.
function popup_4_1_Callback(hObject, eventdata, handles)
out = add_pop_val(handles.popup_4_1, handles.popup_4_2, handles.popup_4_3,...
                  handles.popup_4_4);
set(handles.out13,'String',out);
set(handles.out14,'String',out);

out = add_pop_val(handles.popup_1_1, handles.popup_2_1, handles.popup_3_1,...
                  handles.popup_4_1);
set(handles.out2,'String',out);
set(handles.out16,'String',out);

out = add_pop_val(handles.popup_1_4, handles.popup_2_3, handles.popup_3_2,...
                  handles.popup_4_1);
set(handles.out6,'String',out);
set(handles.out15,'String',out);
check_box(hObject, eventdata, handles);

% --- Executes on selection change in popup_4_2.
function popup_4_2_Callback(hObject, eventdata, handles)
out = add_pop_val(handles.popup_4_1, handles.popup_4_2, handles.popup_4_3,...
                  handles.popup_4_4);
set(handles.out13,'String',out);
set(handles.out14,'String',out);

out = add_pop_val(handles.popup_1_2, handles.popup_2_2, handles.popup_3_2,...
                  handles.popup_4_2);
set(handles.out3,'String',out);
set(handles.out17,'String',out);
check_box(hObject, eventdata, handles);

% --- Executes on selection change in popup_4_3.
function popup_4_3_Callback(hObject, eventdata, handles)
out = add_pop_val(handles.popup_4_1, handles.popup_4_2, handles.popup_4_3,...
                  handles.popup_4_4);
set(handles.out13,'String',out);
set(handles.out14,'String',out);

out = add_pop_val(handles.popup_1_3, handles.popup_2_3, handles.popup_3_3,...
                  handles.popup_4_3);
set(handles.out4,'String',out);
set(handles.out18,'String',out);
check_box(hObject, eventdata, handles);

% --- Executes on selection change in popup_4_4.
function popup_4_4_Callback(hObject, eventdata, handles)
out = add_pop_val(handles.popup_4_1, handles.popup_4_2, handles.popup_4_3,...
                  handles.popup_4_4);
set(handles.out13,'String',out);
set(handles.out14,'String',out);

out = add_pop_val(handles.popup_1_4, handles.popup_2_4, handles.popup_3_4,...
                  handles.popup_4_4);
set(handles.out5,'String',out);
set(handles.out19,'String',out);

out = add_pop_val(handles.popup_1_1, handles.popup_2_2, handles.popup_3_3,...
                  handles.popup_4_4);
set(handles.out1,'String',out);
set(handles.out20,'String',out);
check_box(hObject, eventdata, handles);

function pop_val = get_pop_val(popup_x)
switch (get(popup_x,'value'))
    case 1
        pop_val = 3;
    case 2
        pop_val = 7;
    case 3
        pop_val = 15;
    case 4
        pop_val = 31;
end;
return;

function pop_add = add_pop_val(pop1 ,pop2 ,pop3 ,pop4)
temp = 0;
temp = temp + get_pop_val(pop1);
temp = temp + get_pop_val(pop2);
temp = temp + get_pop_val(pop3);
temp = temp + get_pop_val(pop4);
pop_add = temp;
return;

function box_val = get_box_val(box_no)
box_val = str2double(get(box_no,'String'));
return;

function check_box(hObject, eventdata, handles)
out = [handles.out1 handles.out2 handles.out3 handles.out4 handles.out5...
       handles.out6 handles.out7 handles.out8 handles.out9 handles.out10...
       handles.out11 handles.out12 handles.out13 handles.out14 handles.out15...
       handles.out16 handles.out17 handles.out18 handles.out19 handles.out20]; 
temp = zeros(1,20); 
test = 0;
for i = 1:20
    temp(i) = get_box_val(out(i));
end;
test = find(temp == 56);
if(length(test) == 20)
    t = toc;
    text = sprintf('Congratulations , You won! \n Time taken is %2.f Sec',t);
    msgbox(text);
    tic;
end;   

Contact us at files@mathworks.com