Norway


Are you working over the New Year?

Well, whatever you’re up to – but especially if you’re on sysadmin or tech support duty while the rest of us are partying – here’s a bit of fun that looks just like work but isn’t. (Don’t let on that we said so.)

Presenting the NYE 17 #sophospuzzle crossword:

This interactive crossword puzzle requires JavaScript and any recent web browser, including Windows Internet Explorer, Mozilla Firefox, Google Chrome, or Apple Safari. If you have disabled web page scripting, please re-enable it and refresh the page. If this web page is saved on your computer, you may need to click the yellow Information Bar at the top or bottom of the page to allow the puzzle to load.

“);
else
document.write(“

“);
}
document.writeln(“”);
}
document.writeln(“”);

// Finally, show the crossword and hide the wait message.
Initialized = true;
document.getElementById(“waitmessage”).style.display = “none”;
document.getElementById(“crossword”).style.display = “block”;
}

// * * * * * * * * * *
// Event handlers

// Raised when a is pressed in the word entry box.
function WordEntryKeyPress(event)
{
if (CrosswordFinished) return;
// Treat an Enter keypress as an OK click.
if (CurrentWord >= 0 && event.keyCode == 13) OKClick();
}

// * * * * * * * * * *
// Helper functions

// Called when we’re ready to start the crossword.
function BeginCrossword()
{
if (Initialized)
{
document.getElementById(“welcomemessage”).style.display = “”;
document.getElementById(“checkbutton”).style.display = “”;
}
}

// Returns true if the string passed in contains any characters prone to evil.
function ContainsBadChars(theirWord)
{
return !/^[a-z-]+$/i.test(theirWord);
}

// Pads a number out to three characters.
function PadNumber(number)
{
if (number = 0) OKClick();
DeselectCurrentWord();

// Determine the coordinates of the cell they clicked, and then the word that
// they clicked.
var target = (event.srcElement ? event.srcElement: event.target);
x = parseInt(target.id.substring(1, 4), 10);
y = parseInt(target.id.substring(4, 7), 10);

// If they clicked an intersection, the type of word that was NOT selected last .
if (TableAcrossWord[x][y] >= 0 && TableDownWord[x][y] >= 0)
CurrentWord = PrevWordHorizontal ? TableDownWord[x][y] : TableAcrossWord[x][y];
else if (TableAcrossWord[x][y] >= 0)
CurrentWord = TableAcrossWord[x][y];
else if (TableDownWord[x][y] >= 0)
CurrentWord = TableDownWord[x][y];

PrevWordHorizontal = (CurrentWord 0 && TableCell.innerHTML != ” ” && TableCell.innerHTML.toLowerCase() != ” “)
{
TheirWord += TableCell.innerHTML.toUpperCase();
TheirWordLength++;
}
else
{
TheirWord += “•”;
}
}

document.getElementById(“wordlabel”).innerHTML = TheirWord;
document.getElementById(“wordinfo”).innerHTML = ((CurrentWord WordLength[CurrentWord])
{
document.getElementById(“worderror”).innerHTML = “You typed too many letters. This word has ” + WordLength[CurrentWord] + ” letters.”;
document.getElementById(“worderror”).style.display = “block”;
return;
}

// If we made it this far, they typed an acceptable word, so add these letters to the puzzle and hide the entry box.
x = WordX[CurrentWord];
y = WordY[CurrentWord];
for (i = 0; i LastHorizontalWord ? i : 0));
TableCell.innerHTML = TheirWord.substring(i, i + 1);
}
DeselectCurrentWord();
}

// Called when the “check puzzle” link is clicked.
function CheckClick()
{
var i, j, x, y, UserEntry, ErrorsFound = 0, EmptyFound = 0, TableCell;
if (CrosswordFinished) return;
DeselectCurrentWord();

for (y = 0; y = 0 || TableDownWord[x][y] >= 0)
{
TableCell = CellAt(x, y);
if (TableCell.className == “ecw-box ecw-boxerror_unsel”) TableCell.className = “ecw-box ecw-boxnormal_unsel”;
}

for (i = 0; i 0 && TableCell.innerHTML.toLowerCase() != ” “)
{
UserEntry += TableCell.innerHTML.toUpperCase();
}
else
{
UserEntry = “”;
EmptyFound++;
break;
}
}
UserEntry = UserEntry.replace(/&/g, ‘&’);
// If this word doesn’t match, it’s an error.
if (HashWord(UserEntry) != AnswerHash[i] && UserEntry.length > 0)
{
ErrorsFound++;
ChangeWordStyle(i, “ecw-box ecw-boxerror_unsel”);
}
}

// If they can only check once, disable things prematurely.
if ( OnlyCheckOnce )
{
CrosswordFinished = true;
document.getElementById(“checkbutton”).style.display = “none”;
}

// If errors were found, just exit now.
if (ErrorsFound > 0 && EmptyFound > 0)
document.getElementById(“welcomemessage”).innerHTML = ErrorsFound + (ErrorsFound > 1 ? ” errors” : ” error”) + ” and ” + EmptyFound + (EmptyFound > 1 ? ” incomplete words were” : ” incomplete word was”) + ” found.”;
else if (ErrorsFound > 0)
document.getElementById(“welcomemessage”).innerHTML = ErrorsFound + (ErrorsFound > 1 ? ” errors were” : ” error was”) + ” found.”;
else if (EmptyFound > 0)
document.getElementById(“welcomemessage”).innerHTML = “No errors were found, but ” + EmptyFound + (EmptyFound > 1 ? ” incomplete words were” : ” incomplete word was”) + ” found.”;

if (ErrorsFound + EmptyFound > 0)
{
document.getElementById(“welcomemessage”).style.display = “”;
return;
}

// They finished the puzzle!
CrosswordFinished = true;
document.getElementById(“checkbutton”).style.display = “none”;
document.getElementById(“congratulations”).style.display = “block”;
document.getElementById(“welcomemessage”).style.display = “none”;
}

// Called when the “cheat” link is clicked.
function CheatClick()
{
if (CrosswordFinished) return;
var OldWord = CurrentWord;
document.getElementById(“wordentry”).value = Word[CurrentWord];
OKClick();
ChangeWordStyle(OldWord, “ecw-box ecw-boxcheated_unsel”);
}

// Returns a one-way hash for a word.
function HashWord(Word)
{
var x = (Word.charCodeAt(0) * 719) % 1138;
var Hash = 837;
var i;
for (i = 1; i

There’s a Sophos T-shirt for the for the first correct solution received, and a T-shirt for a one other successful solver chosen from the rest of the correct answers received in time.

The cutoff for entries to be eligible for a T-shirt is 2018-01-02T12:00-10 (that’s noon in Hawaii on the day after New Year’s Day).

If you get stuck, try a search engine; if you’re still stuck after that, try following @NakedSecurity on Twitter, and keep your eye on the hashtag #sophospuzzle.

(All we ask is that you don’t spoil it for other people – public hints and teasers are fine, but please don’t blurt out complete answers.)

You are also welcome to email us for hints on tips@sophos.com if you don’t use Twitter, or if you want to keep your hints to yourself.

To try for a T-shirt, take a screenshot when you have finished the puzzle, and email it to us.

Please put the text SOLUTION at the start of the subject line, and let us know in the email if you’re OK with being named amongst the solvers.

You can tell us some or all of: your name, nickname, city, country and Twitter handle – or choose to stay anonymous. (We’ll only use your email address to contact you if you win a shirt – we won’t add you to any mailing lists, honest.)

Good luck with your puzzling, and, from the Naked team, Happy New Year!

LEADERBOARD


🥇 Donal (@donalhunt), Cork, Ireland @ 2017-12-29T23:24Z


🥈 James Hodgkinson (Yaleman), Brisbane, QLD, Australia @ 2017-12-30T00:48Z


🥉 Rhett Hooper, Salt Lake City, UT, USA @ 2017-12-30T00:54Z


Andrew King, Darwin, NT, Australia


Melissa R, Mississippi, USA


Peter K, Hungary


Ian O’Neill, Leighton Buzzard, Bedfordshire, UK


William Steinka, Connecticut, USA


Presian Yankulov (@presianbg), Sofia, Bulgaria


Andrew Yeomans, Tring, Hertfordshire, UK.


David Nason, Chapel Hill, NC, USA


Jenn L, Vancouver, BC, Canada







Source link

LEAVE A REPLY

Please enter your comment!
Please enter your name here