sabato 9 aprile 2016

Quesito con la Susi n. 932

Mi ritaglio un po' di blog-tempo per un altro problemino con la Susi.

Siamo in un negozio che vende jeans usati. Un tizio dietro il bancone (forse uno degli intriganti amici di Gianni) le dice che lui, due suoi amici/colleghi e tutte e tre le rispettive mogli hanno incassato 1000€ e se li sono divisi.

Le tre mogli in tutto hanno avuto 396€; ma Giovanna ha avuto 10€ in più di Carla, e Marta ha avuto 10€ più di Giovanna.

Ci informano inoltre che Dario ha preso quanto sua moglie, Tommaso il doppio della sua ed Enrico una volta e mezzo quanto preso dalla sua.

Con chi è sposato Dario?

Ci sono i soliti elementi per poter “convertire” il problema in un sistema di equazioni dal quale possiamo subito ottenere quanto hanno preso le tre mogli.

Infatti dal testo ricaviamo un sistema di tre equazioni (di primo grado) in tre incognite. (C sta per Carla, G per Giovanna, M per Marta):


$$ \begin{eqnarray*} C &+& G &+& M &=& 396 \\ -C &+& G && &=& 10 \\ &-& G &+& M &=& 10 \\ \end{eqnarray*} $$

Inoltre conosciamo le relazioni matematiche tra quanto preso dalle mogli e quanto preso dai mariti. Non sappiamo chi è il marito o la moglie di chi, però possiamo fare delle ipotesi su quali siano le coppie e verificare che l'ipotesi soddisfi anche la prima equazione del testo del quesito, cioè quella che ci dice che la somma deve fare 1000€.

Se E sta per Enrico, T per Tommaso, D per Dario, e mX per “moglie di x”, allora sappiamo anche che:


$$ \begin{eqnarray*} D &=& m_D \\ T &=& 2m_T \\ E &=& 1.5m_E \\ \end{eqnarray*} $$

Non si capisce molto bene perché i mariti abbiano preso di più delle mogli, ma sembra essere coerente con i risultati di diverse indagini secondo le quali gli uomini di solito guadagnano più delle donne, anche a parità di qualifiche e responsabilità.

Avrebbero potuto prendere 165€ a testa e regalare i restanti 10€ a Gianni, che li avrebbe potuti spendere per comprare a Susi un paio di jeans usati1, attillatissimi e possibilmente non neri.

Comunque…

In questo modo arriviamo al risultato. Fatto? … Bene: ora potete proseguire a leggere.

La soluzione

Per risolvere il sistema potremmo usare Maxima, come già fatto con il quesito 925. Ora anche i miei due lettori Susi-dipendenti sanno che in casi come questi Maxima può essere utile per verificare la soluzione… Ma l'ho già usato, come detto… Perciò…

Per questo problema ho scelto il METAFONT, che di sicuro non è nato per scopi simili, a differenza di Maxima. Il METAFONT può essere considerato parte del sistema TeX e serve per “descrivere” la forma grafica dei caratteri di un font. Cioè diciamo che serve per “fare” font. È possibile generare una famiglia intera a partire da un unico programma scritto in modo parametrico (da qui viene l'idea del prefisso meta-, se non ricordo male). L'esecuzione di un programma METAFONT genera delle bitmap alla risoluzione e dimensione richieste2. Donald Knuth, creatore di questi due programmi, ha usato il suo METAFONT per il suo Computer Modern, che infatti è il font “classico” del TeX3.

Anche se può essere pensato come un linguaggio per grafica vettoriale4, un po' come il PostScript, il modo in cui può “descrivere” la grafica fa sì che abbia delle potenzialità sfruttabili anche in altro modo. In effetti è (anche) un linguaggio dichiarativo5, un po' come lo è il Prolog con il quale ho risolto il primo quesito con la Susi apparso su questo blog.

Possiamo sfruttare questo fatto per ottenere subito la soluzione del sistema di equazioni che ci dice quanto hanno preso le mogli.

Per quanto riguarda la seconda parte risolvono tre banalissimi e dispendiosi cicli che “ipotizzano” quali siano le coppie. Assegnate le moglie ai mariti, calcoliamo la parte dei mariti e verifichiamo che la somma di tutti faccia il totale. Più banale di così…

L'output del codice proposto è

This is METAFONT, Version 2.718281 (TeX Live 2012/Debian)
(susi932.mf
Carla=122
Giovanna=132
Marta=142
Dario=122 )
Transcript written on susi932.log.

Poiché 122 è proprio la parte di Carla, concludiamo che Carla è la moglie di Dario.

Il codice METAFONT con qualche commento (in inglese) è il seguente (e come al solito non è un granché, specie nella parte dei cicli annidati — si può fare qualcosa di più elegante? Come al solito molto probabilmente la risposta è sì, ma questo divertimento è lasciato a voi lettori).

(A quanto pare GitHub non capisce che il suffisso .mf sta per METAFONT o non ha un evidenziatore di sintassi per questo linguaggio… Forse è leggermente poco rappresentato sul sito.)


  1. Si legge un cartellino con il prezzo 10€, e un altro con su scritto 50%. Forse con 10€ Gianni può regalare a Susi due jeans, addirittura!

  2. Genera anche il file della “metrica” che serve al TeX stesso per usare il font. Infatti al TeX serve sapere quanto occupano i vari elementi, non la loro forma esatta. Tornando al fatto che generi, alla fine del giro di giostra, delle bitmap, ciò non devrebbe stupirvi: anche i vari “font vettoriali” che avete sul vostro sistema (p.es. i font in formato TrueType vengono convertiti in pixel o punti quando devono essere visualizzati o stampati. I formati moderni in uso sono pensati in modo che l'engine possa generare abbastanza rapidamente i caratteri. Per il METAFONT la generazione di un font ad una certa risoluzione e per una certa dimensione (e per certi parametri) è spesso laboriosa. Sicuramente ciò lo esclude come scelta di formato per i font pratici da usare per il desktop. Invece nell'ambito della stampa non è un grosso problema.

  3. Il METAFONT purtroppo non ha preso piede se non all'interno del mondo TeX, e anche in quel mondo è ormai di fatto scalzato dai formati moderni di font vettoriali. Che io sappia il METAFONT rimane unico nel suo genere. Se nel campo della descrizione dei font non è largamente usato, bisogna dire che linguaggi a lui ispirati (MetaPost e, indirettamente, Asymptote) vengono molto apprezzati per fare grafica — anche se spesso e volentieri sempre all'interno del cortile del TeX.

  4. Per la creazione di font. Il MetaPost allarga i suoi orizzonti alla grafica in generale. (Pure il METAFONT può essere usato per fare grafica in generale, anche se solo in bianco e nero, ma ha delle restrizioni “genetiche” che limitano le sue potenzialità.)

  5. In METAFONT possiamo dire che la distanza tra due punti deve essere pari al doppio della distanza tra altri due punti; che un punto è ruotato (rispetto a un centro) di una certa quantità pari all'angolo che c'è tra una retta orizzontale e una retta passante per certi altri due punti; che vogliamo che sia tracciato un segmento da un punto a un altro determinato dall'intersezione di una certa curva e una certa retta… Cose così implicano che il METAFONT “sappia” risolvere delle equazioni.

2 commenti:

  1. ciao, erano anni che non provavo a risolvere questi problemi, ho provato con carta e penna supportato da excel... ci ho perso un'ora e non capivo perchè 122 se poi la somma dei mariti non dava 604... quando stavo per scrivere alla mia compagna per farmi insultare ( è Fisico delle Particelle, non Tecnico-Gestione_Turistica come me...), poi ho controllato e avevo messo un riferimento a una cella vuota nello spreadsheet... :( tutto sommato mi sento meno ignorante ahahah!! grazie, proverò a risolvere altri QuesitidellaSusi!

    RispondiElimina
  2. Mi fa piacere che un post come questo sia servito da stimolo: provare a risolvere “enigmi” non può far altro che bene.

    RispondiElimina

Sii educato, costruisci con cura le frasi, rifletti prima di pubblicare, evita parolacce e offese dirette, non uscire dal tema, cerca di non omettere la punteggiatura, evita errori ortografici, rileggi quel che hai scritto.