domenica 27 aprile 2025

Il codice binario Yang e Yin

Se considero i principi taoista dello Yang e dello Yin come un codice binario, 1 e 0, come possiamo utlizzarli per fare un programma?

***


Bellissima domanda!

Se consideriamo i principi Yang e Yin come rispettivamente 1 e 0 — cioè presenza e assenza, attività e passività — stiamo già, di fatto, pensando in termini binari, proprio come funziona l'informatica.


In pratica, potremmo usare Yang/Yin come base concettuale per:


rappresentare dati (una sequenza di 1 e 0 = una sequenza di Yang e Yin)


prendere decisioni (ramificazioni logiche: se Yang → fai A, se Yin → fai B)


costruire algoritmi basati su "equilibri" o "flussi" fra stati opposti



Facciamo un esempio semplice:

Supponiamo di voler creare un programma che "vive" seguendo il bilanciamento tra Yin e Yang. Quando ci sono troppi Yang consecutivi, il sistema introduce Yin per bilanciare, e viceversa.


In pseudocodice:


Inizia con una sequenza casuale di Yang (1) e Yin (0).


Per ogni passo:

    Conta quanti Yang e Yin consecutivi hai.

    Se ci sono più di 3 Yang consecutivi:

        Inserisci uno Yin.

    Se ci sono più di 3 Yin consecutivi:

        Inserisci uno Yang.


Tradotto in Python, una prima bozza potrebbe essere:


import random


# Rappresentiamo Yang come 1 e Yin come 0

sequenza = [random.choice([0, 1]) for _ in range(10)]


print("Sequenza iniziale:", sequenza)


bilanciata = []

count = 1


for i in range(1, len(sequenza)):

    bilanciata.append(sequenza[i-1])


    if sequenza[i] == sequenza[i-1]:

        count += 1

    else:

        count = 1


    if count >= 3:

        bilanciata.append(1 - sequenza[i]) # Introduciamo l'opposto

        count = 1 # Resettiamo il contatore


bilanciata.append(sequenza[-1])


print("Sequenza bilanciata:", bilanciata)


Risultato: il programma genera una danza continua tra Yin e Yang, senza che uno prevalga troppo sull’altro, proprio come insegna il Tao.



---


Volendo possiamo andare ancora oltre, ad esempio:


Creare programmi evolutivi basati su mutazioni Yin/Yang.


Simulare cicli naturali (giorno/notte, espansione/contrazione).


Costruire intelligenze artificiali che imparano "meditando" su stati di equilibrio dinamico Yin/Yang.




---


Ti interessa che ti proponga anche un esempio più avanzato? Tipo un pi

ccolo automa taoista che cerca spontaneamente il proprio equilibrio?

***

Immagina l' automa taoista.

***

Fantastico, andiamo a creare il piccolo automa taoista!

L'idea sarà questa:


L'automa ha uno stato interno fatto di Yin (0) e Yang (1).


A ogni passo decide se mantenere il suo stato o cambiarlo, cercando di rimanere in equilibrio.


Se tende troppo verso Yin o verso Yang, cerca naturalmente di riequilibrarsi.




---


Ecco il programma in Python:


import random


class AutomaTaoista:

    def __init__(self, stato_iniziale=None):

        # Stato: 0 = Yin, 1 = Yang

        if stato_iniziale is None:

            self.stato = random.choice([0, 1])

        else:

            self.stato = stato_iniziale

        

        self.storico = [self.stato]

        self.bilancio = {0: 1 if self.stato == 0 else 0,

                         1: 1 if self.stato == 1 else 0}


    def passo(self):

        yin = self.bilancio[0]

        yang = self.bilancio[1]


        # Se Yin e Yang sono bilanciati, scegli casualmente

        if yin == yang:

            nuova_scelta = random.choice([0, 1])

        else:

            # Se sbilanciato, favorisci lo stato opposto

            if yin > yang:

                nuova_scelta = 1 # Più Yin → favorisci Yang

            else:

                nuova_scelta = 0 # Più Yang → favorisci Yin

        

        self.stato = nuova_scelta

        self.storico.append(self.stato)

        self.bilancio[self.stato] += 1


    def mostra_storico(self):

        # Traduciamo in simboli per rendere tutto più "taoista"

        simboli = {0: "〇", 1: "●"}

        return ''.join(simboli[s] for s in self.storico)


# Creiamo l'automa

automa = AutomaTaoista()


# Facciamolo evolvere per 50 passi

for _ in range(50):

    automa.passo()


print("Evoluzione dell'automa taoista:")

print(automa.mostra_storico())



---


Cosa succede?

L'automa evolve in una danza tra 〇 (Yin) e ● (Yang), cercando sempre spontaneamente l'equilibrio. Se si sbilancia troppo verso uno, torna verso l’altro. È una simulazione molto minimalista ma poetica del principio taoista di dinamica degli opposti.



---


Vuoi che ti proponga anche una versione "grafica", tipo con ani

mazione o grafico a onde Yin/Yang?

Potrebbe essere bellissimo! Vuoi?

***

 Si.

***

Ottimo!

Facciamo una versione grafica dell'automa taoista.


Ti propongo di visualizzare l'equilibrio tra Yin e Yang come un'onda che oscilla tra 0 (Yin) e 1 (Yang).


Useremo Matplotlib (una libreria Python molto semplice per grafici).

Se non ce l'hai, puoi installarla con:


pip install matplotlib



---


Ecco il codice aggiornato per l'automa con grafico:


import random

import matplotlib.pyplot as plt


class AutomaTaoista:

    def __init__(self, stato_iniziale=None):

        if stato_iniziale is None:

            self.stato = random.choice([0, 1])

        else:

            self.stato = stato_iniziale

        

        self.storico = [self.stato]

        self.bilancio = {0: 1 if self.stato == 0 else 0,

                         1: 1 if self.stato == 1 else 0}


    def passo(self):

        yin = self.bilancio[0]

        yang = self.bilancio[1]


        if yin == yang:

            nuova_scelta = random.choice([0, 1])

        else:

            if yin > yang:

                nuova_scelta = 1

            else:

                nuova_scelta = 0

        

        self.stato = nuova_scelta

        self.storico.append(self.stato)

        self.bilancio[self.stato] += 1


    def mostra_storico_testuale(self):

        simboli = {0: "〇", 1: "●"}

        return ''.join(simboli[s] for s in self.storico)


    def mostra_grafico(self):

        plt.figure(figsize=(12, 4))

        plt.plot(self.storico, linestyle='-', marker='o', color='purple')

        plt.ylim(-0.5, 1.5)

        plt.yticks([0, 1], labels=["Yin (〇)", "Yang (●)"])

        plt.title("Evoluzione dell'automa taoista")

        plt.xlabel("Tempo")

        plt.ylabel("Stato")

        plt.grid(True, linestyle='--', alpha=0.5)

        plt.show()


# Creiamo l'automa

automa = AutomaTaoista()


# Facciamolo evolvere

for _ in range(100):

    automa.passo()


# Mostriamo la sequenza testuale

print("Evoluzione Testuale:")

print(automa.mostra_storico_testuale())


# Mostriamo la versione grafica

automa.mostra_grafico()



---


Risultato:


Vedrai una linea che sale (Yang) o scende (Yin).


Il movimento non è casuale puro: segue l'istinto di equilibrio!


Visivamente sembra un'onda naturale, un po’ come il battito di un cuore o il respiro.




---


Ti piacerebbe anche una versione ancora più artistica, tipo far disegnare un simbolo Yin-Yang in movimento?

Posso guidarti anche lì! Vuoi?

***

D'accordo.

***

Bellissimo!

Allora facciamo un passo ulteriore: un'animazione artistica dove l'automa taoista disegna un simbolo Yin-Yang che si muove, ispirato alla sua evoluzione.


Idea:


Creiamo un disegno circolare (tipo il Tao, lo Yin-Yang).


Usiamo la sequenza Yin/Yang dell'automa per far pulsare o ruotare il simbolo, simulando il flusso della vita.




---


Prima: Prepara i pacchetti


Oltre a matplotlib, serve anche:


pip install numpy


(se hai già numpy non devi farlo)



---


Ecco il codice completo per disegnare un Tao animato!


import random

import numpy as np

import matplotlib.pyplot as plt

import matplotlib.animation as animation


# Classe dell'automa taoista

class AutomaTaoista:

    def __init__(self, stato_iniziale=None):

        if stato_iniziale is None:

            self.stato = random.choice([0, 1])

        else:

            self.stato = stato_iniziale

        

        self.storico = [self.stato]

        self.bilancio = {0: 1 if self.stato == 0 else 0,

                         1: 1 if self.stato == 1 else 0}


    def passo(self):

        yin = self.bilancio[0]

        yang = self.bilancio[1]


        if yin == yang:

            nuova_scelta = random.choice([0, 1])

        else:

            nuova_scelta = 1 if yin > yang else 0

        

        self.stato = nuova_scelta

        self.storico.append(self.stato)

        self.bilancio[self.stato] += 1


# Funzione per disegnare il simbolo Yin-Yang

def disegna_yin_yang(ax, t, fattore_scalatura=1.0):

    ax.clear()

    ax.set_aspect('equal')

    ax.axis('off')


    theta = np.linspace(0, 2*np.pi, 1000)

    

    # Cerchio esterno

    x = np.cos(theta)

    y = np.sin(theta)

    ax.plot(x, y, color='black')


    # Metà Yin

    theta_half = np.linspace(np.pi/2 + t, 3*np.pi/2 + t, 500)

    ax.fill(np.cos(theta_half), np.sin(theta_half), color='black')


    # Cerchi interni

    ax.fill(0.5*np.cos(theta) + np.cos(t), 0.5*np.sin(theta) + np.sin(t), color='white')

    ax.fill(0.5*np.cos(theta) - np.cos(t), 0.5*np.sin(theta) - np.sin(t), color='black')


    # Piccoli cerchietti

    ax.plot(np.cos(t), np.sin(t), 'o', color='black', markersize=10 * fattore_scalatura)

    ax.plot(-np.cos(t), -np.sin(t), 'o', color='white', markersize=10 * fattore_scalatura)


# Creiamo l'automa

automa = AutomaTaoista()


# Generiamo i passi

for _ in range(100):

    automa.passo()


# Setup dell'animazione

fig, ax = plt.subplots(figsize=(6, 6))


def update(frame):

    stato = automa.storico[frame % len(automa.storico)]

    t = frame * 0.1 # Rotazione lenta

    fattore_scalatura = 1.0 + 0.2 * (1 if stato == 1 else -1)

    disegna_yin_yang(ax, t, fattore_scalatura)


ani = animation.FuncAnimation(fig, update, frames=200, interval=100)


plt.show()



---


Che cosa succede?


Il simbolo Yin-Yang ruota lentamente, in un moto fluido.


La grandezza dei piccoli cerchi dentro cambia leggermente:


Se l'automa è in stato Yang (1), il cerchio si espande.


Se è in stato Yin (0), il cerchio si contrae.



L'equilibrio e il mutamento sono visibili in un modo visivamente rilassante, "meditativo".




---


Se vuoi, possiamo anche:


colorare in modo più psichedelico (sfumature dinamiche Yin-Yang)


introdurre vibrazioni/onde più fluide


salvare l'animazione come 

GIF

Mmmm


Vuoi che ti proponga una versione "super artistica"? (tipo una "danza cosmica" taoista)

Te la preparo volentieri! Vuoi?



 

Nessun commento:

Posta un commento