+
+
+
+
+
+
+
+
+
+
+in entrambe le prove le bilance sono in *equilibrio*, cioè la somma dei pesi degli oggetti sul piatto a sinistra è uguale alla somma dei pesi degli oggetti sul piatto a destra.
+Quali tra queste immagini riporta gli oggetti in ordine dal più leggero al più pesante?
+
+
+- [ ] 
+- [ ] 
+- [ ] 
+- [ ] 
+- [x] 
+
+
+> Togliendo due carote da entrambi i piatti della prima bilancia Carol riesce a capire che il peso dei due frutti rimanenti sul piatto sinistro
+> della prima bilancia è uguale a quello di una carota. Sapendo questo, capisce quindi che il peso del piatto sinistro della seconda bilancia è di
+> due carote ed è uguale al peso del frutto sul piatto destro. I frutti che in due pesano come una carota sono i più leggeri, i frutti che
+> pesano come due carote sono i più pesanti e le carote stanno nel mezzo.
+>
+> 
+> 
+
+---
+
+Dopo le pesate di prima, che riportiamo qui per comodità:
+
+
+
+
+
+
+
+
+
+
+
+
+Carol compra altri frutti da pesare e ottiene il risultato che vedi nella prima bilancia qui sotto:
+
+
+
+
+
+
+
+
+
+
+
+
+
+Quante carote deve mettere Carol al posto del punto interrogativo ($\texttt{?}$) per equilibrare l'ultima bilancia?
+
+- [x] $4$
+- [ ] $6$
+- [ ] $8$
+- [ ] $7$
+- [ ] $2$
+
+
+> Con lo stesso ragionamento di prima si capisce che la somma dei pesi dei nuovi frutti è di una carota, perchè il frutto sulla destra della
+> bilancia ne pesa due e una carota è già presente a sinistra. Di conseguenza per mettere la bilancia in equilibrio sul piatto al posto del punto di domanda andranno 4 carote:
+> due per i nuovi frutti, e due per il vecchio frutto.
+>
+> 
+> 
diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/scale1.asy b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/scale1.asy
new file mode 100644
index 0000000..9f506d4
--- /dev/null
+++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/scale1.asy
@@ -0,0 +1,26 @@
+unitsize(1cm);
+access "fruit_rows.asy" as rows;
+access "../../../../asy_library/pictures/scale.asy" as scale;
+access "../../../../asy_library/structures/layout.asy" as layout;
+
+unravel layout;
+unravel rows;
+fruit[] fruits = getfruits(... perm);
+
+picture on_dish_e(){
+ return shift(-5, -1.5)*row(
+ fruits[2].row(2),
+ carrot.row(2)
+ ).drawing();
+}
+
+picture on_dish_f(){
+ return shift(-3.5, -1.5)*carrot.row(3).drawing();
+}
+
+add(
+ scale.drawing(0, 10, 10,
+ scale.dish(on_dish_e()),
+ scale.dish(on_dish_f())
+ )
+);
diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/scale2.asy b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/scale2.asy
new file mode 100644
index 0000000..f7d077e
--- /dev/null
+++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/scale2.asy
@@ -0,0 +1,26 @@
+unitsize(1cm);
+access "fruit_rows.asy" as rows;
+access "../../../../asy_library/pictures/scale.asy" as scale;
+access "../../../../asy_library/structures/layout.asy" as layout;
+
+unravel layout;
+unravel rows;
+fruit[] fruits = getfruits(... perm);
+
+picture on_dish_g(){
+ return shift(-4, -1.5)*row(
+ fruits[2].row(2),
+ carrot.row(1)
+ ).drawing();
+}
+
+picture on_dish_h(){
+ return shift(-2.5, -1.5)*fruits[3].row(1).drawing();
+}
+
+add(
+ scale.drawing(0, 10, 10,
+ scale.dish(on_dish_g()),
+ scale.dish(on_dish_h())
+ )
+);
diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/scale3.asy b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/scale3.asy
new file mode 100644
index 0000000..f9c68ae
--- /dev/null
+++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/scale3.asy
@@ -0,0 +1,28 @@
+unitsize(1cm);
+access "fruit_rows.asy" as rows;
+access "../../../../asy_library/pictures/scale.asy" as scale;
+access "../../../../asy_library/structures/layout.asy" as layout;
+
+unravel layout;
+unravel rows;
+fruit[] fruits = getfruits(... perm);
+
+picture on_dish_a(){
+ return shift(-4.7, -1.5)*row(
+ padding = 0.1,
+ carrot.row(1),
+ fruits[0].row(1),
+ fruits[1].row(1)
+ ).drawing();
+}
+
+picture on_dish_b(){
+ return shift(-2.5, -1.5)*fruits[3].row(1).drawing();
+}
+
+add(
+ scale.drawing(0, 10, 10,
+ scale.dish(on_dish_a()),
+ scale.dish(on_dish_b())
+ )
+);
diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/scale4.asy b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/scale4.asy
new file mode 100644
index 0000000..cd1a530
--- /dev/null
+++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/scale4.asy
@@ -0,0 +1,30 @@
+unitsize(1cm);
+access "fruit_rows.asy" as rows;
+access "../../../../asy_library/pictures/scale.asy" as scale;
+access "../../../../asy_library/structures/layout.asy" as layout;
+
+unravel layout;
+unravel rows;
+fruit[] fruits = getfruits(... perm);
+
+picture on_dish_c(){
+ return shift(-6.5, -1.5)*row(
+ padding = -0.5,
+ fruits[0].row(2),
+ fruits[1].row(2),
+ fruits[3].row(1)
+ ).drawing();
+}
+
+picture on_dish_d(){
+ picture pic;
+ label(pic, scale(13)*Label("\texttt{?}"), (-1, 1), p = black*2);
+ return pic;
+}
+
+add(
+ scale.drawing(0, 10, 10,
+ scale.dish(on_dish_c()),
+ scale.dish(on_dish_d())
+ )
+);
diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/variants.py b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/variants.py
new file mode 100644
index 0000000..ef332a5
--- /dev/null
+++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/variants.py
@@ -0,0 +1,12 @@
+import json
+
+perms = [
+ [0, 1, 2, 3],
+ [0, 1, 3, 2],
+ [3, 1, 2, 0],
+ [1, 3, 0, 2],
+ ]
+
+print(json.dumps([{
+ "perm": perm
+ } for perm in perms]))
diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/contest.mdx b/src/fibonacci-primarie/2024-prima-fase/contest/contest.mdx
new file mode 100644
index 0000000..ce11be6
--- /dev/null
+++ b/src/fibonacci-primarie/2024-prima-fase/contest/contest.mdx
@@ -0,0 +1,19 @@
+
+
+## Sezione 1: pensiero logico-algoritmico
+
+
+
+## Sezione 2: procedimenti procedurali
+
+
+
+
diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/p-5-percorso-ad-ostacoli/6-1-primarie.asy b/src/fibonacci-primarie/2024-prima-fase/contest/p-5-percorso-ad-ostacoli/6-1-primarie.asy
new file mode 100644
index 0000000..dcdfa61
--- /dev/null
+++ b/src/fibonacci-primarie/2024-prima-fase/contest/p-5-percorso-ad-ostacoli/6-1-primarie.asy
@@ -0,0 +1,3 @@
+access "../../../../asy_library/structures/histogram.asy" as histogram;
+unitsize(1cm);
+add(histogram.drawing(scale(1.5)*"primarie", new Label[]{"corretta", "vuota", "scorretta"}, new real[]{1040, 159, 1447}));
diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/p-5-percorso-ad-ostacoli/6-1-secondarie.asy b/src/fibonacci-primarie/2024-prima-fase/contest/p-5-percorso-ad-ostacoli/6-1-secondarie.asy
new file mode 100644
index 0000000..6dbfcf5
--- /dev/null
+++ b/src/fibonacci-primarie/2024-prima-fase/contest/p-5-percorso-ad-ostacoli/6-1-secondarie.asy
@@ -0,0 +1,3 @@
+access "../../../../asy_library/structures/histogram.asy" as histogram;
+unitsize(1cm);
+add(histogram.drawing(scale(1.5)*"secondarie", new Label[]{"corretta", "vuota", "scorretta"}, new real[]{3479, 222, 2144}));
diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/p-5-percorso-ad-ostacoli/6-2-primarie.asy b/src/fibonacci-primarie/2024-prima-fase/contest/p-5-percorso-ad-ostacoli/6-2-primarie.asy
new file mode 100644
index 0000000..fe38cff
--- /dev/null
+++ b/src/fibonacci-primarie/2024-prima-fase/contest/p-5-percorso-ad-ostacoli/6-2-primarie.asy
@@ -0,0 +1,3 @@
+access "../../../../asy_library/structures/histogram.asy" as histogram;
+unitsize(1cm);
+add(histogram.drawing(scale(1.5)*"primarie", new Label[]{"corretta", "vuota", "scorretta"}, new real[]{1046, 213, 1387}));
diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/p-5-percorso-ad-ostacoli/6-2-secondarie.asy b/src/fibonacci-primarie/2024-prima-fase/contest/p-5-percorso-ad-ostacoli/6-2-secondarie.asy
new file mode 100644
index 0000000..3e66317
--- /dev/null
+++ b/src/fibonacci-primarie/2024-prima-fase/contest/p-5-percorso-ad-ostacoli/6-2-secondarie.asy
@@ -0,0 +1,3 @@
+access "../../../../asy_library/structures/histogram.asy" as histogram;
+unitsize(1cm);
+add(histogram.drawing(scale(1.5)*"secondarie", new Label[]{"corretta", "vuota", "scorretta"}, new real[]{3186, 272, 2387}));
diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/p-5-percorso-ad-ostacoli/code.asy b/src/fibonacci-primarie/2024-prima-fase/contest/p-5-percorso-ad-ostacoli/code.asy
new file mode 100644
index 0000000..0ea9212
--- /dev/null
+++ b/src/fibonacci-primarie/2024-prima-fase/contest/p-5-percorso-ad-ostacoli/code.asy
@@ -0,0 +1,23 @@
+access "../../../../asy_library/structures/layout.asy" as layout;
+
+unravel layout; // per evitare di scrivere layout.cose tutto il tempo
+
+unitsize(1cm);
+
+TEXT_SIZE = 2;
+ALIGN = (0, 0.5);
+BLOCK_PADDING = .3;
+
+element P =
+ block_sequence(
+ for_block(
+ element("ripeti 2 volte:"),
+ block_sequence(
+ instr_block(element("avanza")),
+ instr_block(element("avanza")),
+ instr_block(element("salta"))
+ )
+ )
+ );
+
+add(P.drawing());
diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/p-5-percorso-ad-ostacoli/fig.asy b/src/fibonacci-primarie/2024-prima-fase/contest/p-5-percorso-ad-ostacoli/fig.asy
new file mode 100644
index 0000000..c2026e1
--- /dev/null
+++ b/src/fibonacci-primarie/2024-prima-fase/contest/p-5-percorso-ad-ostacoli/fig.asy
@@ -0,0 +1,18 @@
+unitsize(1cm);
+
+access "../../../../asy_library/pictures/carrot.asy" as carrot;
+access "../../../../asy_library/pictures/flat_rock.asy" as flat_rock;
+access "../../../../asy_library/pictures/rock.asy" as rock;
+access "../../../../asy_library/pictures/bunny_polychrome.asy" as bunny_polychrome;
+access "../../../../asy_library/pictures/flag.asy" as flag;
+
+int[] rocks = {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0};
+
+for (int i=0; i
+
+
+
+
+
+
+- [ ] si, raggiunge la bandierina
+- [ ] no, perchè cade sulla *grande roccia* in posizione $4$
+- [x] no, perchè si ferma sulla casella $9$
+- [ ] no, perchè cade sulla *grande roccia* in posizione $8$
+- [ ] si, raggiunge e supera la bandierina arrivando sulla casella $13$
+
+> Ripercorriamo il percorso di Bunny:
+>
+> - Casella iniziale: $1$.
+> - Prima ripetizione:
+> - `avanza`: nuova casella $2$;
+> - `avanza`: nuova casella $3$;
+> - `salta`: nuova casella $5$;
+> - Seconda ripetizione:
+> - `avanza`: nuova casella $6$;
+> - `avanza`: nuova casella $7$;
+> - `salta`: nuova casella $9$.
+>
+> Quindi Bunny si ferma nella posizione $9$, senza raggiungere la bandierina.
+>
+> 
+> 
+
+---
+
+Ricordiamo il percorso ad ostacoli ed il procedimento seguito da Bunny:
+
+
+
+
+
+
+
+
+
+
+Bunny si chiede se cambiando punto di partenza riuscirebbe a raggiungere o superare la bandierina. Per quali di questi punti di partenza Bunny raggiunge la bandierina seguendo il suo procedimento?
+
+
+- [ ] la casella $2$
+- [x] la casella $5$
+- [ ] la casella $7$
+- [ ] la casella $6$
+- [ ] non ci sono punti di partenza da cui raggiunge la bandierina
+
+> Bunny vince partendo dalla casella $5$, in questo modo:
+>
+> - Casella iniziale: $5$.
+> - Prima ripetizione:
+> - `avanza`: nuova casella $6$;
+> - `avanza`: nuova casella $7$;
+> - `salta`: nuova casella $9$.
+> - Seconda ripetizione:
+> - `avanza`: nuova casella $10$, e Bunny vince.
+>
+> Se invece Bunny parte dalla casella $2$, si ferma sulla roccia in posizione $4$, e se parte dalla casella $6$ o dalla casella $7$ si ferma sulla roccia in posizione $8$.
+>
+> 
+> 
diff --git a/src/fibonacci-primarie/2024-prima-fase/header.md b/src/fibonacci-primarie/2024-prima-fase/header.md
new file mode 100644
index 0000000..f63640d
--- /dev/null
+++ b/src/fibonacci-primarie/2024-prima-fase/header.md
@@ -0,0 +1,20 @@
+# Giochi di Fibonacci 2024/2025
+
+## Fase I - Scuole primarie
+
+Questa prova contiene _6 problemi_ da risolvere in _50 minuti_, ed è divisa in due parti:
+- quattro problemi di **pensiero logico-algoritmico**, e
+- due problemi di interpretazione di **procedimenti procedurali** come programmi a blocchi.
+
+In entrambe le parti i problemi sono ordinati per difficoltà crescente.
+**Attento che la difficoltà è soggettiva!** Se stai passando tanto tempo cercando di risolvere un problema, prova a passare ad altri problemi e altre categorie!
+
+## Punteggio
+
+Ogni problema comprende _due domande_, valutate separatamente.
+La prima domanda è **sempre più semplice**, e può aiutare a rispondere alla seconda domanda.
+Le domande sono tutte a **scelta multipla** con 5 opzioni, di cui **solo una** è corretta. Il punteggio che puoi ottenere è:
+
+- 5 punti per una risposta _corretta_;
+- 1 punto per una risposta _non data_;
+- 0 punti per una risposta _sbagliata_.
diff --git a/src/fibonacci-primarie/2024-prima-fase/page.jsx b/src/fibonacci-primarie/2024-prima-fase/page.jsx
new file mode 100644
index 0000000..4592e61
--- /dev/null
+++ b/src/fibonacci-primarie/2024-prima-fase/page.jsx
@@ -0,0 +1,18 @@
+import { NoAuth } from "@olinfo/quizms/student";
+
+import Contest from "./contest/contest.mdx";
+import Header from "./header.md";
+
+export const metadata = {
+ title: "Giochi di Fibonacci 2024/2025 - Fase I - Scuole primarie",
+ description: "Prima fase dei Giochi di Fibonacci 2024/2025 per le scuole primarie",
+};
+
+export default function App() {
+ return (
+
+
+
+
+ );
+}
diff --git a/src/fibonacci-primarie/page.jsx b/src/fibonacci-primarie/page.jsx
index 08805db..3fffd47 100644
--- a/src/fibonacci-primarie/page.jsx
+++ b/src/fibonacci-primarie/page.jsx
@@ -11,6 +11,7 @@ export const metadata = {
};
const editions = [
+ "2024 - Prima fase",
"2023 - Seconda fase",
"2023 - Seconda fase - Demo",
"2023 - Prima fase",
diff --git a/src/fibonacci-secondarie/2024-prima-fase/contest/A11-connetti-stati b/src/fibonacci-secondarie/2024-prima-fase/contest/A11-connetti-stati
new file mode 120000
index 0000000..781cf57
--- /dev/null
+++ b/src/fibonacci-secondarie/2024-prima-fase/contest/A11-connetti-stati
@@ -0,0 +1 @@
+../../../fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/
\ No newline at end of file
diff --git a/src/fibonacci-secondarie/2024-prima-fase/contest/A4-sottrai-potenze b/src/fibonacci-secondarie/2024-prima-fase/contest/A4-sottrai-potenze
new file mode 120000
index 0000000..07524ea
--- /dev/null
+++ b/src/fibonacci-secondarie/2024-prima-fase/contest/A4-sottrai-potenze
@@ -0,0 +1 @@
+../../../fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/
\ No newline at end of file
diff --git a/src/fibonacci-secondarie/2024-prima-fase/contest/P6-distribuisci-carote b/src/fibonacci-secondarie/2024-prima-fase/contest/P6-distribuisci-carote
new file mode 120000
index 0000000..7b3906c
--- /dev/null
+++ b/src/fibonacci-secondarie/2024-prima-fase/contest/P6-distribuisci-carote
@@ -0,0 +1 @@
+../../../fibonacci-primarie/2024-prima-fase/contest/P6-distribuisci-carote/
\ No newline at end of file
diff --git a/src/fibonacci-secondarie/2024-prima-fase/contest/a-20-due-carote b/src/fibonacci-secondarie/2024-prima-fase/contest/a-20-due-carote
new file mode 120000
index 0000000..9e27699
--- /dev/null
+++ b/src/fibonacci-secondarie/2024-prima-fase/contest/a-20-due-carote
@@ -0,0 +1 @@
+../../../fibonacci-primarie/2024-prima-fase/contest/a-20-due-carote/
\ No newline at end of file
diff --git a/src/fibonacci-secondarie/2024-prima-fase/contest/a-21-ordina-conigli b/src/fibonacci-secondarie/2024-prima-fase/contest/a-21-ordina-conigli
new file mode 120000
index 0000000..d62e00a
--- /dev/null
+++ b/src/fibonacci-secondarie/2024-prima-fase/contest/a-21-ordina-conigli
@@ -0,0 +1 @@
+../../../fibonacci-primarie/2024-prima-fase/contest/a-21-ordina-conigli/
\ No newline at end of file
diff --git a/src/fibonacci-secondarie/2024-prima-fase/contest/a-22-pesa-la-frutta b/src/fibonacci-secondarie/2024-prima-fase/contest/a-22-pesa-la-frutta
new file mode 120000
index 0000000..ee7fc2a
--- /dev/null
+++ b/src/fibonacci-secondarie/2024-prima-fase/contest/a-22-pesa-la-frutta
@@ -0,0 +1 @@
+../../../fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/
\ No newline at end of file
diff --git a/src/fibonacci-secondarie/2024-prima-fase/contest/contest.mdx b/src/fibonacci-secondarie/2024-prima-fase/contest/contest.mdx
new file mode 100644
index 0000000..11f5f46
--- /dev/null
+++ b/src/fibonacci-secondarie/2024-prima-fase/contest/contest.mdx
@@ -0,0 +1,19 @@
+
+
+## Sezione 1: pensiero logico-algoritmico
+
+
+
+## Sezione 2: procedimenti procedurali
+
+
+
+
diff --git a/src/fibonacci-secondarie/2024-prima-fase/contest/p-5-percorso-ad-ostacoli b/src/fibonacci-secondarie/2024-prima-fase/contest/p-5-percorso-ad-ostacoli
new file mode 120000
index 0000000..2c3bf7d
--- /dev/null
+++ b/src/fibonacci-secondarie/2024-prima-fase/contest/p-5-percorso-ad-ostacoli
@@ -0,0 +1 @@
+../../../fibonacci-primarie/2024-prima-fase/contest/p-5-percorso-ad-ostacoli/
\ No newline at end of file
diff --git a/src/fibonacci-secondarie/2024-prima-fase/header.md b/src/fibonacci-secondarie/2024-prima-fase/header.md
new file mode 100644
index 0000000..75b01fb
--- /dev/null
+++ b/src/fibonacci-secondarie/2024-prima-fase/header.md
@@ -0,0 +1,20 @@
+# Giochi di Fibonacci 2024/2025
+
+## Fase I - Scuole secondarie
+
+Questa prova contiene _6 problemi_ da risolvere in _50 minuti_, ed è divisa in due parti:
+- quattro problemi di **pensiero logico-algoritmico**, e
+- due problemi di interpretazione di **procedimenti procedurali** come programmi a blocchi.
+
+In entrambe le parti i problemi sono ordinati per difficoltà crescente.
+**Attento che la difficoltà è soggettiva!** Se stai passando tanto tempo cercando di risolvere un problema, prova a passare ad altri problemi e altre categorie!
+
+## Punteggio
+
+Ogni problema comprende _due domande_, valutate separatamente.
+La prima domanda è **sempre più semplice**, e può aiutare a rispondere alla seconda domanda.
+Le domande sono tutte a **scelta multipla** con 5 opzioni, di cui **solo una** è corretta. Il punteggio che puoi ottenere è:
+
+- 5 punti per una risposta _corretta_;
+- 1 punto per una risposta _non data_;
+- 0 punti per una risposta _sbagliata_.
diff --git a/src/fibonacci-secondarie/2024-prima-fase/page.jsx b/src/fibonacci-secondarie/2024-prima-fase/page.jsx
new file mode 100644
index 0000000..37a855c
--- /dev/null
+++ b/src/fibonacci-secondarie/2024-prima-fase/page.jsx
@@ -0,0 +1,18 @@
+import { NoAuth } from "@olinfo/quizms/student";
+
+import Contest from "./contest/contest.mdx";
+import Header from "./header.md";
+
+export const metadata = {
+ title: "Giochi di Fibonacci 2024/2025 - Fase I - Scuole secondarie",
+ description: "Prima fase dei Giochi di Fibonacci 2024/2025 per le scuole secondarie",
+};
+
+export default function App() {
+ return (
+
+
+
+
+ );
+}
diff --git a/src/fibonacci-secondarie/page.jsx b/src/fibonacci-secondarie/page.jsx
index 54cdcbd..acc7f1b 100644
--- a/src/fibonacci-secondarie/page.jsx
+++ b/src/fibonacci-secondarie/page.jsx
@@ -11,6 +11,7 @@ export const metadata = {
};
const editions = [
+ "2024 - Prima fase",
"2023 - Terza fase",
"2023 - Seconda fase",
"2023 - Seconda fase - Demo",