Just saw a facebook advertisemet with the title "Love to Code?" and couldn't resist the temptation to click on it. It ended up being a door to facebook recruitement process and I decided to spend some minutes to try to get more information on how their process is.
After clicking the ad you are redirected to a very interesting tool from an external company called InterviewStreet who asked me to solve a simple programming problem in less than an hour in any programming language.
The problem was a slightly modified version of the game of life problem where the pieces at the boundaries never change and I decided to solve it in python. I was slightly disappointed because I was really expecting something more difficult (Tuenti contest problems are more difficult for example).
I was able to finish it in the 1h timeframe but didn't pay too much attention to write a great code so they won't probably call me :-) Find my code below in case somebody wants to improve it.
#Enter your code here. Read input from STDIN. Print output to STDOUT
#For more details, please check http://www.interviewstreet.com/recruit/challenges/faq/view#stdio
def solve(board, size):
result = [list(row) for row in board]
pos = [(-1, -1),(-1, 0),(-1, 1),(0, -1),(0, 0),(0, 1),(1, -1),(1, 0),(1, 1)]
for y in range(1, size-1):
for x in range(1, size-1):
blacks = whites = 0
for dx,dy in pos:
if 0 <= y+dy < size and 0 <= x+dx < size:
if board[y+dy][x+dx] == 'b':
blacks += 1
else:
whites += 1
result[y][x] = ('b' if blacks > whites else 'w')
return [''.join(row) for row in result]
tests = raw_input()
for test in range(int(tests)):
#read input
size, iters = raw_input().split(' ')
board = [''] * int(size)
for i in range(int(size)):
board[i] = raw_input()
#calculate
for i in range(int(iters)):
board = solve(board, int(size))
#write result
print "Board %d" % (test+1)
for row in board:
print row