Skip to content

Commit

Permalink
sync
Browse files Browse the repository at this point in the history
  • Loading branch information
CuriousCI committed Mar 22, 2024
1 parent 8b9a922 commit 4147738
Show file tree
Hide file tree
Showing 6 changed files with 76 additions and 26 deletions.
6 changes: 6 additions & 0 deletions book/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,12 @@
- [Università 1](./basi-di-dati-2/universita-1.md)
- [Voli Aerei 2](./basi-di-dati-2/voli-aerei-2.md)
- [Accademia 1](./basi-di-dati-2/accademia-1.md)
- [Università 2]()
- [Impiegati e Studenti]()
- [Go]()
- [Esercitazioni Universitarie 1]()
- [Accademia 2](./basi-di-dati-2/accademia-2.md)
- [Officine 1](./basi-di-dati-2/officine-1.md)
- [Travel to the Moon](./basi-di-dati-2/travel-to-the-moon-2.md)
- [Algoritmi II](./algoritmi-2/algoritmi.md)
- [Esercizi](./algoritmi-2/esercizi.md)
Expand Down
20 changes: 12 additions & 8 deletions book/algoritmi-2/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -270,14 +270,18 @@ fn main() {
vec![3],
];

let d = vec![3, 1, 1, 4, 1, 2, 4, 4, 2, 5];
println!("{:?}", daddies(&d, 0));
println!("{:?}", common_daddies(&d, 0, 9));
println!("{:?}", common_daddies(&d, 5, 8));
println!("{:?}", common_daddies(&d, 9, 8));
println!("{:?}", first_common_daddy(&d, 0, 9));
println!("{:?}", first_common_daddy(&d, 5, 8));
println!("{:?}", first_common_daddy(&d, 9, 8));
println!("{:?}", practice::to_dag(&g1));
println!("{:?}", practice::to_dag(&g2));
println!("{:?}", practice::to_dag(&g3));

// let d = vec![3, 1, 1, 4, 1, 2, 4, 4, 2, 5];
// println!("{:?}", daddies(&d, 0));
// println!("{:?}", common_daddies(&d, 0, 9));
// println!("{:?}", common_daddies(&d, 5, 8));
// println!("{:?}", common_daddies(&d, 9, 8));
// println!("{:?}", first_common_daddy(&d, 0, 9));
// println!("{:?}", first_common_daddy(&d, 5, 8));
// println!("{:?}", first_common_daddy(&d, 9, 8));

// 1
// 2 4
Expand Down
36 changes: 18 additions & 18 deletions book/algoritmi-2/src/practice.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ pub fn find_direct_cycle(graph: &[Vec<usize>]) -> Vec<usize> {
vec![]
}

fn is_bipartite(graph: &[Vec<usize>]) -> bool {
pub fn is_bipartite(graph: &[Vec<usize>]) -> bool {
let mut visited = vec![false; graph.len()];
let mut parts = vec![false; graph.len()];

Expand All @@ -15,7 +15,7 @@ fn is_bipartite(graph: &[Vec<usize>]) -> bool {
true
}

fn dfs_bipartite(
pub fn dfs_bipartite(
graph: &[Vec<usize>],
x: usize,
visited: &mut Vec<bool>,
Expand All @@ -38,7 +38,7 @@ fn dfs_bipartite(
true
}

fn cutvertexes(graph: &[Vec<usize>]) -> Vec<usize> {
pub fn cutvertexes(graph: &[Vec<usize>]) -> Vec<usize> {
let mut first_visit = vec![0; graph.len()];
let mut cutvertexes = vec![];
let mut visit = 0;
Expand All @@ -48,7 +48,7 @@ fn cutvertexes(graph: &[Vec<usize>]) -> Vec<usize> {
cutvertexes
}

fn dfs_cutvertexes(
pub fn dfs_cutvertexes(
graph: &[Vec<usize>],
x: usize,
visit: &mut usize,
Expand All @@ -74,33 +74,33 @@ fn dfs_cutvertexes(
back
}

fn to_dag(graph: &[Vec<usize>]) -> Vec<Vec<usize>> {
let mut visited = vec![false; graph.len()];
let mut signed = vec![false; graph.len()];
let mut new_graph = vec![Vec::new(); graph.len()];
pub fn to_dag(graph: &[Vec<usize>]) -> Vec<Vec<usize>> {
let mut new_graph = vec![vec![]; graph.len()];
let mut first_visit = vec![0; graph.len()];
let mut visit = 1;

dag_dfs(graph, 0, &mut visited, &mut signed, &mut new_graph);
dag_dfs(graph, 0, 0, &mut visit, &mut first_visit, &mut new_graph);

new_graph
}

fn dag_dfs(
pub fn dag_dfs(
graph: &[Vec<usize>],
x: usize,
visited: &mut Vec<bool>,
signed: &mut Vec<bool>,
z: usize,
visit: &mut usize,
first_visit: &mut Vec<usize>,
new_graph: &mut [Vec<usize>],
) {
visited[x] = true;
first_visit[x] = *visit;
*visit += 1;

for &y in &graph[x] {
if !visited[y] {
if first_visit[y] == 0 {
new_graph[x].push(y);
dag_dfs(graph, y, visited, signed, new_graph)
} else if !signed[x] {
dag_dfs(graph, y, x, visit, first_visit, new_graph)
} else if first_visit[x] > first_visit[y] && y != z {
new_graph[y].push(x);
signed[x] = true;
}
}
}

22 changes: 22 additions & 0 deletions book/basi-di-dati-2/accademia-2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Accademia 2

I dati di interesse per il sistema sono i docenti universitari, i progetti di ricerca e le
attività dei docenti.
Di ogni docente interessa conoscere il nome, il cognome, il luogo e la data di nasci-
ta, la matricola e la posizione universitaria (una tra: ricercatore, professore associato,
professore ordinario).
Dei progetti interessa il nome, un acronimo, la data di inizio, la data di fine e i
docenti che vi partecipano.
Un progetto è composto da molti Work Package (WP). Oltre al progetto a cui fa
riferimento, del WP interessa sapere il nome, la data di inizio e la data di fine.
Il sistema deve permettere ai docenti di registrare impegni di diverso tipo tra: as-
senza (per chiusura universitaria, malattia, gravidanza, etc.), attività legate a impegni
istituzionali (didattica, ricerca, missione, consiglio di dipartimento, consiglio di area di-
dattica, etc.), attività legate a impegni progettuali (Ricerca e Sviluppo, Dimostrazione,
Management, etc.).
Degli impegni interessa sapere il giorno in cui avvengono, la durata e la tipologia
di impegno con relativa motivazione. Si noti che alcuni impegni (ad es., impegno per
didattica oppure alcuni tipi di assenza) possono occupare solo parte di una giornata
lavorativa, pertanto la loro durata va misurata in giorni; altri impegni ed altre tipologie
di assenza (ad es., assenza per malattia) occupano intere giornate, e la loro durata,
dunque, va misurata in giorni.
11 changes: 11 additions & 0 deletions book/basi-di-dati-2/officine-1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Officine 1

I dati di interesse per il sistema sono quelli relativi alle officine della catena, i relativi dipendenti e direttori, e quelli relativi alle riparazioni dei veicoli.

Di ogni officina della catena interessano il nome, l’indirizzo, il numero di dipendenti, i dipendenti con il relativo numero di anni di servizio ed il direttore.

Dei dipendenti e dei direttori interessano il nome, il codice fiscale, l’indirizzo e il numero di telefono; inoltre dei direttori interessa anche la data di nascita.

Per quanto riguarda le riparazioni dei veicoli, sono dati di interesse il codice, il vei- colo (modello, tipo, targa, anno di immatricolazione e proprietario), la data ed ora di accettazione e quella di riconsegna (per le riparazioni terminate).

Infine, dei proprietari dei veicoli interessano nome, codice fiscale, indirizzo e telefono.
7 changes: 7 additions & 0 deletions book/basi-di-dati-2/travel-to-the-moon-2.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,3 +93,10 @@ classDiagram
```

Requisiti 1 e 4 (crociere e itinerari)

<!-- TODO: disjoint su luna di miele e famiglie -->
<!-- TODO: [1..2] su TipoDestinazione -->
<!-- TODO: nome su itinerario -->
<!-- TODO: ordine delle tappe? stesso giorno? -->
<!-- TODO: Itinerario -- partenza: ora di partenza -->
<!-- TODO: Itinerario -- arrivo: giorno e ora di arrivo dalla partenza -->

0 comments on commit 4147738

Please sign in to comment.