examples/broadcast/02_basic_broadcasting.cat
# Exemple 01 : Broadcasting de base
# Opérations arithmétiques simples sur des listes

print("⇒ Broadcasting de base")

# Addition avec scalaire
nombres = list(1, 2, 3, 4, 5)
print("Nombres:", nombres)

resultat = nombres.[+ 10]
print("Nombres + 10:", resultat)

# Soustraction avec scalaire
resultat = nombres.[- 2]
print("Nombres - 2:", resultat)

# Multiplication avec scalaire
resultat = nombres.[* 3]
print("Nombres * 3:", resultat)

# Division avec scalaire
resultat = nombres.[/ 2]
print("Nombres / 2:", resultat)

print("\n⇒ Broadcasting avec deux listes\n")

# Addition de deux listes
a = list(1, 2, 3)
b = list(10, 20, 30)
print("a:", a)
print("b:", b)

resultat = a.[+ b]
print("a + b:", resultat)

# Multiplication de deux listes
resultat = a.[* b]
print("a * b:", resultat)

print("\n⇒ Enchaînement d'opérations\n")

# Chaîner plusieurs opérations
nombres = list(1, 2, 3, 4, 5)
print("Départ:", nombres)

# (nombres * 2) + 10
resultat = nombres.[* 2].[+ 10]
print("(nombres * 2) + 10:", resultat)

# ((nombres + 1) * 3) - 5
resultat = nombres.[+ 1].[* 3].[- 5]
print("((nombres + 1) * 3) - 5:", resultat)

print("\n⇒ Types mixtes\n")

# Broadcasting avec floats
floats = list(1.5, 2.5, 3.5)
print("Floats:", floats)

resultat = floats.[* 2]
print("Floats * 2:", resultat)

resultat = floats.[+ 0.5]
print("Floats + 0.5:", resultat)