Su suggerimento di uno degli autori ho provato ad utilizzare i dati di questo articolo in cui sono presenti dettagliate stratigrafie del Scaglia Toscana
Sono state considerati considerati gli affioramenti Sugame (48 dati Middle Eocene-Lower Oligocene) , Castello di Brolio (251 dati Upper Cretaceous-Lower Oligocene) , Cintoia West (150 dati Upper Cretaceous-Middle Upper Eocene ) , Montegrossi (208 dati) e Lucolena North (Upper Cretaceous--Lower Oligocene 63 dati). Come si vede non tutte le serie ricoprono esattamente lo stesso periodo temporale e le stess formazioni. Si evidenzia che alcune serie non presentano una serie deposizionale continua
In generale tutti i grafici mostrano una curva spezzata con valori di D>1 sulle scale di maggiori dimensioni e valori nettamente inferiori a 1 per le scale di dettaglio. Alle scale maggiori emerge quindi una tendenza alla frattalita' ed autosomiglianza che si perde alle piccola scala
Il motivo di questo andamento e' perche' i cicli tettonici e climatici influenzano solo le scali maggiori (ma potrebbe essere anche un problema di sotto campionamento degli strati meno potenti)
Per smontare il gioco si deve togliere la plastica antiscivolo al di sotto del gioco. Le viti sono nascoste li' ed usando le dita non si riescono ad individuare i fori
Una volta rimossa la parte superiore devono rimuovere i cavi del pulsante superiore, il cavo dello speaker ed il lettore delle carte. I cavi hanno una connessione fast e si smontando semplicemente
si accede quindi alla scheda madre. Al centro si osserva un microcontrollore FCM32F030C8T6, si sono due shift register 74HC959 ed i controller per i motori passo passo ULN2003C
Nella scheda madre e' inserita una SD Card rimuovibile (fermata solo da nastro adesivo trasparente) da 512 Mb formattata Fat32 ed occupata per circa 130 Mb. Immagino che questo sistema permetta di configurare facilmente il dispositivo per diversi mercati con differenti linguaggi
Il contenuto e' costuito in folder (nel mio caso numerati da 005 a 126 piu' una BACK)
In ogni folder ci sono i file wav del gioco. Per esempio nel folder 005 ci sono file wav numerati da 31.wav a 35.wav per la carta Leone. I file wav sono codificato mono 16 bit signed integer PCM, 352 kps, sample 22.05 KHz con campo commento iTunPGAP 0
Inoltre sono presenti uno o piu' file .txt (step.txt stepn.txt e ans.txt, ) con il seguente contenuto
sono presenti anche dei file di lunghezza nulla. Il nome del file e' descrittivo del contenuto della cartella. turtle.txt di lunghezza zero indica che i file .wav e step.txt sono relativi alla carta della tartaruga
in pratica queste le istruzioni per muovere il pennino. Si tratta di coppie di valori interi separati da virgola e le varie coppie sono divise da punti e virgola
Se si plottano le coppie di valori della carta Leone si ha questo risultato
questo invece il tracciato per la barca
Questo e' il programma per visualizzare il file step.txt come un disegno
importmatplotlib.pyplotasplt
importos
defparse_scribbles(data_string):
"""
Parsa la stringa di dati nel formato '!<tipo>#0,0,0,0#x1,y1;x2,y2;...'
e restituisce una lista di dizionari, ognuno contenente il tipo e le coordinate.
"""
scribbles= []
# Rimuovi spazi e dividi i blocchi principali per '!'
blocks=data_string.strip().split('!')
forblockinblocks:
ifnotblock.strip():
continue
# Tenta di dividere il blocco in [tipo], [info non usate], [coordinate]
parts=block.split('#')
iflen(parts) <3:
continue
try:
# Il tipo è il primo carattere del blocco (e.g., '0' o '1')
scribble_type=int(parts[0].strip())
coords_string=parts[2]
exceptValueError:
# Salta se il tipo non è un numero valido
continue
# Dividi la stringa delle coordinate per ';' per ottenere i singoli punti
points_str=coords_string.split(';')
x_coords= []
y_coords= []
forpoint_strinpoints_str:
ifnotpoint_str.strip():
continue
try:
# Dividi x e y per ','
x, y=map(int, point_str.split(','))
x_coords.append(x)
y_coords.append(y)
exceptValueError:
# Salta se un punto non è nel formato 'x,y' valido
marker=None, # Non mostrare i singoli punti per non appesantire il plot
linestyle='-',
linewidth=2,
label=label_to_use)
plotted_types.add(scribble_type)
# Inverti l'asse Y perché le coordinate delle immagini spesso hanno Y=0 in alto
plt.gca().invert_yaxis()
# Imposta un rapporto di aspetto uguale per evitare distorsioni (disegno non stirato)
plt.gca().set_aspect('equal', adjustable='box')
# Aggiungi titoli e legenda
plt.title('Visualizzazione Disegno da File TXT')
plt.xlabel('Coordinata X')
plt.ylabel('Coordinata Y')
ifplotted_types:
plt.legend(loc='best')
plt.grid(True, linestyle='--', alpha=0.6)
plt.show()
# --- Esecuzione Principale ---
file_name='step.txt'
# 2. Leggi il file di input
try:
withopen(file_name, 'r') asf:
file_content=f.read()
exceptFileNotFoundError:
print(f"Errore: File '{file_name}' non trovato.")
exit()
# 3. Parsa e Plotta
iffile_content.strip():
parsed_scribbles=parse_scribbles(file_content)
ifparsed_scribbles:
plot_scribbles(parsed_scribbles)
else:
print("Nessun dato di disegno valido trovato nel file.")
else:
print("Il file è vuoto.")
questo e' il pulsante superiore
questa e' la scheda del lettore delle carte. Si tratta di un lettore ottico con 7 coppie di emettitore/ricevitore .. in linea di principio sono 7 bit quindi in linea di principio sarebbero possibili 128 carte distinte.. il sistema pero' e' simmetrico e non so come vengono gestite le carte messe al contrario
se i mettono le carte controluce si osserva alcune zone opache per la lettura della carte ..le carte non sono simmetriche quindi dovrebbe essere confermato il numero di 128 distinte carte possibili
Facendo un po' di prove ho trovato la regola. Se la carta fa passare luce vale come Bit=1, altrimenti settato Bit=0
La posizione e' la seguente. in pratica i bit si leggono in senso orario partendo da quello piu' significativo in alto a destra
Bit0 Bit6
Bit1 Bit5
Bit2 Bit4
Bit3
Per esempio la carta la lettera P ha la seguente disposizione
1 0 1 1 0 0 1
ricostruendo la sequenza si ottiene 101011 che equivale al numero decimale 43. Se sulla scheda SD si va al folder 43 troveremo gli audio appunto della lettera P
Altro esempio con la carta Arancia
0 0 1 0 1 1 0 la sequenza diventa 10110 ovvero decimale 22
i motori stepper sono dei TH24BYJ
l'integrato per la ricarica della batteria e' un ETA9742
connessione per il modulo di ricarica USB-C. La porta USB funziona quindi solo come alimentazione. Sulla scheda madre si sono pero' dei reofori vicino alla scritta HHQUICK_V2.3 che portano direttamente al microntrollore e potrebbe essere la porta di programmazione
ed a questo punto perche' non farlo parlare toscano
In questo post vengono analizzati i valori di torbidita' della sorgente del Frigido (periodo 13/02/2020 01/12/2025 dati orari ) e Carbonera (26/07/2006 21/06/2013 dati ogni 3 minuti ) legate all'acquiferi carsico delle Alpi Apuane
Torbidita' del tempo Frigido
Il parametro Esponente di Hurst e' stato introdotto Hurst, H. E. (1951). Long-term storage capacity of reservoirs.Transactions of the American Society of Civil Engineers, 116(1), 770-808.
E' una misura dell'inerzia del sistema idrogeologico (ovvero capacita' di stoccaggio) e della complessita' della rete carsica. Per i valore di 0.82 e 0.85 trovati si ha che il sistema non e' casuale (H=0.5), non e' deterministicamente semplice ed il comportamento e' correlato su differenti scale di tempo ed e' un sistema che ha "memoria" del proprio passato
Non e' possibile prevedere in maniera completamente deterministica il valore esatto del parametro indagato
Frigido
Con modelli deterministici si avra' un discreto successo su scale di tempo brevi ma non sulla previsione a lunga scadenza. Il passaggio da regime deterministico a frattale e' indicato come tempo di crossover e si individua dai punti di flesso sull'andamento dei punti. Per Carbonera (grafico sottostante) il punto di cross over e' tra 1000 e 10000 unita' che tradotto nel passo di campionamento si arriva ad intervallo da le 5 e le 50 ore
Carbonera
Valori di H vicini ad 1 indicano persistenza nei valori (sia che siano massimi che minimi) e questo puo' incidere anche sul valore massimo e non solo sulle code della distribuzione
La memoria non si esaurisce mai ma ha una legge di decadimento come una potenze (in questo caso 2*0.84 -2 = -0.32
con questa legge e l'esponente calcolate la correlazione ha un peso superiore al 10% fino a 1000 intervalli temporali (rho = 0.10^(1/-0.32)
Il fatto che il calcolo di H risulti sostanzialmente identico su serie con diverso passo di campionamento e' un indice della frattalita' del fenomeno osservato (e' indipendente dalla scala del tempo di osservazione)
il valore di Hurst prossimo ad 1 indica che e' probabile che la torbidita' aumenti nel prossimo lag (passo di campionamento) e' fortemente dipendente da cio' che accade nel lag precedente . Cio' sarebbe in contrasto con il concetto di massimo relativo della curva di scarica ma la statistica deve essere considerata valida al mantenersi delle condizioni al contorno e delle relative forzanti. Con un valore di 0.82 la coda di esaurimento sara' lunga
importpandasaspd
importnumpyasnp
importmatplotlib.pyplotasplt
# --- 1. FUNZIONE DEFINIZIONE per l'ANALISI R/S MANUALE ---
defcompute_rs_data(series):
"""
Calcola la statistica Rango Riscalato (R/S) per una serie temporale.
Restituisce gli intervalli temporali (n) e i valori medi di R/S.
"""
N=len(series)
# Definisce gli intervalli temporali (n) in progressione geometrica fino a N/4