Amongst the recently-watched films, the two stand-out gems for me were The Manster (1959) a.k.a. The Split:
and The Abominable Dr. Phibes (1971):
I kept the latter until the very end ... and I wasn't disappointed.
The personal blog of Ian Taylor
The mortality rate between age x and (x +1); that is, the probability that a person aged x exactly will die before reaching age (x +1).It is sometimes expressed as a probability multiplied by 100,000. You can plot this for males as a surface with one axis being the age, "x", and the other being the year of observation of "Qx":
The number of survivors to exact age x of 100,000 live births of the same sex who are assumed to be subject throughout their lives to the mortality rates experienced in the 3-year period to which the national life table relates.I've approximated that as a normalised probability:
The number dying between exact age x and (x +1) described similarly to Lx.I used the following formula:
Year=2000, Age=81 approx
Year=1950, Age=31 approx
Year=1940, Age=21 approx
Year=1930, Age=11 approx
Year=1920, Age=1 approx
"One across, nine letters: C-blank-O-blank-S-blank-blank-R-blank" *I've always assumed that running this on the client-side in JavaScript would be far too slow. It turns out I was very wrong; if you're careful with your coding, you can get it running in a browser on a low-end tablet or phone with memory and CPU cycles to spare.
NESS TION ABLE ICAL MENT INGS LESSFor three-letter sequences, the list is:
ING OUS IES ATE TIC TER ISM IST SES INE ION IVEWhile the most common near-end two-letter sequences are:
ED ER ES AL LY AN IC EN IT OR IS ON AR LE IN IA ST ID RA PH UL LA OM IL CH TE CE US UR AT OLUsing these two simple techniques, the 432,852 words can be compressed into a single ASCII string of just over 1.5 million characters. This string can be efficiently converted into a high-performance in-memory data structure within a second on a typical PC.
This date is slightly more likely to fall on a Tuesday, Friday or Sunday (58 in 400 years each) than on Wednesday or Thursday (57), and slightly less likely to occur on a Monday or Saturday (56).Huh? At first I thought this was an obvious mistake; surely the days of the week are evenly distributed. After all, there are 365 or 366 days in a year and 7 days in a week, and these numbers are relatively prime.
"FwCrO+0+0+72"This is split up into a sequence of instructions or commands using a regular expression match:
[The first element of each instruction is always a single upper-case letter. The remaining elements are either lower-case letters usually indicating colours (see the previous post) or signed integers (expressed as strings). Often, the integers represent coordinates. No matter what the aspect ratio of the flag, the top-left corner is always (-120,-120) and the bottom-right is (+120,+120). Two hundred and forty was chosen because it fits into a byte (although that's not important for this JavaScript implementation of the flag renderer) and is highly divisible.
["F", "w"],
["C", "r"],
["O", "+0", "+0", "+72"]
]
Flags({The single argument is an object with ISO-3166 two-letter codes as keys and arrays of two or three elements as values. If the array has three elements, they are:
AD:["Andorra",10/7,"..."],
...
BL:["Saint-Barthelemy","FR"],
...
JP:["Japan",3/2,"FwCrO+0+0+72"],
...
ZW:["Zimbabwe",2,"..."]
});
instructions ::= instruction ...It is therefore trivial to parse these instruction streams using regular expressions. For example, Japan has the following entry:
instruction ::= command argument …
command ::= 'A'..'Z'
argument ::= number | colour
number ::= sign digit ...
sign ::= '+' | '-'
digit ::= '0'..'9'
colour ::= 'a'..'z'
JP:["Japan",3/2,"FwCrO+0+0+72"]The instruction stream can be split into individual instructions using:
instructions.match(/([A-Z][^A-Z]*)/g)This produces an array:
["Fw", "Cr", "O+0+0+72"]These three instructions can be further divided into numbers (which are always preceded with a sign) and single-letter colours:
instruction.match(/.\d*/g)This produces an array for each instruction:
[The first element is thus always an upper-case letter and is used as the key into a map for commands. I'll discuss the meaning of each letter (command) next time. Subsequent elements in the instruction array are arguments to the command: numbers and/or colours. Colours are always lower-case letters:
["F", "w"],
["C", "r"],
["O", "+0", "+0", "+72"]
]
a: #39F light-blueBut for now, we'll finish off the Japanese flag example by expanding the instruction arrays:
b: #00F medium-blue
c: #009 dark-blue
g: #CCC grey
m: #630 brown
n: #000 black
o: #F60 dark-orange
p: #F90 light-orange
r: #F00 bright-red
s: #C00 medium-red
t: #900 dark-red
u: #060 dark-green
v: #090 medium-green
w: #FFF white
y: #FF0 yellow
fill whiteThis would get translated by the JavaScript code in flags.js to the following pseudo-SVG:
colour bright-red
circle +0 +0 +72
svg viewbox="0 0 360 240" xmlns="http://www.w3.org/2000/svg"
g stroke="none" transform="matrix(1.5,0,0,-1,180,120)"
g
rect fill="#FFF" height="240" width="240" x="-120" y="-120" /
ellipse cx="+0" cy="+0" fill="#F00" rx="48" ry="+72" /
/g
/g
/svg