BEGLSV
ACFHNX
MORUYZ
DIKPTW
clearvars
words=['open';
'gaud'
'iamb'
'defy'
'owns'
'paul'
'xyst'
'rice'
'tern'
'daze'
'bund'
'hops'
'feud'
'avow'
'cuke'
'shut'];
avail='abcdefghiklmnoprstuvwxyz';
cubes={{'o'} {'p'} {'e'} {'n'}};
for i=1:4
l=cubes{i}{1};
canhave=avail;
for j=1:length(words)
if contains(words(j,:),l)
for k=1:4
canhave=setdiff(canhave,words(j,:));
end
end
end
disp(l)
eval([l 'set0=''' canhave ''''] )
disp(canhave)
end
eset=eset0;
idx=combinator(length(eset),5,'c');
esets5=eset(idx);
for i=1:length(esets5)
eset5=esets5(i,:);
nset=setdiff(nset0,eset5);
idx=combinator(length(nset),5,'c');
nsets5=nset(idx);
for j=1:size(nsets5,1)
nset5=nsets5(j,:);
oset=setdiff(oset0,[eset5 nset5]);
idx=combinator(length(oset),5,'c');
osets5=oset(idx);
for k=1:size(osets5,1)
oset5=osets5(k,:);
pset=setdiff(pset0,[eset5 nset5 oset5]);
pset5=pset;
if length(pset5)==5
g=[eset5 'e';nset5 'n';oset5 'o';pset5 'p'];
good=true;
for ii=1:length(words)
word=words(ii,:);
rows=[];
for jj=1:4
[f ~]=find(g==word(jj));
if isempty(f)
break
end
if ismember(f,rows)
good=false;
break
end
rows(end+1)=f;
end
if ~good
break
end
end
if good
disp(sort(g,2))
disp(' ')
end
end
end
end
end
|