Skip to content
Problemi, algoritmi e coding

Problemi, algoritmi e coding

Le magie dell'informatica

  • Home
  • Capitoli
    • Uno
    • Due
    • Tre
    • Quattro
    • Cinque
  • Errata corrige
  • Oltre il libro
    • Uno
      • Il metodo algoritmico
      • Colora la mappa
      • Colorazione di una mappa: il codice
      • Ordinamento per selezione: il codice
      • Indovina il numero
      • L’algoritmo T3: il codice
      • Ordinamento per fusione: il codice
      • Ricerca esaustiva: il codice
    • Due
      • Le domande a Google
      • Shmoogle
    • Quattro
      • Il metodo dei fattori nascosti: visualizzazione
    • Cinque
      • La macchina di Turing
      • Il gioco dell’imitazione
      • L’algoritmo del percettrone: il codice
      • Lost in translation
      • A proposito di traduttori
    • Video
      • Domande e risposte
      • Errare coding est
  • Il metodo PAC
    • Il rompicapo di Guarini
    • Come funziona il time-lapse
    • Fellini e la crittografia
    • Il problema delle donazioni di reni
  • Lucidi
    • Due
    • Tre
    • Quattro
    • Cinque
  • Parlano di noi
  • Chi siamo
  • Toggle search form

L’algoritmo T3: il codice

L’algoritmo T3: il codice

Questo è il codice Julia dell’algoritmo T3, ovvero il torneo a eliminazione diretta spiegato nel primo capitolo del libro (l’implementazione fa uso della ricorsione per realizzare il tabellone del torneo, come quello mostrato nella Figura 1 del libro).

# Questa funzione realizza il torneo a eliminazione diretta
# chiamato T3 nel libro. La sequenza di valori dei giocatori
# deve contenere un numero di elementi che sia una potenza
# di 2. L'insieme viene suddiviso ricorsivamente in due parti
# uguali fino a quando contiene due soli elementi: a quel
# punto la funzione restituisce il massimo dei due valori.
# Al termine delle due chiamate ricorsive la funzione restituisce
# il massimo dei due valori restituiti dalle chiamate stesse.
function t3( a, sinistra, destra)
  if (sinistra == destra-1)
    if a[sinistra]>a[destra]
      return a[sinistra]
    else 
      return a[destra]
    end
  else
    centro = div(sinistra + destra, 2)
    campionesinistro = t3(a,sinistra, centro)
    campionedestro = t3(a,centro + 1, destra)
    if campionesinistro>campionedestro
      return campionesinistro
    else
      return campionedestro
    end
  end
end

Copyright © 2026 Problemi, algoritmi e coding.

Powered by PressBook WordPress theme