I just went through a process like this as a candidate. I was emailed a problem description and told, "Please send us the code that solves this problem. Do so at your leisure, and please don't spend more than x hours on it." This meant I got to use my own setup, and didn't feel as though I was required to come up with the "perfect" solution.
When you think about it, it's odd that most programmers aren't interviewed this way. As a firm, the most important question I want answered is "Can the candidate do the job?" There are obviously other important considerations, but that's numero uno. And the best way to tell whether the candidate can do the job is to ask them for a small sample to prove it.
I'm 100% certain I've been passed over for positions at other places because the hiring process isn't generally designed to answer that question accurately. It's something I want to keep in mind for when I'm on the other side of the table.