
ITA Software's Hiring Puzzles - ehsanul
http://www.itasoftware.com/careers/hiringpuzzles.html?catid=114
======
r00k
I've tackled one of ITA's puzzles (word rectangle, I think I found a 7x7 in
60-ish seconds). I got through a phone screen and interview, but was
ultimately turned down for 'lack of experience.'

If you're trying to get hired at ITA by solving one of these puzzles, here's
something to keep in mind: the point of solving a puzzle is to GET A PHONE
SCREEN. That's all. Many of these puzzles have no 'perfect solution.' I'd be
surprised if any of them do. Instead, they're a proving-ground for your coding
chops. So write tests, write comments, and make the code as clear as you can.
Provide your best solution, but remember: the point is to write something good
enough that they'll pick up the phone and CALL YOU. I spent much too long on
my solution before I realized it was already good enough to clear this bar.

If you do get an interview, plan for a full day. You'll get another problem of
this nature (though much simpler) at the end of the day, plus the usual salvo
of whiteboard coding exercises.

~~~
rman666
I've been working on the word rectangle problem, too. Care to share your '7x7
in 60-ish seconds' solution? Or at least some hints on how you approached the
problem? I'd be much obliged, as they say.

~~~
gradschool
I agree that tries are good. There is also an 8x8 solution if you wait long
enough. Strangely there don't seem to be any non-square solutions up to the
sizes I was able to check, so you might as well search only for squares, which
speeds it up a lot. I'm not sure if I should post a solution but I'm happy to
email it to you.

------
kaddar
I was about to graduate graduate school, I had finals, final papers, and
interviews. I had 2 companies which had hiring puzzles, and interviewed at 5
companies. I was really interested in ITA, unfortunately I couldn't schedule
in the time to work on the hiring puzzle within the 2 week window this
occurred.

I sort of imagine that these puzzles have an outlier effect: it removes the
top and bottom users from a selection pool. Maybe that's okay, personally I
was a bit disappointed at the missed opportunity.

One way they could improve this is by giving the puzzles expiration dates,
removing the fear of completing one far ahead of the interview process, and
having it expire. You'll still miss out on those who haven't heard of ITA
until the near-graduation career fairs, but it will at least improve the
situation.

~~~
sokoloff
Why do you think this would have adverse selection against the top of the
pool? I can clearly see how it would act a barrier to application for the
bottom candidates (a good thing for the company), and I can see how it would
reduce the number of applicants who are applying "everywhere they can think
of" (also probably good for the company in terms of getting a more qualified
[in the sales-conversion-rate sense] base of applicants).

In my experience, the very top of the applicant pools aren't applying to a
particularly large number of places.

~~~
kaddar
Although the top tier candidates may not be applying at many places, they are
receiving many more first, second, or even third interviews. Thus, their
timing is tight in a two week window near the end of school when they start
receiving offers. Near-Bottom-tier candidates may receive less interviews and
are incentivized to perform more desperate acts in order to receive
interviews, and thus have more time for puzzle-based applications.

But as I said, it's not too big of a deal, if they would only post ahead of
time how long puzzles would be active, so one could complete them before this
tightly-timed period.

------
chime
Yesterday someone mentioned the Sling Blade Runner problem from their archives
and I can't stop thinking about it.

* [http://www.itasoftware.com/careers/puzzle_archive.html?catid...](http://www.itasoftware.com/careers/puzzle_archive.html?catid=39#Sling%20Blade%20Runner)

* [http://stuffthathappens.com/blog/2007/10/03/sling-blade-runn...](http://stuffthathappens.com/blog/2007/10/03/sling-blade-runner/)

I'm in the middle of writing a web-based anagram server and there's some
similarities in both these problems. You have a dictionary that you iterate
through recursively to find a solution. For anagram, the solution is usually
found with 3-5 recursions (100 word list, 3 recursions: 100^3 calculations -
not a big deal for desktop software, too slow for web-app). For Sling Blade
Runner, your goal is to keep increasing the depth of the recursion as much as
possible so it's actually impossible to go through 100^200 calculations.

Does anyone have any idea if these problems could be better tackled by
converting them to map-reduce problems? I'd like to play with Amazon's
mapreduce service.

Edit: Neat. I came across: [http://blog.xebia.com/2009/07/02/thinking-
mapreduce-with-had...](http://blog.xebia.com/2009/07/02/thinking-mapreduce-
with-hadoop/)

~~~
jules
What do you mean by anagram solver? Find anagrams for a given word? Isn't that
trivial by indexing words by the sorted version of the word? E.g. {"aep" ->
["ape", "pea"], ...}

~~~
chime
I'm trying to built a better multi-word anagram solver. If you input a 32
character string, you'll end up with hundreds of thousands of potential
anagrams and most of them are pretty useless. For example, "Florence
Nightingale" returns 52k results on:

[http://wordsmith.org/anagram/anagram.cgi?anagram=Florence+Ni...](http://wordsmith.org/anagram/anagram.cgi?anagram=Florence+Nightingale&t=100&a=n)

And most of them are pretty lame e.g. "A Fleecer Tingling Hon", "A Fleecer
Longing Hint" etc. It'll take hours before you come across "Flit on, cheering
angel" - I want to make this process faster/easier.

~~~
pwk
It's a fun project! I built one several years ago, after playing around with a
bunch of different approaches. I wound up with a human-guided tool that seems
to work pretty well for coming up with interesting ones:

<http://anagramlogic.com/>

------
bartwe
Dunno if they are good for hiring, but some look fun to try for a little
hobbying.

------
roundsquare
I'm curious, how useful to people think these kinds of puzzles are in hiring?

~~~
mfr
To use a recent movie quote: "If you can dodge a wrench, you can dodge a
ball."

ITA's business is all about dealing with fiendishly clever transforms on
small-ish sets of data, and the results are needed Right Now. Most of the
hiring puzzles revolve around that theme.

Much like any other company giving these kinds of problems, it's not about
bringing out that cleverness every day, but it's about figuring out who has
the ability to think in that way, along with the persistence to work on the
problem until it's done.

~~~
wallflower
Classic ITA paper that shows you the complex problems they deal with:

[http://www.demarcken.org/carl/papers/ITA-software-travel-
com...](http://www.demarcken.org/carl/papers/ITA-software-travel-
complexity/ITA-software-travel-complexity.pdf)

------
mukyu
Years ago when I was still in high school I somehow stumbled upon these and
tried a few out (the one with the one time pad and the movie titles). I
certainly was not ready to tackle them at the time, but even when failing I
learned a lot. Years later I ran into a paper on finding the shortest path in
a directed graph with negative cycles and it reminded me of all of my attempts
to do the same.

It is a shame they don't have a post-mortem after they retire the problems. I
really enjoyed reading the break down of one of them (
[http://conway.rutgers.edu/~ccshan/wiki/blog/posts/WordNumber...](http://conway.rutgers.edu/~ccshan/wiki/blog/posts/WordNumbers1/)
) even though I did not attempt it.

------
eru
I like " Decrypting the Two-Time Pad (hard!)"
([http://www.itasoftware.com/careers/puzzle_archive.html?catid...](http://www.itasoftware.com/careers/puzzle_archive.html?catid=39#Decrypting)
the Two-Time Pad)

------
pge
In the past, ITA seemed to be focused on Lisp. I hadn't looked at the puzzles
in a number of years, but the newer ones seem focused on Java. Anyone know if
that signals a change at ITA? A move from Lisp to Java? Perhaps more customer-
facing code?

In any case, their puzzles are always good for a brain workout.

~~~
strlen
ITA still uses Common Lisp. There are excellent blog entries on this matter by
Dan Weinreb: <[http://danweinreb.org/blog/category/ita-
software>](http://danweinreb.org/blog/category/ita-software>). However, they
don't require Common Lisp knowledge from new hires. The beauty of Common Lisp
is that there really is very little syntax to learn. Afaik, the simply use the
excellent Practical Common Lisp book by Peter Seibel as a "training manual".

The problem with Common Lisp, unfortunately, is there's no standard and cross-
implementation way to create an application that makes heavy use of network
I/O, multi-processing/multi-threading and the file system.

That's would not be a problem _internally_ at ITA (where must have built a
standard set of libraries), but it would be a problem for taking submissions
for web applications from applicants. On the other hand, even making a
complete end-to-end webapp is a part of the Java standard. I am guessing
that's why the puzzles that require talking HTTP either to or from a web
server require Java.

Several of their other puzzles, however, don't specify a programming language
(e.g., bit vector, word rectangle) and could probably be very well suited to
being done in a Lisp.

