Salvare capra, cavoli e tutto il resto

(Dev n. 143, settembre 2006)

Sento lo sguardo del doctor Brom che mi trapassa. «Se conosco il problema del lupo, della capra e del cavolo? Mi stai prendendo in giro? Non solo è di una banalità assurda, ma ha più di mille anni: lo si può leggere nelle Propositiones ad acuendos juvenes che Alcuino da York scrisse nel nono secolo!»

Avrei dovuto immaginarlo: cercare di ingraziarsi il doctor Brom con un problema è un metodo sicuro per ritrovarsi immediatamente oggetto di scherno. Su una cosa però il fondatore dell’algomatica ha ragione: il problema è davvero antico. Per chi non ne avesse mai sentito parlare, viene esposto il caso di un contadino che sta portando al mercato un lupo, una capra e un cavolo: a un certo punto deve attraversare un fiume, e l’unico modo per farlo è quello di usare una barchetta che, oltre a lui, può portare solo un altro animale o pianta. Il guaio è che se lascia da soli su una sponda capra e lupo, quando ritorna a prenderli si trova solo il lupo che si è fatto un lauto pranzetto; in compenso se lascia soli capra e cavolo è il cavolo che viene mangiato. Mi trattengo dal chiedere al dottor Brom perché mai qualcuno dovrebbe portare al mercato un lupo, per paura di una nuova sua sfuriata: vedo però che si è calmato, e anzi sembra essere tornato di ottimo umore.

«La caratteristica davvero interessante di questo problema è che sembra essere stato scoperto in più parti del mondo: gli etnomatematici hanno scoperto che diverse culture africane narrano un problema simile, cambiando solamente animali e piante da portare. Abbiamo ad esempio volpe, uccello e mais; tigre, pecora e foglie d'erba; sciacallo, capra e fieno; ghepardo, uccello e riso; leopardo, capra e foglie di manioca.»

«Allora la “glocalizzazione” non è un’invenzione dei giorni nostri! Già nei secoli scorsi ogni cultura aveva la sua versione personale dello stesso tema!»

«Proprio così. Ma magari i tuoi lettori potrebbero divertirsi ad applicare l’algomatica a un paio di problemi un poco meno banali di quello originale: in fin dei conti attraversare i fiumi è un’attività di un certo quale interesse.»

Il primo problema vede il nostro contadino tenersi un leopardo, una capra, un topo e un sacco di mais e trovarsi come al solito un fiume che può traghettare portando con sé un solo oggetto o animale alla volta. Non può però lasciare da soli leopardo e capra oppure leopardo e topo, perché il leopardo si mangerebbe l’altro animale; né topo e mais oppure capra e mais, visto che in questo caso sarebbe l’animale a mangiarsi il mais. Quanti e quali viaggi il contadino deve fare per portare sull'altra riva il suo seguito?

Nel secondo problema, il contadino sta ritornando al mercato dove era stato il mese precedente, e porta di nuovo con sé lupo capra e cavolo – beh, non proprio gli stessi: gli affari erano andati bene l’ultima volta. Però ha con sé anche con un leviatano. Questa bestia leggendaria, se non è tenuta a bada dal contadino, si divorerebbe il lupo… a meno che non sia anche presente il cavolo. Infatti gli effluvi della pianta calmano la bestia a tal punto da dimenticarsi persino di mangiare. Come può fare il contadino ad attraversare il fiume?

Un vero seguace dell’algomatica dovrebbe essere in grado di scrivere un singolo programma che permetta di testare varie combinazioni di oggetti e di combinazioni permesse o non permesse, e che quindi possa risolvere entrambi i problemi, sempre per fare meno fatica.

Buona programmazione!