A small neural network that decides whether a number is Numberwang.

The whole model is a 1.8 MB JSON file and the inference code is about 100 lines of pure Python standard library — no PyTorch, no NumPy, nothing to install. Clone it and run it.

$ python3 numberwang.py 22

22... THAT'S NUMBERWANG! (confidence: 99.3%)

$ python3 numberwang.py "45 - 44"

45 - 44... That's Wangernumb! Rotate the board! (confidence: 100.0%)

$ python3 numberwang.py "hello how are you"

hello how are you... That's not even a number. It can never be Numberwang. (confidence: 100.0%)git clone https://github.com/GraafHenk/numberwang

cd numberwang

python3 numberwang.py 22Run it with no arguments for an interactive session:

$ python3 numberwang.py

Welcome to Numberwang! (ctrl-c to stop playing Numberwang)

> zweiundzwanzig

zweiundzwanzig... THAT'S NUMBERWANG! (confidence: 100.0%)

> shinty-six

shinty-six... That's not Numberwang. (confidence: 100.0%)Requires Python 3.8 or newer. That's the only requirement.

from numberwang import load_model, wang_probabilities

model = load_model("model.json")

probs = wang_probabilities(model, "forty-seven")

# [p_not_numberwang, p_numberwang, p_not_a_number, p_wangernumb]

verdict = max(range(4), key=probs.__getitem__)A number's wangness is a property of the number, not the language it

is said in: four, vier, quatre and cuatro all get the same verdict.

chars → Embedding(32) → Conv1d(128, k3) → ReLU

→ Conv1d(128, k3) → ReLU → global max pool

→ Linear(128) → ReLU → Linear(4) → softmax

80,804 parameters. The network reads characters directly — there is no

tokenizer, no normalizer and no rules engine at inference. Digits,

operators, canon verdicts and the eleven languages are all held in the

weights, and model.json contains the lot.

A hosted version runs on Hugging Face Spaces. To run the same demo locally:

pip install -r requirements.txt

python3 app.pygradio is needed only for the demo. The model itself never needs it.

88.9% over 486 held-out adjudications (macro-F1 0.896), against a ceiling of roughly 98% — about 2% of training labels are inverted, in accordance with long-standing adjudication practice.

Arithmetic on unseen operands is the weak spot, at 44–72%. The

network memorises rather than computes, so small common expressions like

5*2 are reliable while 904 * 3 is an educated guess. If arithmetic

correctness matters, evaluate the expression and hand it the result.

MIT — see LICENSE.

No warranty is expressed or implied as to whether any particular number is, or is not, Numberwang.