Except that will drive away most good engineers. Most good ones I know will refuse to do "take home" problems for interview purposes. I understand them. It is demeaning.
When I get offered one, I send back a quote to solve their problem, at my standard contracting rate.
I've only ever had one dev do that and I paid it (I ended up not hiring him but because of his code, I was impressed he asked about payment!). I have no problem valuing someones time and desire to be compensated for it.
Some companies do all day interviews or at least 3-4 hrs, what is really the difference between spending the day in an office or at least few hours versus at home with your tools and setup?
Are you less offended if I give you 2 hrs of problems to whiteboard while I watch?
There is no situation in which a company can not spend at least some time evaluating your skill set. For me the best would be to hire you based off your resume and see how it goes for 90 days. However, its often unfair to the employee - especially if they have a position currently.
Hiring is a skill for both parties. some people are good at the process naturally, other people put time into being good at it, the third group has no clue and has no interest in learning.
When I get offered one, I send back a quote to solve their problem, at my standard contracting rate.