Brain-Teaser 859: Sick transit
From The Sunday Times, 8th January 1978 [link]
The State of Inertia, in a last-ditch effort to revive an ailing economy, has decided to go ahead with the controversial innovation of adding two new digits
POW! (Written ↑)
WHAM! (Written ↓)thus symbolising the stark alternatives facing the nation.
In a massive referendum on the relative merits, the country came down in favour of POW! carrying the greater weight and accordingly WHAM! is interposed in a lower position than POW! among the ten old digits, the usual order of which is retained.
Teething troubles from the consequential change to duodecimal-based arithmetic and to the new values of some of the old digits, are minimised by the free provision to everyone of school-age or over of PEST, an appropriate Pocket Electronic Summary Tabulator.
To enable a check to be made on the correct working of the instruments every PEST comes with the answers to 35 × 64 and 54 × 66, one consisting entirely of the new shapes and the other of neither of them.
What are the two answers ?
This puzzle is included in the book The Sunday Times Book of Brain-Teasers: Book 1 (1980). The puzzle text above is taken from the book.
[teaser859]
Jim Randell 9:49 am on 9 September 2021 Permalink |
Using P for “POW!” and W for “WHAM!”:
If we interpret “interposed” to mean that P and W are inserted between 2 existing symbols, then we find a unique solution.
The following Python program runs in 51ms.
Run: [ @replit ]
from enigma import (subsets, irange, base2int, int2base, join, printf) # categorise a string # 'new' -> entirely composed of new symbols # 'old' -> entirely composed of old symbols # 'mix' -> a mixture of new and old symbols def categorise(s): s = set(s) assert bool(s) if s.issubset('PW'): return 'new' if not s.intersection('PW'): return 'old' return 'mix' # make possible base 12 symbol sets for (w, p) in subsets(irange(1, 9), size=2): syms = list("0123456789") syms.insert(p, 'P') syms.insert(w, 'W') # convert between strings and numbers s2n = lambda s: base2int(s, base=12, digits=syms) n2s = lambda n: int2base(n, base=12, digits=syms) # calculate: A = '35' * '64', B = '54' * '66' A = n2s(s2n('35') * s2n('64')) B = n2s(s2n('54') * s2n('66')) # one is entirely composed of new symbols and one entirely composed of old if set(map(categorise, (A, B))) == {'old', 'new'}: printf("digits 0-11 = {syms}", syms=join(syms)) printf(" 35 * 64 = {A}; 54 * 66 = {B}")Solution: The two sums are: 35 × 64 = 2445 and 54 × 66 = ↓↑↑↓.
The digits from 0 to 11 are represented by:
So the sums are:
However, if we allow W and P to be inserted anywhere (but still with W before P), we find an additional solution using the following digits:
And the sums are:
We can see this additional solution by using the following call to [[
subsets()]] in line 15:LikeLike