Mystery Company Recruiting Talent With a Puzzle 354
An anonymous reader writes "Google has previously used coding competitions to locate top talent. In a new twist on the idea, an anonymous tech company is posting a help-wanted ad that challenges developers to find out who the company is. A little digging and text mashing reveals a website containing a Web 2.0 puzzle that makes notpron look like child's play. So, fellow developers, who is this company, and, well, what is the significance of the date '01-18-08?'" Update: 12/12 20:20 GMT by KD : Replaced link to a removed Craigslist ad with a mirror.
One word... (Score:5, Informative)
Save some time (Score:5, Informative)
eyAnOicgPT4gJycsICcgJyA9PiAnLScsICdzXG4nID0+ICdzLmNvbVxuJyB9 converts to { ':' => '', ' ' => '-', 's\n' => 's.com\n' }
Base64 (Score:4, Informative)
{ ':' => '', ' ' => '-', 's\n' => 's.com\n' }
Now, if you notice [RFC 3548] later changed to 4648:
"CB-" ":" ":" ":"
":"
my 30-seconds attempt is over.
Here's the contact info (spoiler warning) (Score:5, Informative)
{ ':' => '', ' ' => '-', 's\n' => 's.com\n' }
Apply that to the subject in the contact details. You get:
http://wanted-master-software-developers.com/ [wanted-mas...lopers.com]
That was pretty easy. The test then seems to move to web programming and I'm not interested.
Re:Base64 (Score:5, Informative)
Its a find-and-replace that turns the title:
Wanted: Master Software Developers
Into:
http://wanted-master-software-developers.com/ [wanted-mas...lopers.com]
... and the test continues...
Re:Here's the contact info (spoiler warning) (Score:3, Informative)
([Dollar,Daily Universal Register] % 100).([Flavian II => Severus] / 2 - 1).([Sherman Anti-Trust,Van Gogh] / 9).([Tycho Brahe,Stellar] / 12)
*/
that's at the top of the main css file. the other js files don't help...
Source code (Score:5, Informative)
"// Note: It is not necessary to reverse-engineer this file in order to complete the contest"
I did no testing of any sort... inside framework.pack.js it says
p.setAttribute("title","list, uniquify, relativity");
p.appendChild(document.createTextNode("Ford's, success, has, the, country, almost, financially, industrially, mechanically, exhibits, in, higher, than, persons, have, thought, possible, contradictory, requirements, of, efficiency, increase, great, workers, cost, consumer, And, cost, cost, consumer, And, cost, cost, consumer, And, workers, workers, workers, workers, to, repeated, great, increase, quality, increase, great, great, increase, quality, efficiency, efficiency, which, are, of, contradictory, contradictory, requirements, of, possible, have, have, thought, possible, have, have, persons, than, than, most, persons, persons, than, most, exhibits, exhibits, exhibits, exhibits, financially, financially, financially, financially, almost, the, the, country, almost, Ford's, Ford's, success, has"));
After solving 1/3... (Score:1, Informative)
So my guess is that with correct numbers entered to the box, you get the key drawn with blue boxes to go to the next phase (which might be related to the "/images/code.png" or some other hint in the "/css/" extra css files.
Re:After solving 1/3... (more on code.png) (Score:3, Informative)
A histogram of code.png shows all values concentrated at 8 locations, making me think this is digital information, not something meant to be viewed as an image.
Nothing interesting from "strings code.png"
That's all I have to contribute. Off to do something else now...
W
Re:Clues so far... (Score:1, Informative)
Re:Difficult test? Hardly. (Score:5, Informative)
2/3 (Score:4, Informative)
The code.png contains 6 colors. If you interpret it linearly and separate it into blocks delineated by green-blue, you'll notice that many of these blocks appear several times throughout the file.
Someone in the Google group has decoded the CSS classnames in the source (substitution cypher), the result then leads to part 3: http://www.wanted-master-software-developers.com/?you=me [wanted-mas...lopers.com]
Re:Source code (Score:4, Informative)
f = function(d) {
var h = d.length;
var w = d[0].length;
dxy = function(x,y) {
return x<w && y<h && x>=0 && y>=0 && d[y][x];
}
for(var y = h-2; y >= 0; y--) {
for(var x = 0; x < w; x++) {
if(d[y][x] &&
!dxy(x-1,y) &&
!dxy(x+1,y) &&
!dxy(x,y+1) &&
!(dxy(x+1,y+1) &&
dxy(x-1,y+1))) {
d[y][x]=false;
d[y+1][x]=true;
}
}
}
}
This basically drops all the blocks in the field, unless they're touching another block on either side, below, or they're touching two blocks on both diagonal corners below. Here the field is an array of arrays, and the blocks are true or false.
Then, you get the Ford text plus a field in the bottom. The field accepts a list of integers. You have a "dropper". For each integer, the dropper moves that number of positions to the right (positive) or left (negative), and drops a block following your algorithm (that's why you need the JS function to work). Note that the positions are relative, not absolute.
Now for the Ford code. The hint is in the tooltip text. List, Uniquify, Relativity:
LIST the words in both the original text (from wikipedia) and the text that comes up after solving the problem. Split it into words (maintain apostrophes as part of words, since it's part of the word Ford's).
UNIQUIFY the original text, getting rid of duplicate words while maintaining the word order. Leave the first word of each.
RELATIVITY: Find the positions of each word in the mangled text from the original text. Given these positions, calculate the position change (relativize, differentiate, call it however you want). You'll get something like 0,-6,5,-5,4,-4,2,-2,1,-1,-1,1,-3,3,-4,4,-5,5.... Drop the first number of each pair (the initial zero is an artifact), leaving -6, -5, -4, -2... These are absolute positions of the dropper. Differentiate again, giving 0,1,1,2,1,2,2,1,1. Now that looks like a set of instructions for the dropper. Plug it in, and voila.
Here's the Python code to make it happen:
#!/usr/bin/python
import re
data = "Ford's, success, has, the, country, almost, financially, industrially, mechanically, exhibits, in, higher, than, persons, have, thought, possible, contradictory, requirements, of, efficiency, increase, great, workers, cost, consumer, And, cost, cost, consumer, And, cost, cost, consumer, And, workers, workers, workers, workers, to, repeated, great, increase, quality, increase, great, great, increase, quality, efficiency, efficiency, which, are, of, contradictory, contradictory, requirements, of, possible, have, have, thought, possible, have, have, persons, than, than, most, persons, persons, than, most, exhibits, exhibits, exhibits, exhibits, financially, financially, f
Re:Source code (Score:5, Informative)
Turns out all you need is one differentiation and a non-retarded regular expression that doesn't insert empty words between each pair of non-word characters.
I've also made the variable names resemble less those of the problem (read: not single-character madness). And added some comments.
#!/usr/bin/python
import re
data = "Ford's, success, has, the, country, almost, financially, industrially, mechanically, exhibits, in, higher, than, persons, have, thought, possible, contradictory, requirements, of, efficiency, increase, great, workers, cost, consumer, And, cost, cost, consumer, And, cost, cost, consumer, And, workers, workers, workers, workers, to, repeated, great, increase, quality, increase, great, great, increase, quality, efficiency, efficiency, which, are, of, contradictory, contradictory, requirements, of, possible, have, have, thought, possible, have, have, persons, than, than, most, persons, persons, than, most, exhibits, exhibits, exhibits, exhibits, financially, financially, financially, financially, almost, the, the, country, almost, Ford's, Ford's, success, has"
text = "Ford's success has startled the country, almost the world, financially, industrially, mechanically. It exhibits in higher degree than most persons would have thought possible the seemingly contradictory requirements of true efficiency, which are: constant increase of quality, great increase of pay to the workers, repeated reduction in cost to the consumer. And with these appears, as at once cause and effect, an absolutely incredible enlargement of output reaching something like one hundredfold in less than ten years, and an enormous profit to the manufacturer"
def do_list(string):
return re.split(r"[
def do_uniquify(lst):
out_l = []
for i in lst:
if i not in out_l: # ignore dupes
out_l.append(i)
return out_l
def do_relativity(textlist,datalist):
last_pos = 0 # keep track of last position
out_l = []
for word in datalist:
index = textlist.index(word) # find index in source text
out_l.append(index-last_pos) # differentiate index
last_pos = index
return out_l
textlist = do_list(text)
datalist = do_list(data)
uniquelist = do_uniquify(textlist)
relative_numbers = do_relativity(uniquelist,datalist)
# stringize all numbers, join with commas.
print ",".join(map(str,relative_numbers))
Re:Base64 (Score:4, Informative)
is to go to http://wanted-master-software-developers.com/ [wanted-mas...lopers.com] and the URL will change to http://wanted-master-software-developers.com/?key= [wanted-mas...lopers.com]
so you paste the word coLLAborATE at the end: http://wanted-master-software-developers.com/?key=coLLAborATE [wanted-mas...lopers.com] and you get to the next step.
For an explanation of the in between parts see http://edschweppe.livejournal.com/88912.html [livejournal.com]
Re:One word... (Score:2, Informative)
3/3 (Score:3, Informative)
N-BRAIN is a privately held company in Boulder, Colorado. You can apply for a job without going through the puzzle. According to http://www.n-brain.net/jobs.htm [n-brain.net] they don't look at resumes but give you an assignment to evaluate your code-fu. The team page lists four people, including the founder John A. De Goes, who is the author of two books on game programming ("3D Game Programming with C++" and "3D Game Programming with C++ Gold Edition"), worked as an instructor at http://www.gameinstitute.com/ [gameinstitute.com] and is a member of the Boulder martial arts and agile software meetup groups.