CERCA
24-10-2021 17:35

Esercizi settimana 5

da consegnare entro: 31/10/2021

 

 

ESERCIZIO 1

Generatore di uova di Fabergè

Scrivere un programma C che generi uova di Fabergè usando il seguente algoritmo.

Antefatto: La tradizione di regalare uova pasquali decorate fu inaugurata in Russia nel 1885 dallo zar Alessandro III, che da quell’anno commissionò un uovo al suo gioielliere di fiducia, Peter Carl Fabergé, per donarlo alla moglie in occasione della Pasqua. Questa usanza fu portata avanti dal figlio, Nicola II, che gli succedette nel 1894; anzi, da allora il dono fu raddoppiato: un uovo alla moglie e uno alla zarina madre. Fino alla caduta dell’impero russo, nel 1917, furono prodotti una cinquantina di questi veri e propri capolavori dell’arte orafa: ogni uovo, fatto d’oro, pietre preziose e altri materiali pregiati, era decorato con miniature e smalti che riproducevano splendidi motivi ornamentali, e richiedeva circa un anno di lavoro a un abile maestro orafo.


Come generare un uovo di Fabergè

Pickover usò come funzione la somma di due sinusoidi, una dipendente da x e l’altra da y, con stessa frequenza ma diverse fasi; tenne però fissa la griglia di punti sul piano cartesiano, facendo corrispondere direttamente i valori di j e i alle loro ascisse e ordinate, rispettivamente.

Per costruire i campioni di una di queste funzioni, procediamo così:

- prendiamo tre numeri “reali” (in virgola mobile): ω (la pulsazione) scelto a caso nell’intervallo [0.15, 0.80], φ e ψ (le fasi) scelti, ancora casualmente, nell’intervallo [0.0, 1.0] (così suggerisce Pickover, ma si può usare [0, 2π]);

- per ogni i e j, calcoliamo Fji = sin(ω∙i + φ) + sin(ω∙j + ψ).

A questo punto scegliamo a caso un altro numero reale μ nell’intervallo [0.0, 20.0] e un numero intero β tra 128 e 256 e infine calcoliamo
m(i, j) = floor ((β + μ)∙(1.0 + Fji / 2.0)) mod β

Otteniamo così una matrice m(i, j) di interi in [0, β − 1].

Poi ripetiamo questi passi altre due volte, per avere tre di queste matrici da usare come componenti per i tre colori di base dell’immagine finale.

Stampare le 3 matrici ottenute.

Articolo originale dell’autore, A recipe for self-decorating eggs, pubblicato su
Computer Language, Vol. 4, No. 11, novembre 1987, pp. 55-58.

Un breve resoconto si trova nella sezione speciale “Art and Biology” della rivista Leonardo, Vol. 31, No. 4, agosto-settembre 1998, p. 280: Algorithmic Fabergé Eggs via Residue Analysis.

 

 

ESERCIZIO 2

Scrivere un programma C che riceva in ingresso due parole inserite da tastiera. Si consideri che ciascuna parola può contenere al massimo 30 caratteri. Il programma deve essere case sensitive, cioè deve distinguere lettere minuscole da lettere maiuscole e deve essere in grado anche di analizzare numeri, simboli e segni di punteggiatura. Il programma deve sostituire ogni occorrenza della seconda parola nella prima parola con il carattere ’*’. Ad esempio, inserite le parole

abchdfffchdchdtlchd

e

chd

il programma deve visualizzare la parola

ab*fff**tl*

Scrivere due versioni: la prima deve ignorare la presenza della libreria string.h e quindi dovete lavorare esplicitamente su ogni singolo carattere delle stringhe. La seconda deve usare le funzioni della libreria string.h per determinare la lunghezza e per ricercare sotto-stringhe all'interno di una stringa

 

 

PROCEDI CON LA CONSEGNA DEGLI ESERCIZI