cancel
Showing results for
Did you mean:

Weekly Challenge

Solve the challenge, share your solution and summit the ranks of our Community!
New content is available in Academy! You may need to clear your browser cache for an optimal viewing experience

Challenge #177: Ham Hamlet

Fireball

A solution to last week's challenge can be found here

This challenge was created for a HackCU hackathon event in which teams were formed and were given 24 consecutive hours and Alteryx Designer to solve the challenge.

In this challenge you must break apart the given [encoded_string] into two character pairs and then build a decoder table, mapping the two-character pairs into ASCII characters to reveal a pig-latin encoded document.

To solve, or not to solve: that is the question.

Aurora
Spoiler
They gave us a=ac and y=qd.  I looked at the big nasty string and surmised that ks was a space since it appeared after acqd. Using that I could break it into words. From there I analyzed the most frequent words. The first one was a three letter word, so I guessed that 5c=e 7d=t and 8c=h since the is the most common 3 letter word. Then I saw number 4 and guessed that I=9C. For number #5, this handy site suggested that o=2d since it's the most popular 2 letter word. #6 I guessed that f=6c. Then for #9 I saw that 9c must be i. At this point I then assumed that the capital letters were simply created by capitalizing the second letter (ie 9c=i and 9C=I, ac=a and aC=A). This gave me most of the 26 letters needed to get the full list from the helper macro. I just kept going through the top of the list and trying to find cases where it had to be a certain letter missing.

Final look:

Initial words after figuring out ks=space

Quasar

Woo Hoo!  Solved it!  If I can be second to Patrick, I'm OK (for now) with that.

Workflow is messy, but my path is explained in the second spoiler.

Spoiler

Spoiler

Magnetar

Doozy of a challenge! Lots of trial and error and best guesses.

Spoiler
First, separated the text into 2 character strings, and summarized to see which were the most popular. "ks" came up behind the givens, so assumed this represents a space. Also, 5c was next, so assumed this represents an "e"

Next, grabbed a list of letter popularity to see if that would work to decode,  from this website

Nope. It failed.

Next approach was MUCH more manual.

Like @patrick_digan , decided to break the text up into what seemed like words. Then looked for words that begin with vowels (words that end in "yay"). Used letter popularity to assign vowels to codes, and then surmised that the second letter indicated case (5c=e, 5C=E):

Still not enough letters to test, so had to look at popular words (used the list on this website). Replaced the "known" letters to see if patterns were there. looking for and, of, -ing patterns, and but were enough letters to make the decoder macro work!

Then a join, record id, summarize, and data cleanse finish up the process.

Haven't tackled the extra credit........ yet.....

Quasar

Yay to more puzzles!

Spoiler
I started out by spliting my text into character pairs. I then used the find/replace to append the mapping table. Based on the frequency and the fact that it was always after ay I noticed that ks is a space. I then kept skimming through the data, trying to fill in easy words, also knowing that a word ending in yay must start with a vowel. This is how I found and d in and. Thereafter I stumpled across anywhere and anyone that gave me a bunch of letters. Next came the giving me t, followed by s, u, i. By that point I'd also realised what makes a capital letter, easily getting me across the 26 character mark.

Highlighted
Asteroid

Super fun challenge. This workflow killed my computer twice, and one time I hadn't saved anything

Written solve process:

Spoiler
I began by identifying the space character and then splitting up the string. From here I organized my workflow so that i could do an analysis of words and letter groups. Using this website I started to pick out the most common vowels. After finding out about the Capital letters being a freebie I reorganized my cipher table to 52 rows and laid out the given letters.

As I cycled through solved letters and words I began to analyse 10 character words to find the easy letters between.

(after solving It, At, The, Is, and To I had enough to finish)

To get up to 26 solved letters I began filling in the pattern for b-->D, and finishing off 2 letter words

Helpful resources were to and from piglatin translators (could have used my tool but would have been slow)

Note: For some reason I couldn't connect the macro output to a find replace once I had made 26 matches.

Workflow:

Spoiler
Alteryx Certified Partner

Finally solved it, with a lot of trial and error ... it's not a really elegant elegant solution, in positive terms, it's very "interactive" (driven by specific selections or input)

Spoiler
Like @patrick_digan , I started identifying the whitespace character (3rd most character, next to "acqd" or "qdacqd"), and made the guess, that second character indicates upper- or lowercase

Identified the vowels (selected the words ending with "qdacqd", parsed out first character, sorted by count and assigned the deciphered letter by frequency (according to https://en.wikipedia.org/wiki/Letter_frequency)

after trying some other approaches (most frequent characters, character pairs, doublette letters) I ended up filtering 2 letter words beginnig with specific vowels (i.e. 10 characters encoded including  "qdacqd" at the end) and assigned replacement by word frequency (according to https://www.eslkidstuff.com/wordlists/WordList300.pdf, e.q. most frequent 2 letter word starting with "a" is "at" - most frequent in my list was "ay", so I used the second on the list). This worked fine for "o", "i", "a", the result for for "u" dissented to the result from "i"

filtered words with "e" as a second letter ("be", "he", "me") - I expected these words to start with the encoded "e" and end with "acqd"

Alteryx

I Eventually got there. Attached is my completed workflow

Spoiler
1) Like most people my analysis started with figuring out that ks indicated a space, this allowed me to parse out individual words.
2) I used this helpful quiz to decide the words I wanted to decode first, starting with the smallest words. This quiz gave me the most commonly used words in Hamlet
3) From there I used an English to Pig-Latin converter to assist me with how these common words would be spelled in Pig-Latin. I am not fluent.
4) I for sure used a brute-force approach which included tons of trial and error. The tool containers indicate the words I was able to decode in that data stream by placing missing letters with potential words from the quiz listed above.
Magnetar

This was a neat one

Spoiler
I probably cheated on the spirit of the challenge, but I think my answer is fun so I went with it, after attempting a similar manual process to others here.

Since we knew that only ASCII characters were in scope, I split out the encoded string into 2 character pairs and generated a list of all printable ASCII characters.  Then I used an Append Fields tool to create a combination of all two character pairs/ascii characters, and fed this into the macro.  This is very much the "shotgun" approach - while I had ~23,000 incorrect values, since I had at least 26 right, the macro spit out the full cipher key, and I was able to feed this into the rest of the process.

theoretically something similar could be done by limiting these scales based on our known information, with manual review to break the cipher.

Magnetar
@Claje, cool approach!!!