# Enigmatic Code

Programming Enigma Puzzles

## Enigma 1457: Anglo-Italian sums

From New Scientist #2618, 25th August 2007

Within each of these Anglo-Italian sums, digits have been consistently replaced by capital letters, different letters used for different digits. However, the three sums are entirely distinct — a letter need not have the same value in one as in either of the others. No number starts with a zero.

(a) FOUR + FOUR = OTTO
(b) TWO + TRE + FIVE = DIECI
(c) THREE + NOVE = DODICI

What are the numbers represented by OTTO in (a), DIECI in (b), DODICI in (c)?

[enigma1457]

### 3 responses to “Enigma 1457: Anglo-Italian sums”

1. Jim Randell 28 February 2013 at 9:46 am

This Python program uses the [[ `SubstitutedSum()` ]] solver from the enigma.py library. It ouputs the possible solutions for each sum, and counts the number of solutions for each answer. It runs in 276ms.

Run: [ @repl.it ]

```from collections import Counter
from enigma import SubstitutedSum, printf

sums = (
# (a) FOUR + FOUR = OTTO
SubstitutedSum(['FOUR'] * 2, 'OTTO'),
# (b) TWO + TRE + FIVE = DIECI
SubstitutedSum(['TWO', 'TRE', 'FIVE'], 'DIECI'),
# (c) THREE + NOVE = DODICI
SubstitutedSum(['THREE', 'NOVE'], 'DODICI')
)

r = Counter()
for (n, p) in zip('abc', sums):
for s in p.solve():
r[p.result + '=' + p.substitute(s, p.result)] += 1
printf("({n}) {p.result}={r} [{p.text} / {s}]", r=p.substitute(s, p.result), s=p.substitute(s, p.text))

for (k, v) in r.items():
printf("{k} [{v} solutions]")
```

Solution: (a) OTTO = 2552; (b) DODICI = 101626; (c) DIECI = 10730.

• Naim Uygun 28 February 2013 at 11:21 am

Here are the results:
FOUR+FOUR=OTTO:
R O F U T
6 2 1 7 5

TWO+TRE+FIVE=DIECI:
O E I T W R F V D C
6 7 0 8 5 4 9 2 1 3
6 7 0 8 4 5 9 2 1 3
6 7 0 8 5 2 9 4 1 3
6 7 0 8 2 5 9 4 1 3
6 7 0 8 4 2 9 5 1 3
6 7 0 8 2 4 9 5 1 3

THREE+NOVE=DODICI:
E I T H R N O V D C
8 6 9 7 5 4 0 3 1 2
8 6 9 4 5 7 0 3 1 2

2. geoffrounce 13 November 2017 at 5:58 pm

Another SustitutedSum version showing all solutions.

```from enigma import SubstitutedSum as Sum

Sum(['FOUR', 'FOUR'], 'OTTO').go()          # (a) OTTO = 2552

Sum(['TWO', 'TRE', 'FIVE'], 'DIECI').go()   # (b) DIECI = 10730

Sum(['THREE', 'NOVE',], 'DODICI').go()      # (c) DODICI = 101626

'''
OUTPUT
------
FOUR + FOUR = OTTO
1276 + 1276 = 2552 / F=1 O=2 R=6 T=5 U=7

TWO + TRE + FIVE = DIECI
826 + 847 + 9057 = 10730 / C=3 D=1 E=7 F=9 I=0 O=6 R=4 T=8 V=5 W=2
826 + 857 + 9047 = 10730 / C=3 D=1 E=7 F=9 I=0 O=6 R=5 T=8 V=4 W=2
846 + 827 + 9057 = 10730 / C=3 D=1 E=7 F=9 I=0 O=6 R=2 T=8 V=5 W=4
846 + 857 + 9027 = 10730 / C=3 D=1 E=7 F=9 I=0 O=6 R=5 T=8 V=2 W=4
856 + 827 + 9047 = 10730 / C=3 D=1 E=7 F=9 I=0 O=6 R=2 T=8 V=4 W=5
856 + 847 + 9027 = 10730 / C=3 D=1 E=7 F=9 I=0 O=6 R=4 T=8 V=2 W=5

THREE + NOVE = DODICI
94588 + 7038 = 101626 / C=2 D=1 E=8 H=4 I=6 N=7 O=0 R=5 T=9 V=3
97588 + 4038 = 101626 / C=2 D=1 E=8 H=7 I=6 N=4 O=0 R=5 T=9 V=3
'''
```

This site uses Akismet to reduce spam. Learn how your comment data is processed.