Print the phrase And she said, 'But that's his.'
using only the following characters: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
No punctuation or non-alphabetic characters whatsoever. You can use whatever programming language you want. Whitespace is completely allowed. Shortest program wins.
CARVIEW |
Stack Exchange Network
Stack Exchange network consists of 183 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.
Visit Stack ExchangeTeams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Learn more about Teams38 Answers 38
Husk, 408 bytes
mcJLQtDDQDsisNeJDDDDDisNeJDDDDDisNeJLDQQDDsisNeLtQtDDQDsisNLDDtDtDtDDDsisNJLtQDtDDDsisNeLtDDtDtDDDDsisNLttttQDtDDDsisNJLDDtDtDtDDDsisNeJLtDtDtDtDtDDDsisNeLtDDtDtDDDDsisNLQDtDDDsisNJDDDDDisNeDDiDsisNLtDDQDDsisNJLtDDQDDsisNeJLDDtDtDDDDsisNeJLDDtDtDDDDsisNeLtttPtDQDsisNDDDDDisNJLtDtDtDtDtDDDsisNeLtQDtDDDsisNLDDtDtDDDDsisNJLQDtDDDsisNeJDDDDDisNeLtDDtDtDDDDsisNLtQDtDDDsisNJLDtPDDsisNeLtDDtDtDDDDsisNLtDDQDDsisN
Well, that was an adventure.
The code was generated with this Python script. Not sure it's optimal, but it's good enough for me.
Explanation
So, limiting Husk to using only letters turned out to be a real pain... My first idea was to use s
to convert a value to string, use t
(drop first element) and D
(double) to change the length of this string, then convert it to a number by computing its length with L
: I could do this to generate the ASCII code of each character in the output string, and the convert them to characters with c
.
That was complex enough for my tastes, but then I realized that all the builtins associated to letters in Husk are functions (which cannot be converted to string), except for N
... which is the infinite list of natural numbers, good luck getting the length of that. Fortunately, i
can take a string and return the first integer found in that string, which for N
would be 1, so with sisN
I can get my string of length 1 and I can manipulate that to get all other lengths.
I wrote a python script to bruteforce the shortest way to build strings of every needed length starting from sisN
and using t
, D
, P
(permutations, works like a factorial), and Q
(substrings, works like n*(n+1)/2). I also realized that some values could be built more efficiently by working directly on numbers rather than strings, so isN
is 1, DisN
is 2, iDsisN
is 11 (double the string "1" and read that as a number) and so on... those values were not too many, so I just hardcoded them as alternatives and kept for each the shortest between the hardcoded string and the bruteforced one.
Only after I did all that I realized that I didn't have a way to combine different characters into an output string. Strings are just lists of characters, and e
can build a list of two arguments, but to build longer lists I would need :
...
This time I was saved by J
, join, which (among other things) can take a value and a list and insert that value between each pair in the list. If I want to concatenate three strings a b c I can do it with Jbeac
. The script does this recursively starting from the desired output by choosing b
as a single central element and a
and c
as the two halves separated by b
. This was my first attempt an miraculously it worked (if the length of the string was different I could have to join only two strings together, but this doesn't happen here). I have tried other ways to compose the string, but this remains the shortest working result I could produce.
Pip, 102 bytes
ndzshezsaidyutzthatxszhiswxPB AoADtYSTfYDQUWyRMsYyH U UoEoOPOAZkPB CxPBPOAZyRDQzsRDQzkRDQzCxRDQzPIRMXD
Explanation
Eagle-eyed readers will have noticed that the code begins with all the lowercase letters from the target string, plus a few others sprinkled in. We'll get back to that in a minute. For now, Pip treats them as no-ops, except the last one:
xPB AoADt
Ao ; ASCII code of "1" (49)
ADt ; Absolute difference with 10 (39)
xPB ; Push this result onto variable x (initially "")
This sets x
to 39, the ASCII code of '
. (Trick borrowed from Shaggy's Japt answer.)
YSTf
f ; The main function
ST ; Stringify
Y ; Yank into y variable
Stringifying the main function formats the code and wraps it in curly braces. This is the result:
"{n; d; z; s; h; e; z; s; a; i; d; y; u; t; z; t; h; a; t; x; s; z; h; i; s; w; x PB ((A o) AD t); YP (ST f); Y (DQ (UW (y RM s))); Y (y H ((U (U o)) E o)); O (PO AZ); (k PB (C x)) PB (PO AZ); (((y R (DQ z); s) R (DQ z); k) R (DQ z); (C x)) R (DQ z); (PI RM XD)}"
From here, we can extract the leading run of lowercase letters:
YDQUWyRMsYyH U UoEo
yRMs ; y with spaces removed
UW ; Unweave into two every-other-character strings
DQ ; Dequeue the last one, which has the letters in it
Y ; Yank that string into y
U Uo ; Increment o twice (was originally 1, now is 3)
Eo ; Take that value to the power of o (27)
yH ; Get that many characters from the start of y
Y ; Yank that string into y
Now y
is "ndzshezsaidyutzthatxszhiswx"
.
OPOAZ
AZ ; Uppercase alphabet
PO ; Pop the first character ("A")
O ; Output it without a newline
Outputting the initial A
separately is cheaper than making it part of the string.
kPB CxPBPOAZ
k ; Take k (initially ", ")
PB ; Push this onto it:
Cx ; Char(39) ("'")
PB ; Then push this onto it:
POAZ ; Pop the first character from AZ ("B")
Finally:
yRDQzsRDQzkRDQzCxRDQzPIRMXD
; z is preinitialized to the lowercase alphabet
yR ; In y, replace
DQz ; character dequeued from z ("z")
s ; with space
R ; Replace
DQz ; character dequeued from z ("y")
k ; with k (", 'B")
R ; Replace
DQz ; character dequeued from z ("x")
Cx ; with char(39) ("'")
R ; Replace
DQz ; character dequeued from z ("w")
; with:
PI ; Pi
XD ; with digits
RM ; removed (".")
This expression gives us the rest of our target string, which is autoprinted.
80186 machine code + DOS, 91 bytes
Text version:
hm j j PPjzjzjgaAAA JSJJ RU Sq ReAA JdJJJ RfiJElK JEiS GtI And she said But that s his
Text version, with tabs (code 9) replaced by 9
and spaces (code 32) replaced by *
:
hm9j9j9PPjzjzjgaAAA9JSJJ9RU9Sq9ReAA9JdJJJ9RfiJElK9JEiS*GtI*And*she*said***But*that*s*his***
Hexdump:
68 6D 09 6A 09 6A 09 50 50 6A 7A 6A 7A 6A 67 61
41 41 41 09 4A 53 4A 4A 09 52 55 09 53 71 09 52
65 41 41 09 4A 64 4A 4A 4A 09 52 66 69 4A 45 6C
4B 09 4A 45 69 53 20 47 74 49 20 41 6E 64 20 73
68 65 20 73 61 69 64 20 20 20 42 75 74 20 74 68
61 74 20 73 20 68 69 73 20 20 20
The machine code appears in a file with extension .com
. When I run it, it prints the required message and then hangs (executing random data).
High-level explanation on what it does:
- Initializes registers with constant values
- Replaces spaces in the message by the required special symbols (
,'.$
) - Patches the code to generate the
int 21
instruction, which prints the message - Calls DOS
Assembly code (can be compiled with tasm
):
my_bp equ 7ah
my_si equ 7ah
my_di equ 67h
my_msg equ 13bh
.model tiny
.code
.startup
.186
org 100h
push 96dh ; ax (ah = 0; al = don't care, but see below)
push 9 ; cx
push 9 ; dx
push ax ; bx = don't care
push ax ; don't care
push my_bp
push my_si
push my_di
popa
inc cx
inc cx
inc cx
or [bp+si+my_msg-my_bp-my_si+12], cx ; ,
dec dx
dec dx
or [bp+si+my_msg-my_bp-my_si+14], dx ; '
or [bp+di+my_msg-my_bp-my_di+23], dx ; '
or [bp+si+my_msg-my_bp-my_si+30], dx ; '
inc cx
inc cx
or [bp+si+my_msg-my_bp-my_si+29], cx ; .
dec dx
dec dx
dec dx
or [bp+si+my_msg-my_bp-my_si+31], dx ; $
; 0x2049 * 0x4b6c = 0x98301cc
; So this sets cx to 1cc (a temporary constant used to patch code)
imul cx, [bp+si+my_msg-my_bp-my_si-2], 4b6ch
; 0x1cc | 0x2049 = 0x21cd (the instruction which calls DOS int 21)
; Here ah = 9 ("print" mode)
or [bp+si+my_msg-my_bp-my_si-2], cx
; At address 101, there is the constant 96d, which was loaded into ax
; 0x96d * 0x7447 = 0x448013b
; So the following sets dx to 13b (adddress of the message)
imul dx, [bp+di+101h-my_bp-my_di], 7447h
int21:
dw 2049h
db 'And she said But that s his '
end
It uses the popa
instruction to pop all registers, because regular pop
cannot fill all needed registers (e.g. pop di
is a forbidden opcode).
Addresses of bytes to patch are in the range 0x100...0x160. By luck, they can be represented as a sum of 3 bytes with allowed values:
- 0x7a in
bp
- 0x7a or 0x67 in
si
ordi
- Immediate value
Patching of bytes in the message works by doing logical OR
on 0x20 (space character) and a small constant (4, 7, 12 or 14). The small constant is obtained by initializing cx
and dx
to 9 (tab character) and doing INC
or DEC
as needed.
Patching of code uses the IMUL
instruction. I found the needed 16-bit constants to multiply using brute-force search.
Finally, the address of the message (0x13b) is obtained by multiplication. To save space, I took one of the constants from one of the instructions, which contains an immediate value 0x96d
. Here the 9
part chooses a DOS print function, and the 6d
part is a free parameter. It turns out that 6d
is the only possibility which can give 0x13b after multiplication.
Disassembly of the code part:
06BA:0100 686D09 PUSH 096D
06BA:0103 6A09 PUSH +09
06BA:0105 6A09 PUSH +09
06BA:0107 50 PUSH AX
06BA:0108 50 PUSH AX
06BA:0109 6A7A PUSH +7A
06BA:010B 6A7A PUSH +7A
06BA:010D 6A67 PUSH +67
06BA:010F 61 POPA
06BA:0110 41 INC CX
06BA:0111 41 INC CX
06BA:0112 41 INC CX
06BA:0113 094A53 OR [BP+SI+53],CX
06BA:0116 4A DEC DX
06BA:0117 4A DEC DX
06BA:0118 095255 OR [BP+SI+55],DX
06BA:011B 095371 OR [BP+DI+71],DX
06BA:011E 095265 OR [BP+SI+65],DX
06BA:0121 41 INC CX
06BA:0122 41 INC CX
06BA:0123 094A64 OR [BP+SI+64],CX
06BA:0126 4A DEC DX
06BA:0127 4A DEC DX
06BA:0128 4A DEC DX
06BA:0129 095266 OR [BP+SI+66],DX
06BA:012C 694A456C4B IMUL CX,[BP+SI+45],4B6C
06BA:0131 094A45 OR [BP+SI+45],CX
06BA:0134 6953204774 IMUL DX,[BP+DI+20],7447
06BA:0139 CD21 INT 21 (after the code patches itself)
Fun fact: Normally, I would use offset message
instead of the hard-coded 13bh
, but in this case, because at the time of parsing its address is unknown, tasm generates 16-bit immediate offset, wasting 1 code byte:
06BA:0131 098A4600 OR [BP+SI+0046],CX
BRASCA, 213 bytes
DoluRlugoHoEoDuRxluxluxMgoldUxgollUxgoEoDuRxluxluxMgoholDUmxMgoHoduxduxgoEoEuxhuxgoDuxDuxgoluxluxhumxMgoluxluxDuxgoEoluxluxDuxgoldUxgoholuxluxDuxgoEuxhuxgoDuRxluxluxMgoEoldUxgolDUmxMgoDuRxluxluxMgoduxDuxgoEuxhuxgo
Explanation
At first I wanted to port the ><> answer, before realizing that stack length wont work with only alphabetical characters. That's when I remembered that BRASCA has some nifty things ><> does not have: The g
and u
operators!
Using the lLeEdDhHK
built-ins for pushing numbers, u
to seperate them into individual digits, R
, m
and M
to rotate and shift the stack, x
to discard digits, and then g
to put them back together I can create and output any string using only the alphabet.
Breakdown
DoluRlugoHoEoDuRxluxluxMgoldUxgollUxgoEoDuRxluxluxMgoholDUmxMgoHoduxduxgoEoEuxhuxgoDuxDuxgoluxluxhumxMgoluxluxDuxgoEoluxluxDuxgoldUxgoholuxluxDuxgoEuxhuxgoDuRxluxluxMgoEoldUxgolDUmxMgoDuRxluxluxMgoduxDuxgoEuxhuxgo
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
A| Do
n| luRlugo
d| Ho
| Eo
s| DuRxluxluxMgo
h| ldUxgo
e| llUxgo
| Eo
s| DuRxluxluxMgo
a| ho
i| lDUmxMgo
d| Ho
,| duxduxgo
| Eo
'| Euxhuxgo
B| DuxDuxgo
u| luxluxhumxMgo
t| luxluxDuxgo
| Eo
t| luxluxDuxgo
h| ldUxgo
a| ho
t| luxluxDuxgo
'| Euxhuxgo
s| DuRxluxluxMgo
| Eo
h| ldUxgo
i| lDUmxMgo
s| DuRxluxluxMgo
.| duxDuxgo
'| Euxhuxgo
Actually, 2679 2618 2561 bytes
PPuPuPDDc uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuc buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuck D cHj
I'll golf each character one by one. So far I've golfed up to A
.
Explanation
I'll golf pushing the numbers over time, so I'll only explain k D cHj
for now.
k # Put all the characters into the list
D cH # Push the empty string
j # Join the list using the empty string
ibe, 141 bytes
(edit: I used the wrong command for output lol)
sluyslwwqslwqqslreslwwyslwqtslwqwslreslwwyslpislwqyslwqqslttslreslrpsluuslwwislwwuslreslwwuslwqtslpislwwuslrpslwwyslreslwqtslwqyslwwysltuslrp
I'm glad i made this language a while ago lol.
CJam, 162 bytes
KFmfbcACZbbcDsXbcSFseesicHsXbcEsXbcSFseesicAsXbcIsXbcDsXbcDFmfbcSHAmfbcBsXbceuHseesicGseesicSGseesicHsXbcAsXbcGseesicHAmfbcFseesicSHsXbcIsXbcFseesicSciBbIbcHAmfbc
Each letter is outputted individually and all the source codes are concatenated. The individual codes are:
(1 byte)
S e# Space
'
(6 bytes)
HAmfbc
HA e# Push 17 and 10 17 10
mf e# Factorization 17 [2 5]
b e# Base conversion 39
c e# Convert to char ''
,
(6 bytes)
DFmfbc
DF e# Push 13 and 15 13 15
mf e# Factorization 13 [3 5]
b e# Base conversion 44
c e# Convert to char ',
.
(8 bytes)
SciBbIbc
Sci e# Push space as an integer 32
Bb e# Convert to base 11 [2 10]
Ib e# Convert from base 18 44
c e# Convert to char '.
A
(6 bytes)
KFmfbc
KF e# Push 20 and 15 20 15
mf e# Factorization 20 [3 5]
b e# Base conversion 65
c e# Convert to char 'A
B
(7 bytes)
BsXbceu
Bs e# Push 11 as a string "11" (i.e. [49 49])
Xb e# Convert from base 1 98
c e# Convert to char 'b
eu e# Uppercase 'B
a
(5 bytes)
AsXbc
As e# Push 10 as a string "10" (i.e. [49 48])
Xb e# Convert from base 1 97
c e# Convert to char 'a
The codes for d
, e
, h
and i
work exactly the same way as for a
. The codes are:
DsXbc -> 'd
EsXbc -> 'e
HsXbc -> 'h
IsXbc -> 'i
n
(6 bytes)
ACZbbc
ACZ e# Push 10, 12 and 3 10 12 3
b e# Base conversion 10 [1 1 0]
b e# Base conversion 110
c e# Convert to char 'n
s
(7 bytes)
Fseesic
Fs e# Push 15 as a string "15"
ee e# Enumerate [[0 '1] [1 '5]]
s e# Convert to string "0115"
ic e# Convert to char 's
The codes for t
and u
do the same thing but staring with G
(16) and H
(17):
Gseesic -> 't
Hseesic -> 'u
Most of these codes were found using another Cjam program to brute force all possible outputs for a given formula. If you want to use it, type some formula such as RTsbc
, and it will show you how to get to each possible output by replacing R
, T
and U
in the input by some 1 byte constant.
Mornington Crescent, 20793 bytes
Take Northern Line to Euston
Take Victoria Line to Seven Sisters
Take Victoria Line to Euston
Take Victoria Line to Euston
Take Northern Line to Embankment
Take Northern Line to Embankment
Take District Line to Cannon Street
Take District Line to Embankment
Take Northern Line to Euston
Take Victoria Line to Seven Sisters
Take Victoria Line to Euston
Take Victoria Line to Euston
Take Northern Line to Embankment
Take Northern Line to Embankment
Take District Line to Cannon Street
Take District Line to Embankment
Take District Line to Embankment
Take District Line to Bank
Take District Line to Acton Town
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to Paddington
Take District Line to Notting Hill Gate
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to South Kensington
Take District Line to South Kensington
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to South Kensington
Take Piccadilly Line to South Kensington
Take District Line to Paddington
Take District Line to Paddington
Take District Line to Dagenham East
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to South Kensington
Take District Line to South Kensington
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to South Kensington
Take Piccadilly Line to South Kensington
Take District Line to Paddington
Take District Line to Paddington
Take District Line to Barons Court
Take District Line to Gunnersbury
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Gunnersbury
Take District Line to Mile End
Take District Line to Hammersmith
Take District Line to Mile End
Take District Line to Paddington
Take District Line to Paddington
Take District Line to Southfields
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to South Kensington
Take District Line to South Kensington
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to South Kensington
Take Piccadilly Line to South Kensington
Take District Line to Paddington
Take District Line to Paddington
Take District Line to Hornchurch
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to South Kensington
Take District Line to South Kensington
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to South Kensington
Take Piccadilly Line to South Kensington
Take District Line to Paddington
Take District Line to Paddington
Take District Line to Elm Park
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to South Kensington
Take District Line to South Kensington
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to South Kensington
Take Piccadilly Line to South Kensington
Take District Line to Paddington
Take District Line to Paddington
Take District Line to South Kensington
Take Piccadilly Line to Boston Manor
Take Piccadilly Line to South Kensington
Take Piccadilly Line to South Kensington
Take District Line to Gunnersbury
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Gunnersbury
Take District Line to Mile End
Take District Line to Hammersmith
Take District Line to Mile End
Take District Line to Paddington
Take District Line to Paddington
Take District Line to Notting Hill Gate
Take Central Line to Snaresbrook
Take Central Line to Notting Hill Gate
Take Central Line to Notting Hill Gate
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to South Kensington
Take District Line to South Kensington
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to South Kensington
Take Piccadilly Line to South Kensington
Take District Line to Paddington
Take District Line to Paddington
Take District Line to South Kensington
Take Circle Line to Aldgate
Take Circle Line to South Kensington
Take Circle Line to South Kensington
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to South Kensington
Take District Line to South Kensington
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to South Kensington
Take Piccadilly Line to South Kensington
Take District Line to Paddington
Take District Line to Paddington
Take District Line to South Kensington
Take Piccadilly Line to Ickenham
Take Piccadilly Line to South Kensington
Take Piccadilly Line to South Kensington
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to South Kensington
Take District Line to South Kensington
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to South Kensington
Take Piccadilly Line to South Kensington
Take District Line to Paddington
Take District Line to Paddington
Take District Line to Dagenham Heathway
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to South Kensington
Take District Line to South Kensington
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to South Kensington
Take Piccadilly Line to South Kensington
Take District Line to Paddington
Take District Line to Paddington
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Embankment
Take District Line to Embankment
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Embankment
Take Northern Line to Embankment
Take District Line to Paddington
Take District Line to Paddington
Take District Line to Sloane Square
Take District Line to Gunnersbury
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Gunnersbury
Take District Line to Mile End
Take District Line to Hammersmith
Take District Line to Mile End
Take District Line to Paddington
Take District Line to Paddington
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Embankment
Take District Line to Embankment
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Embankment
Take Northern Line to Embankment
Take District Line to Paddington
Take District Line to Paddington
Take District Line to Bow Road
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to Paddington
Take District Line to Paddington
Take District Line to Upney
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to South Kensington
Take District Line to South Kensington
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to South Kensington
Take Piccadilly Line to South Kensington
Take District Line to Paddington
Take District Line to Paddington
Take District Line to Tower Hill
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to South Kensington
Take District Line to South Kensington
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to South Kensington
Take Piccadilly Line to South Kensington
Take District Line to Paddington
Take District Line to Paddington
Take District Line to Embankment
Take Northern Line to Camden Town
Take Northern Line to Embankment
Take District Line to Embankment
Take District Line to Gunnersbury
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Gunnersbury
Take District Line to Mile End
Take District Line to Hammersmith
Take District Line to Mile End
Take District Line to Paddington
Take District Line to Paddington
Take District Line to Embankment
Take Northern Line to Tooting Bec
Take Northern Line to Embankment
Take Northern Line to Embankment
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to South Kensington
Take District Line to South Kensington
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to South Kensington
Take Piccadilly Line to South Kensington
Take District Line to Paddington
Take District Line to Paddington
Take District Line to Embankment
Take Northern Line to High Barnet
Take Northern Line to Embankment
Take Northern Line to Embankment
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to South Kensington
Take District Line to South Kensington
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to South Kensington
Take Piccadilly Line to South Kensington
Take District Line to Paddington
Take District Line to Paddington
Take District Line to Embankment
Take Northern Line to Archway
Take Northern Line to Embankment
Take Northern Line to Embankment
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to South Kensington
Take District Line to South Kensington
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to South Kensington
Take Piccadilly Line to South Kensington
Take District Line to Paddington
Take District Line to Paddington
Take District Line to Embankment
Take Northern Line to Tooting Broadway
Take Northern Line to Embankment
Take Northern Line to Embankment
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to South Kensington
Take District Line to South Kensington
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to South Kensington
Take Piccadilly Line to South Kensington
Take District Line to Paddington
Take District Line to Paddington
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Embankment
Take District Line to Embankment
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Embankment
Take Northern Line to Embankment
Take District Line to Paddington
Take District Line to Paddington
Take District Line to Embankment
Take Northern Line to South Wimbledon
Take Northern Line to Embankment
Take Northern Line to Embankment
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to South Kensington
Take District Line to South Kensington
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to South Kensington
Take Piccadilly Line to South Kensington
Take District Line to Paddington
Take District Line to Paddington
Take District Line to South Kensington
Take Piccadilly Line to Covent Garden
Take Piccadilly Line to South Kensington
Take Piccadilly Line to South Kensington
Take District Line to Gunnersbury
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Gunnersbury
Take District Line to Mile End
Take District Line to Hammersmith
Take District Line to Mile End
Take District Line to Paddington
Take District Line to Paddington
Take District Line to Embankment
Take Northern Line to Hampstead
Take Northern Line to Embankment
Take Northern Line to Embankment
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to South Kensington
Take District Line to South Kensington
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to South Kensington
Take Piccadilly Line to South Kensington
Take District Line to Paddington
Take District Line to Paddington
Take District Line to South Kensington
Take Piccadilly Line to Northfields
Take Piccadilly Line to South Kensington
Take Piccadilly Line to South Kensington
Take District Line to Gunnersbury
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Gunnersbury
Take District Line to Mile End
Take District Line to Hammersmith
Take District Line to Mile End
Take District Line to Paddington
Take District Line to Paddington
Take District Line to Stamford Brook
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to South Kensington
Take District Line to South Kensington
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to South Kensington
Take Piccadilly Line to South Kensington
Take District Line to Paddington
Take District Line to Paddington
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Embankment
Take District Line to Embankment
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Embankment
Take Northern Line to Embankment
Take District Line to Paddington
Take District Line to Paddington
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Victoria Line to Victoria
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Embankment
Take District Line to Embankment
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Embankment
Take Northern Line to Embankment
Take District Line to Paddington
Take District Line to Embankment
Take District Line to Embankment
Take Northern Line to Mornington Crescent
That was an adventure! Brought back memories of living in London and riding the London Underground!
This was my first real Mornington Crescent program, so I'm sure there's room for golfing it some more!
Since the problem statement calls for alphabetical characters only, there are a few stations that would have been useful, that I couldn't visit, for example Chalfont & Latimer, which does multiplication. I had to make do with just addition from Upminster.
Also, some of the punctuation characters appear in station names (e.g. Earl's Court contains a single-quote), but I couldn't use that either for the same reason, so all punctuation marks had to be constructed from Unicode by visiting Charing Cross.
Explore related questions
See similar questions with these tags.
- The Overflow Blog
-
-
- Featured on Meta
-
-
Linked
Related
Hot Network Questions
- How loud were the top-of-the-range propeller aircrafts like the Lockheed Constellation when commercial jet travel appeared?
- Eleven Special Flashcards
- Is it commonplace/acceptable for university professors to not teach Evolutionary Biology based on their religious beliefs?
- Why is my 74HC595 working without VCC?
- An SF novel where a very young child escapes being murdered by hiding in the water tank of a toilet
- If the police observe evidence of a different crime while in "hot pursuit" can they act on it?
- Is the six million dollar hut challenge real?
- How to identify process' serving 127.0.0.53:53 and 127.0.0.54:53?
- How Does Code Reuse Work at NASA
- Why not use the "age" tool for encrypted backups?
- What are the consequences of allowing breaking/returning from every statement?
- Can clerics create holy water with the core rules?
- Novel with fog on an alien world and a labyrinth
- What are these orange and green solid circles painted on a taxiway?
- How can I secure an old iron gate with a padlock?
- char2path not loadable?
- In Euclid's Elements, Book I, Proposition 47, Interpretation in terms of areas
- Can Trump sue South Park?
- On Debian, XFS, I can edit a file of another user with permissions 644 without ACL
- Visa Free Transit Facility (VFTF): Indian passport but resident in Saudi Arabia
- The root neighborhood representation
- Ivy Vine Transfer
- Free enriched category on an enriched quiver
- What is known about the third time derivate of the expansion of the Universe?
a-zA-Z
. In theory I could usew
rite andE
val to create the necessary instructions, but none of+-*,%'"
can be constructed without using (at least) one of+-*,%'"0-9
. \$\endgroup\$(programmer-of (language 'lisp))
dislikes this. \$\endgroup\$