Retrieve all possible marks that can be placed in a Sudoku puzzle
C (gcc), 193 bytes

#define F(x)for(x=0;x&lt;9;++x)
char s[99];main(k,r,c){gets(s);F(r)F(c){
int d[99]={};F(k)d[s[r*9+k]]=d[s[k*9+c]]=d[s[r/3*27+k/3*9+c/3*3+k%3]]=1;
F(k)s[r*9+c]&lt;48&amp;&amp;!d[49+k]&amp;&amp;putchar(49+k);puts("");}}


Assumes input in the following format (same sudoku as above):

..74.8..34....17...2..3...9.4.5....7.....64.1.3.7......7..5...63....52....91.7..


And outputs in the following format:

5
1569
1569


1269

3569
23569


5689
etc