Okay, let’s tackle those last two Volapük crosswords.

Volapük #4 (Fol)

A bit bigger than the previous ones. And looks to be just as much gobbledygook.

[pa/\swe]+
[bmx's]+n?
[t0x\sd]+
[a5-9\/]+\d(\s|:|\.)
(\d+)[mew]+[w407om]+
[\/beds]+.+(d|b)+.?
(\d|\/d|p|\ss|s)+[sp1ne\s]+
[^zo\s\/\d]+[na:x,s]+
[0-9:a-z\/\s]+
(0d|e\s|\sx)+
.+b(sn|xn|:p)+
[^\sin\/5]+

Solve the Crossword

There appear to be a couple possible literals. But one of them, at present, we have no way to be sure where it will end up. However, for the first column we know the third character has to be a digit. And the only digit the right regex for the appropriate row allows is 1. Now, let’s start with the first row and see where we can go.

According to the left regex, at least the first character has to be a digit. The column regexes limit that digit to [5-9]. And the right row regex tells us it has to be 7 since 4 nor 0 are in the specified range.

Is the second character also a digit? (\d+) says one or more digits to start the row. The second part of the left regex, [mew]+, says one of the characters in the class one or more times. But, the top column regex doesn’t allow any of those characters. So another digit it must be. And the only digit it permits is 0. The other two regexes don’t have a problem with that choice.

The third column’s top regex, [bmx's]+n?, doesn’t allow any digits. And says at least the first character in the column must be one of [bmx's]+. Which means we have to move on to the second half of the left regex, [mew]+. The only character in both pertinent parts of the regexes is m.

And, if we take the intersection of the four regexes, only a w is permitted for the final character of the row.

[pa/\swe]+
[bmx's]+n?
[t0x\sd]+
[a5-9\/]+\d(\s|:|\.)
(\d+)[mew]+70mw[w407om]+
[\/beds]+.+(d|b)+.?
(\d|\/d|p|\ss|s)+1[sp1ne\s]+
[^zo\s\/\d]+[na:x,s]+
[0-9:a-z\/\s]+
(0d|e\s|\sx)+
.+b(sn|xn|:p)+
[^\sin\/5]+

On to the second row. The left regex doesn’t allow any digits in the row. Since the \d in the top regex is a literal, it can’t be specifying the current row’s first character. So, we are still in the [a5-9\/]+ portion of the column’s top regex. The only element satisfying all four regexes is \/.

For the second character, it has to be one of the characaters in the left and top regexes. The only character satisfying that requirement is d. Alternatively, looking at the second columns bottom regex, since the first character is 0, the second must be d to satisfy the only permitted alternation. I.E. (0d|....).

The bottom regex for the third column starts with .+b. Which means at some point in that column we have to have a b (it’s a literal element). That pretty much has to be now, as the regexes for the last two rows don’t allow a b. And the other regexes for the current character have no problem with it being a b.

The row’s left and fourth column’s top regexes only allow for the characters / and e. However the column’s bottom regex doesn’t allow the /. So e it is.

[pa/\swe]+
[bmx's]+n?
[t0x\sd]+
[a5-9\/]+\d(\s|:|\.)
(\d+)[mew]+70mw[w407om]+
[\/beds]+/dbe.+(d|b)+.?
(\d|\/d|p|\ss|s)+1[sp1ne\s]+
[^zo\s\/\d]+[na:x,s]+
[0-9:a-z\/\s]+
(0d|e\s|\sx)+
.+b(sn|xn|:p)+
[^\sin\/5]+

Now the third row. We sorted the first character right from the start.

When we compare the relevant regexes, the intersection of the top and right regex gives us whitespace for the row’s second character. Now that choice pretty much determines a few other characters. The alternation, \ss, in the left regex, the only one containing whitespace, means that the next (third) character has to be an s. And given we’ve used the b in the bottom regex for the third column, the only viable choice from the alternation is sn. So the fourth character in the third column has to be n. Similarly, the fourth character of the second column has to be x to satisfy the \sx alternation in the column’s bottom regex.

For the final character in the third row, the only one allowed by the left, right and upper regexes is p.

[pa/\swe]+
[bmx's]+n?
[t0x\sd]+
[a5-9\/]+\d(\s|:|\.)
(\d+)[mew]+70mw[w407om]+
[\/beds]+/dbe.+(d|b)+.?
(\d|\/d|p|\ss|s)+1sp[sp1ne\s]+
[^zo\s\/\d]+xn[na:x,s]+
[0-9:a-z\/\s]+
(0d|e\s|\sx)+
.+b(sn|xn|:p)+
[^\sin\/5]+

Only a couple characters left to sort out.

The top regex tells us the first character of the fourth row has to be one of (\s|:|\.). The only one allowed by all the other regexes is :.

And for the last character, the only one the top and right regexes have in common is the a.

[pa/\swe]+
[bmx's]+n?
[t0x\sd]+
[a5-9\/]+\d(\s|:|\.)
(\d+)[mew]+70mw[w407om]+
[\/beds]+/dbe.+(d|b)+.?
(\d|\/d|p|\ss|s)+1\ssp[sp1ne\s]+
[^zo\s\/\d]+:xna[na:x,s]+
[0-9:a-z\/\s]+
(0d|e\s|\sx)+
.+b(sn|xn|:p)+
[^\sin\/5]+

And that got the big check mark on the regex crossword site.

Volapük #5 (Lul)

Wow, 5 x 5 gobbledygook!

[lo\s\?5-8]+
[^fa\st1-2]+f
[feal3-5s]+
(we|r4|ry|m)+
[2tail\-d]+
(n3|tra|n7)+[^old\s]+
[1love2?4]+.(\d+)[la\s$?]+
(a|d)m[5-8$l]+(\-p|5\$|am|z|l)+
[^\s0ilad]+(\-d|\-we)+[^l4-9n$?]+
[b-e]+(.)\1.[fed$?]+
[^ilyo]+
.+[murdew]+
[1alf5$e\s]+
[\dfan$?]+
.+\s.+\?

Based on the literals in the regexes we can sort the following characters farily simply. To start the bottom character of the fourth column, based on the top regex, has to be an f. And, the left regex of the last row, tells us that that f was captured earlier in the regex, \1. The preceding character, (.) is where the f was captured. So it must also be an f. Looking at the left regex for the third row, the second character has to be an m. Looking the row’s regexes, that means the first character has to be a.

We can also get a number of characters in the first row. The left regex, an alternation group, gives us two choices for the first character, n or t. However, the upper regex doesn’t allow an n. So the first three characters of the first row are tra. That only leaves two characters in the row, which must be either n3 or n7. Since the top regex of the last column only allows the digits [5-8], n7 it has to be.

Fair number of characters rather easily.

[lo\s\?5-8]+
[^fa\st1-2]+f
[feal3-5s]+
(we|r4|ry|m)+
[2tail\-d]+
(n3|tra|n7)+tran7[^old\s]+
[1love2?4]+.(\d+)[la\s$?]+
(a|d)m[5-8$l]+am(\-p|5\$|am|z|l)+
[^\s0ilad]+(\-d|\-we)+[^l4-9n$?]+
[b-e]+(.)\1.ff[fed$?]+
[^ilyo]+
.+[murdew]+
[1alf5$e\s]+
[\dfan$?]+
.+\s.+\?

The right regex of the second row tells us the first character (perhaps more) has to be a digit. The only digit allowed by the first column’s top regex is 2. The top regex of the second column says the first two characters have to be r4 or ry. The second row’s left regex doesn’t allow a y but does allow a 4.

Have we used up the (\d+) in the row’s right regex. + means 1 or more. For the third character, the top regex says only the digits 3-5 allowed. Bottom regex only allows 1 or 5, leaving us with maybe 5. But the left regex doesn’t allow 5 only [124]. So, we have to move on to the second group in the right regex, [la\s$?]+. (Took me awhile to sort that out.) The intersection of the four regexes gives us an l.

Four the fourth character, the regexes limit us to the ?. And, all I can sort for the last character is the \s. The bottom regex has a literal \s, so it will need to be somewhere in the column. But, the regexes for the the remaining rows don’t allow whitespace. So, this must be where it goes.

[lo\s\?5-8]+
[^fa\st1-2]+f
[feal3-5s]+
(we|r4|ry|m)+
[2tail\-d]+
(n3|tra|n7)+tran7[^old\s]+
[1love2?4]+.24l?(\d+)[la\s$?]+
(a|d)m[5-8$l]+am(\-p|5\$|am|z|l)+
[^\s0ilad]+(\-d|\-we)+[^l4-9n$?]+
[b-e]+(.)\1.ff[fed$?]+
[^ilyo]+
.+[murdew]+
[1alf5$e\s]+
[\dfan$?]+
.+\s.+\?

Let’s look at the remaining characters in the third row. Given the m in the second column, the left regex tells us the remaining characters must be one of [5-8$l]+. The top regex only allows the 5. And the right regex tells the next character must be $. And that leaves us with the l for the last character in the row (based on intersection all but the column’s bottom regex).

[lo\s\?5-8]+
[^fa\st1-2]+f
[feal3-5s]+
(we|r4|ry|m)+
[2tail\-d]+
(n3|tra|n7)+tran7[^old\s]+
[1love2?4]+.24l?(\d+)[la\s$?]+
(a|d)m[5-8$l]+am5$l(\-p|5\$|am|z|l)+
[^\s0ilad]+(\-d|\-we)+[^l4-9n$?]+
[b-e]+(.)\1.ff[fed$?]+
[^ilyo]+
.+[murdew]+
[1alf5$e\s]+
[\dfan$?]+
.+\s.+\?

This is pretty slow going. Let’s have a look at the fourth row.

The right regex limits us to one of (\-d|\-we)+ for the first character. So the first character is -. None of the other regexes have a problem with that. The top regex for the second column doesn’t allow a d. So the first three characters are -we. Which also means the last two characters of the second column are we (sort of also, see column’s top regex).

No - allowed for the fourth character, so it has to be one of [\dfan$?]+. The row’s right regex doesn’t allow [^l4-9n$?]+, leaving us with [\dfa]+. The top regex doesn’t allow fa. So a digit it is. But the other regexes don’t allow [^01-24-9]. So, looks like it has to be 3.

The last character in the row has to be one of [lo\s\?5-8]+. The row’s right regex dosen’t allow [^l4-9?]. Leaving [o\s]+. The left regex eliminates [^\s], leaving o.

[lo\s\?5-8]+
[^fa\st1-2]+f
[feal3-5s]+
(we|r4|ry|m)+
[2tail\-d]+
(n3|tra|n7)+tran7[^old\s]+
[1love2?4]+.24l?\s(\d+)[la\s$?]+
(a|d)m[5-8$l]+am5$l(\-p|5\$|am|z|l)+
[^\s0ilad]+-we3o(\-d|\-we)+[^l4-9n$?]+
[b-e]+(.)\1.eff[fed$?]+
[^ilyo]+
.+[murdew]+
[1alf5$e\s]+
[\dfan$?]+
.+\s.+\?

Let’s finish it. The first character in the last row has to be one of [b-e]+. The only one of those four characters allowed by the top regex is d. And for the last character, the bottom has a literal ? for that spot. (Missed that when sorting literals at the start of the solution.)

[lo\s\?5-8]+
[^fa\st1-2]+f
[feal3-5s]+
(we|r4|ry|m)+
[2tail\-d]+
(n3|tra|n7)+tran7[^old\s]+
[1love2?4]+.24l?\s(\d+)[la\s$?]+
(a|d)m[5-8$l]+am5$l(\-p|5\$|am|z|l)+
[^\s0ilad]+-we3o(\-d|\-we)+[^l4-9n$?]+
[b-e]+(.)\1.deff?[fed$?]+
[^ilyo]+
.+[murdew]+
[1alf5$e\s]+
[\dfan$?]+
.+\s.+\?

And another big orange circle with a white check mark. Must say that took some effort and time. The earlier crosswords were easier as they gave away clues. No clues from textual nonsense.

Done

I have to tell you, I really love having the arrows show up on the crosswords without me having to actually put them in the cells of the HMTL table.

I do enjoy solving these regex puzzles (crosswords or otherwise), but I am not sure the world needs me doing more of these. But one never knows what may take my fancy.

Until next time, may your fingers be merry and limber.