2011-04-20 12:00:00 UTC

# rubbish 2.9.2

by nathan q

Status: Passed
Results: 8264970 (cyc: 7, node: 354)
CPU Time: 30.547
Score: 20662.7
Submitted at: 2011-04-15 06:42:03 UTC
Scored at: 2011-04-15 06:44:49 UTC

Current Rank: 1455th (Highest: 109th )
Based on: rubbish 2.9.1 (diff)

Code
```function best_board = rubbish(words, weights, n, penalty)

best_score = -1;

w = [0 0.01*ones(1,5) 0.03*ones(1,5) 0.1*ones(1,5)];

sz = size(weights);

for i=1:numel(w)
r = ones(sz) + w(i)*rand(sz);
[board,score] = solver1(words, r.*weights, n, penalty);
if score>best_score
best_score = score;
best_board = board;
end
end

return

function [board,score] = solver1(words, weights, n, penalty)

% Sample solver

% Copyright 2011 The MathWorks, Inc.

if penalty==0
incr=1;
else
incr=2;
end

board = zeros(n);

nw = numel(words);
imax = zeros(1,n); % maxj(i) is the max depth to which column i is filled
lw = zeros(nw,1);
word_free = true(nw,1);

for j =1:nw;
lw(j) = length(words{j});
end

[weights,isort] = sort(weights./(lw'+1),'descend');
words = words(isort);
lw = lw(isort);

j =1;  % column in which to place next word
k = 1; % word to work on

n_placed= 0;
score = 0;

while n_placed<=nw && j<=n

if imax(j) == 0
i_start = 1;
else
i_start = imax(j)+2 ;
end

% most valuable word that will fit:

k = find(lw <= n-i_start+1 &  word_free, 1,  'first' );
i_end = i_start + lw(k)-1;

if k
board(i_start:i_end,j)=words{k};
imax(j) = i_end;
word_free(k) = false;
n_placed = n_placed + 1;
score = score + weights(k);
else
j=j+incr;
end

end

return

function board = gridx(words,weights,n,penalty,lw,nw)

wordsmat = cell2mat(words');

k =1;

while k<=nw
wordk = words{k}';
j=1;
while j<=n
% words
end
end

return
```