# Weekly Challenge

Solve the challenge, share your solution and summit the ranks of our Community!
###### IDEAS WANTED

We're actively looking for ideas on how to improve Weekly Challenges and would love to hear what you think!

Submit Feedback
We've recently made an accessibility improvement to the community and therefore posts without any content are no longer allowed. Please use the spoiler feature or add a short message in the message body in order to submit your weekly challenge.

## Challenge #177: Ham Hamlet

Highlighted
Moira
Spoiler
I was getting so frustrated doing the back and forth with trial and error along with rerunning my workflow so many times. I ended up just scrapping that method and artificially creating a bunch of possible combinations so that I could get 26 of the 104 mappings.
Highlighted
Alteryx Partner
Spoiler

A difficult one! I didn't really know where to start, apart from finding what a space was. I got the idea then from @T_Willins to look at shorter words and guess characters from there. Then, I sorted the words by count to find the most common words like 'the', 'and', 'we' etc

Took a long time but enjoyed the problem solving!
Highlighted
7 - Meteor
Spoiler
My solution is still incomplete and does not use an automated approach such as counting characters as I was completely thrown off by the pig latin. The only way I managed to figure it out was through trying to take a logical approach:
I found out that the second character only had four possible combinations (excluding upper and lower case).
From the position and frequency of the upper case variants, I concluded that these were not an integral part of the decode.
I couldn't get the 'A' or the 'Y' characters to agree to their actual mappings and the decode only gave nonsense. As the numbering of the left hand encoded letter began at 2 rather than 1, I decided that this might also be a clue, so bumping the left character 'a' to position '1'.
From here manual verification of the words that appeared and adjustment allowed me to get some semblance of real words, however the only checks I was actually certain about were the header and footer as they have less flowery language.

Overall, I think there was more luck than judgement involved here! With more fine tuning, most letters would be discovered, and further investigation would have revealed an identical ordering to each character subset (assuming that I chose to begin at the correct character!), so making adjustment possible.

Highlighted
Alteryx Certified Partner

My solution with lots of trial and error.

Spoiler
Highlighted
Alteryx Certified Partner

Couldn't get there on my own and after a peek at the solutions I thought @Claje's 'brute force' approach was incredibly smart, so did something along those lines.

Spoiler

Highlighted
Moira

Forgot to attach my workflow to my posted solution above.

Highlighted
8 - Asteroid

Hi! Here my solution 🙂

Spoiler
Honestly, when you published this challenge 2-3 months ago I said 'omg, this is no for me, this is for CIA or so...' haha

I think I've found a really easy way to solve it. I didn't look at any solution, I promise. And it didn't take more than 8 hours for sure.

So, first at all, in any text any language most of the words are separated by spaces or by punctuation marks and spaces, but spaces are always there...so as "a" and "y" decoded characters were always followed by a 'ks' coded pair...I just suposed that 'ks' meant actually " ".

Second, I splitted text with that " " decoded character:

Third, once we have splitted the text, we have (more or less) words, so we can build them and...why don't we count and order them descending?

(picture shows the words decoded...at this point, imagine I haven't already decoded)

...and why not looking for some help? let's look for the most common words in English here:

https://en.wikipedia.org/wiki/Most_common_words_in_English

Fourth, as we can identify most of the most common words, we can identify very fast 15-20 characters through those words (and, to, the, of, in, you, that....). Now, why don't we try to read the text?

Now is fun, because at the beginning of the text I recognised the words 'project gutemberg' and 'shakespeare' :).....and after that a text where I could read literally 'for the use of anyone anywhere at no cost'...so I googled 'project gutenberg shakespeare hamlet' (as the challenge is called Ham Hamlet):

...and voilá! I should have click 'Voy a tener suerte' (spanish version for I'm Feeling Lucky) haha. It results that if you click on 'read this book online: html' you can find a text which first paragraph is exactly the same text I red...so I've found a

HAM HAMLET ROSSETA STONE

http://www.gutenberg.org/files/1524/1524-h/1524-h.htm

After that, I just wrote some other letters in the table till I had 26 correct decodings 🙂
Highlighted
Alteryx Certified Partner

well that was properly challenging

Spoiler
I worked out that ks was a space as it was always preceded by 'ay', and then used this to break everything out into words. Then I found 'the' as the most common 3 letter word. I assumed that the case of the second letter gave the case of the real letter, rather than changing the real letter. From there I used the letters I had to work out other letters. After a while I spotted a pattern in the encoding, which I could use to quickly fill in the gaps

Very manual, but quite satisfying to chip away at such a hard problem bit by bit
Highlighted
Alteryx Partner
Spoiler

Highlighted
16 - Nebula

Man - this was an interesting one!

First started out by trying to create a word frequency for Hamlet translated into Pig Latin.   Interestingly - it turned out that this gave the first 6 letters, but did not match to anything after this.

Accidentally, after feeding this through an append tool, created a brute-force approach (like @Claje ) and it unlocked the translation.

So I spent the rest of the time doing a pig-latin decoder which is case sensitive - works relatively well with only a few issues that I didn't commit the time to ferret out.

Spoiler
Here's the solution that decodes the pig-latin with case sensitivity - you can see that the process is to break into words, then progressively decode (and remove) each word - then do a case fix; and finally replace in the original text.