# -*- coding: utf-8 -*-
"""Batterie maison : 30 items, 6 classes, reponse attendue unique."""
# (sequence, attendu, classe)
BATTERY = [
# arithmetiques (f(n-1)+k)
([3, 7, 11, 15, 19], 23, "arith"),
([12, 9, 6, 3], 0, "arith"),
([5, 14, 23, 32], 41, "arith"),
([100, 93, 86, 79], 72, "arith"),
([7, 7, 9, 9, 11, 11], 13, "arith"),
# geometriques (f(n-1).k)
([3, 6, 12, 24, 48], 96, "geo"),
([2, 6, 18, 54], 162, "geo"),
([1, 4, 16, 64], 256, "geo"),
([5, 10, 20, 40, 80], 160, "geo"),
([4, 12, 36, 108], 324, "geo"),
# recurrents d'ordre 2
([1, 1, 2, 3, 5, 8], 13, "recc"),
([2, 2, 4, 8, 32], 256, "recc"),
([1, 2, 5, 12, 29], 70, "recc"),
([4, 6, 10, 16, 26, 42], 68, "recc"),
([3, 5, 8, 13, 21], 34, "recc"),
# entrelaces (mod 2)
([1, 10, 2, 20, 3, 30, 4], 40, "mod2"),
([2, 1, 4, 2, 6, 3, 8], 4, "mod2"),
([5, 100, 10, 200, 15, 300], 20, "mod2"),
([9, 1, 8, 2, 7, 3, 6], 4, "mod2"),
([1, 2, 1, 3, 1, 4, 1, 5], 1, "mod2"),
# polynomiaux (n.n etc., avec decalage)
([1, 4, 9, 16, 25], 36, "poly"),
([0, 1, 4, 9, 16], 25, "poly"),
([4, 9, 16, 25, 36], 49, "poly"),
([2, 6, 12, 20, 30], 42, "poly"),
([0, 2, 6, 12, 20], 30, "poly"),
# mixtes / interessants
([1, 2, 6, 24, 120], 720, "mixte"), # factorielles : f(n-1).n
([2, 3, 5, 9, 17], 33, "mixte"), # f(n-1).2-1
([10, 5, 9, 4, 8, 3], 7, "mixte"), # deux soustractions entrelacees
([1, 11, 111, 1111], 11111, "mixte"), # f(n-1).10+1
([6, 36, 216, 1296], 7776, "mixte"), # geometrique a grands produits
]
assert len(BATTERY) == 30
classes = sorted({c for _, _, c in BATTERY})
print(f"Batterie : {len(BATTERY)} items, classes : {', '.join(classes)}")