The game [Tiny Tower](http://itunes.apple.com/au/app/tiny-tower/id422667065?mt=8) has various 'Bitizens' which are skilled 0-9 in different attributes:

```
Michael:  
 a) retail: 9
 b) creative: 2
 c) service: 7
 d) recreational: 4
 e) food: 6

```

And it then has business in which three Bitizens can work at. Each business falls into one of the categories retail, creative, service, recreational and food. There is never any match between the amount of businesses or Bitizens, but to make things easier we could assume the number of positions matches the number of bitizens.

For example, there might be a Hat Shop which is a retail business, so Bitizens with high `retail` values are favourable. In the above example, Micheal is highly suited to be in a retail business.

How can I, algorithmically, fill the positions with the most relevantly-skilled Bitizens? I tried to have a go at the problem but I had trouble wrapping my head around in a way that would actually solve the problem effectively.