diff --git a/src/asy_library b/src/asy_library index 002f339..c3b4c2b 160000 --- a/src/asy_library +++ b/src/asy_library @@ -1 +1 @@ -Subproject commit 002f3396621d39c18cb18c3f0976adca09bef2bb +Subproject commit c3b4c2b04ba03cad4ab8ff8cf2ea6199072a0ea2 diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/4-1-secondarie.asy b/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/4-1-secondarie.asy new file mode 100644 index 0000000..7335dbf --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/4-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[]{2371, 474, 3000})); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/4-2-secondarie.asy b/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/4-2-secondarie.asy new file mode 100644 index 0000000..6773b28 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/4-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[]{840, 1077, 3928})); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/ex1.asy b/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/ex1.asy new file mode 100644 index 0000000..e1984d6 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/ex1.asy @@ -0,0 +1,24 @@ +import stati; + +unitsize(1cm); + +srand(43); +path[] borders = make_borders(5); +pair[][] farms; +for (int i=0; i<3; ++i) { + farms[i] = make_farms(2); + add(shift(STEP*i,0)*country(borders, farms[i], (i+2), 2)); +} + +pen mydot = linetype(new real[] {0,2}); + +draw(farms[0][0] -- shift(STEP,0)*farms[1][0], heavyred+mydot+6); +draw(farms[0][1] -- shift(STEP*2,0)*farms[2][1], heavyred+mydot+6); +draw(shift(STEP,0)*farms[1][1] -- shift(STEP*2,0)*farms[2][1], heavyred+mydot+6); +draw(farms[0][0] -- shift(STEP,0)*farms[1][1], heavyred+mydot+6); +draw(shift(STEP,0)*farms[1][0] -- shift(STEP,0)*farms[1][1], blue+4); +draw(shift(STEP*2,0)*farms[2][0] -- shift(STEP*2,0)*farms[2][1], blue+4); + +for (int i=0; i<3; ++i) { + add(shift(STEP*i,0)*country_farms(borders, farms[i], (i+2), 2)); +} diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/ex1.svg b/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/ex1.svg new file mode 100644 index 0000000..18dfb92 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/ex1.svg @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/ex2.asy b/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/ex2.asy new file mode 100644 index 0000000..7e3ac29 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/ex2.asy @@ -0,0 +1,27 @@ +import stati; + +unitsize(1cm); + +srand(43); +path[] borders = make_borders(5); +pair[][] farms; +for (int i=0; i<2; ++i) { + farms[i] = make_farms(2); + add(shift(STEP*i,0)*country(borders, farms[i], (i+3), 2)); +} + +void arrdraw(pair a, pair b, pen p) { + draw(a -- (b + unit(a-b)*1.2), p, EndArrow(15)); +} + +pen mydot = linetype(new real[] {0,2}); + +arrdraw(farms[0][0], shift(STEP,0)*farms[1][0], heavyred+mydot+6); +arrdraw(farms[0][1], shift(STEP,0)*farms[1][1], heavyred+mydot+6); +arrdraw(shift(STEP,0)*farms[1][1], farms[0][0], heavyred+mydot+6); +arrdraw(shift(STEP,0)*farms[1][0], shift(STEP,0)*farms[1][1], blue+4); +arrdraw(farms[0][0], farms[0][1], blue+4); + +for (int i=0; i<2; ++i) { + add(shift(STEP*i,0)*country_farms(borders, farms[i], (i+3), 2)); +} diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/ex2.svg b/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/ex2.svg new file mode 100644 index 0000000..65e1247 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/ex2.svg @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/immagine.asy b/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/immagine.asy new file mode 100644 index 0000000..0d8bfcc --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/immagine.asy @@ -0,0 +1,11 @@ +import stati; + +unitsize(1cm); + +path[] borders = make_borders(n); +pair[][] farms; +for (int i=0; i Dato che le strade all'interno dello stesso paese costano poco, conviene intanto collegare le fattorie all'interno dello stesso paese. Per ogni paese servono $\js{s-1}$ fattorie. Ad esempio, colleghiamo la fattoria $1$ con la fattoria $2$, la fattoria $2$ con la fattoria $3$, ..., la fattoria $\js{s-1}$ con la fattoria $\js{s}$). Quindi il costo parziale è di $\js{n*(s-1)}$ carote. +> Adesso dobbiamo anche connettere i paesi tra di loro, e servono altre $\js{n-1}$ strade di costo $2$ carote. Ad esempio, colleghiamo l'ultima fattoria di ogni paese (tranne l'ultimo) con la prima di quello successivo. Il costo totale è $\js{2*(n-1) + n*(s-1)}$ carote. +> +> ![4.1 secondarie](4-1-secondarie.asy) + +--- + +Mettiamo ora che le strade che Tip-Tap costruisce siano a **senso unico**, come in questo esempio: + +![esempio1](ex2.svg) + +Questo piano costa otto carote ($3 \times 2 + 2 \times 1$), e consente di poter andare da ogni fattoria ad ogni altra rispettando i sensi unici. +Come prima, ci sono anche altri piani validi, ciascuno con un costo di sei carote o più. +Ricordando che a _Carotandia_ ci sono $\js{n}$ paesi con $\js{s}$ fattorie: + +![immagine](immagine.asy?v=variants.py) + +Qual è il minimo numero di carote che Tip-Tap deve spendere affinché da ogni fattoria si possa raggiungere ogni altra fattoria, eventualmente percorrendo più strade, ma rispettando sempre i sensi unici? + +- [x] $\js{ans2}$ +- [ ] $\js{wrong2[0]}$ +- [ ] $\js{wrong2[1]}$ +- [ ] $\js{wrong2[2]}$ +- [ ] $\js{wrong2[3]}$ + +> Nel problema precedente, abbiamo formato una linea composta da tutte le $\js{n*s}$ città. Assegniamo lo stesso verso a tutte le strade della linea, in modo che dalla prima città si possa raggiungere l'ultima. Ma in questo modo dall'ultima città non se ne può raggiungere nessun'altra. Per rimediare, creiamo una nuova strada che collega l'ultima città alla prima, pagando un costo aggiuntivo di $2$ carote. +> +> ![4.2 secondarie](4-2-secondarie.asy) diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/stati.asy b/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/stati.asy new file mode 100644 index 0000000..f58bfe7 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/stati.asy @@ -0,0 +1,88 @@ +access "../../../../asy_library/pictures/barn.asy" as barn; + +real STEP = 9; + +pen[] barncols = {red, deepgreen, olive, blue, heavycyan}; +pen[] fieldcols = {palegreen, paleyellow, palegray, palered, 0.5*palegreen+0.5*paleyellow}; + +path wiggline(pair a, pair b) { + int n = 2 + rand()%8; + real r = 2; + pair s = (b-a)/n; + path p = a; + for (int i=1; i 0) { + skips[0] = skips[1] = skips[2] = 0; + while (skips[0] == skips[1] && skips[1] == skips[2]) { + skips[0] = rand()%2; + skips[1] = rand()%2; + skips[2] = rand()%2; + } + skips[1] += 2; + skips[2] += 4; + } + if (s == 3 && skips.length == 0) { + skips[0] = 2; + skips[1] = 3; + skips[2] = rand()%2 + (rand()%2 == 0 ? 0 : 4); + skips = sort(skips); + } + return skips; +} + +int[] invert(int[] v) { + int[] w; + int j=0; + for (int i=0; i<6; ++i) { + if (j < v.length && v[j] == i) j += 1; + else w[w.length] = i; + } + return w; +} + +pair[] make_farms(int s) { + int[] v = gen_skips(s > 3 ? 6-s : s); + if (s >= 3) v = invert(v); + pair[] farms; + for (int p : v) { + int x = p%2; + int y = p#2; + farms[farms.length] = 3*(x, y)+(unitrand(), unitrand())*1.5; + } + return farms; +} + +picture country(path[] borders, pair[] farms, int i, int n) { + picture pic; + path border = borders[i] -- wiggline((-2,9), (STEP-2,9)) -- shift(STEP,0)*reverse(borders[i+1]) -- wiggline((STEP-2,-2), (-2,-2)) -- cycle; + filldraw(pic, border, fieldcols[i], black+5); + return pic; +} + +picture country_farms(path[] borders, pair[] farms, int i, int n) { + picture pic; + for (pair f : farms) { + add(pic, shift(f)*barn.drawing(0.3, barncols[i])); + } + return pic; +} \ No newline at end of file diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/variants.py b/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/variants.py new file mode 100644 index 0000000..9a61712 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/A11-connetti-stati/variants.py @@ -0,0 +1,39 @@ +import json + +variants_input = [ + dict(n=4, s=4), + dict(n=4, s=5), + dict(n=5, s=3), + dict(n=5, s=4), + dict(n=3, s=5), +] + +def check_no_ugual_answer(c, ws): + s = {c} + for w in ws: + s.add(w) + + return len(s) == 5 + + +def build_variant(n, s): + ans1 = n*(s-1) + (n-1) * 2 + ans2 = ans1 + 2 + + wrong1=[ans2]+[n*s, n*s + n + 2, n+s] + wrong2=[ans1]+[n*s, n*s + n + 2, n*s + 4*(s-1)] + + assert check_no_ugual_answer(ans1, wrong1) + assert check_no_ugual_answer(ans2, wrong2) + + return dict( + n=n, + s=s, + ans1=ans1, + wrong1=wrong1, + ans2=ans2, + wrong2=wrong2, + ) + + +print(json.dumps([build_variant(**data) for i, data in enumerate(variants_input)])) diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/3-1-secondarie.asy b/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/3-1-secondarie.asy new file mode 100644 index 0000000..26b0fac --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/3-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[]{2058, 521, 3266})); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/3-2-secondarie.asy b/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/3-2-secondarie.asy new file mode 100644 index 0000000..e25fc4f --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/3-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[]{1102, 982, 3761})); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/4-1-primarie.asy b/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/4-1-primarie.asy new file mode 100644 index 0000000..5d285fa --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/4-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[]{742, 283, 1621})); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/4-2-primarie.asy b/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/4-2-primarie.asy new file mode 100644 index 0000000..7e264a6 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/4-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[]{446, 441, 1759})); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/lavagna1.asy b/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/lavagna1.asy new file mode 100644 index 0000000..70f1ee3 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/lavagna1.asy @@ -0,0 +1,6 @@ +access "../../../../asy_library/pictures/picture_frame.asy" as picture_frame; +access "../../../../asy_library/pictures/bunny_polychrome.asy" as bunny_polychrome; +import "lib.asy" as lib; + +size(300); +add(lavagna(string(a1))); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/lavagna2.asy b/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/lavagna2.asy new file mode 100644 index 0000000..a1e015d --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/lavagna2.asy @@ -0,0 +1,6 @@ +access "../../../../asy_library/pictures/picture_frame.asy" as picture_frame; +access "../../../../asy_library/pictures/bunny_polychrome.asy" as bunny_polychrome; +import "lib.asy" as lib; + +size(300); +add(lavagna(string(a2))); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/lib.asy b/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/lib.asy new file mode 100644 index 0000000..ead5e9f --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/lib.asy @@ -0,0 +1,11 @@ +access "../../../../asy_library/pictures/picture_frame.asy" as picture_frame; +access "../../../../asy_library/pictures/bunny_polychrome.asy" as bunny_polychrome; +picture lavagna(string s) { + picture pic; + add(pic, picture_frame.drawing()); + filldraw(pic, (-1.8,-1.5)--(1.8,-1.5)--(1.8,1.4)--(-1.8,1.4)--cycle, gray(0.15), white); + label(pic, scale(6)*s, (0,0), white); + add(pic, shift((-2.3, -1))*reflect((0,1),(0,-1))*bunny_polychrome.drawing(0.5, bunny_polychrome.tiptap_col)); + add(pic, shift((2.3, -1))*bunny_polychrome.drawing(0.5, bunny_polychrome.allie_col)); + return pic; +} diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/question.md b/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/question.md new file mode 100644 index 0000000..abd26e2 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/question.md @@ -0,0 +1,45 @@ +import variants from "./variants.py"; + +Per esercitarsi nelle sottrazioni, Tip-Tap e Allie hanno inventato un gioco. Hanno scritto il numero $\js{a1}$ sulla lavagna e devono renderlo uguale a $0$ con una sequenza, la più breve possibile, di operazioni di questo tipo: +- diminuire di ${1}$ una qualsiasi cifra del numero; +- sottrarre $\js{b1}$ al numero (se il numero è almeno $\js{b1}$). + +Ad ogni operazione, dopo aver calcolato il risultato, lo sostituiscono al numero scritto sulla lavagna. +Qual è il numero minimo di operazioni che devono fare per rendere il numero pari a $0$, partendo da $\js{a1}$? + +![Lavagna](lavagna1.asy?v=variants.py) + +- [x] $\js{ans1}$ +- [ ] $\js{wrong1[0]}$ +- [ ] $\js{wrong1[1]}$ +- [ ] $\js{wrong1[2]}$ +- [ ] $\js{wrong1[3]}$ + +> Per la proprietà commutativa, l'ordine delle sottrazioni non importa, quindi possiamo ipotizzare di fare prima le operazioni di sottrarre $\js{b1}$, e poi le operazioni per diminuire le cifre di $1$. +> Proviamo a sottrarre $\js{b1}$ un po' di volte ($0, 1, 2, \ldots$), e il numero di mosse rimanenti è la somma delle cifre del numero sulla lavagna. +> Sottraendo $\js{b1}$ il numero giusto di volte, la somma delle cifre diventa particolarmente piccola. +> +> ![4.1 primarie](4-1-primarie.asy) +> ![3.1 secondarie](3-1-secondarie.asy) + +--- + +Tip-Tap e Allie ora hanno scritto un nuovo numero $\js{a2}$ sulla lavagna, e le operazioni consentite sono: +- diminuire di ${1}$ una qualsiasi cifra del numero; +- sottrarre $\js{b2}$ al numero (se il numero è almeno $\js{b2}$). + +Qual è il numero minimo di operazioni che devono fare per rendere il numero pari a $0$, partendo da $\js{a2}$? + +![Lavagna](lavagna2.asy?v=variants.py) + +- [x] $\js{ans2}$ +- [ ] $\js{wrong2[0]}$ +- [ ] $\js{wrong2[1]}$ +- [ ] $\js{wrong2[2]}$ +- [ ] $\js{wrong2[3]}$ + +> Qui $\js{a2}$ è grande, quindi provare a sottrarre $\js{b2}$ finché il numero sulla lavagna non è negativo è troppo lungo. +> Ma possiamo notare che, se troviamo una sequenza con risposta $\js{ans2}$, non ha senso sottrarre $\js{b2}$ più di $\js{ans2}$ volte, e questo accorcia i conti. +> +> ![4.2 primarie](4-2-primarie.asy) +> ![3.2 secondarie](3-2-secondarie.asy) diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/variants.py b/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/variants.py new file mode 100644 index 0000000..699d4b8 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/A4-sottrai-potenze/variants.py @@ -0,0 +1,76 @@ +import json +import random + +variants_input = [dict(s=s) for s in range(5)] + +def check_no_ugual_answer(c, ws): + s = {c} + for w in ws: + s.add(w) + + return len(s) == 5 + +def solve(a, b): + return min( + x + sum(int(digit) for digit in str(a - x * b)) for x in range(a // b + 1) + ) + + +def sumdigits(x): + return sum(map(int, str(x))) + + +def solve_step(a, b): + cur = 1000000000 + i = 0 + while i < cur: + s = sumdigits(a - i * b) + i + cur = min(cur, s) + i = i + 1 + return i + + +def build_variant(s): + random.seed(s) + a_base1 = int(random.choice("45") + random.choice("12")) + b1 = random.randrange(5, 8) + a1 = a_base1 + b1 + ans1=solve(a1, b1) + wrong1 = [ans1-3, ans1+1, ans1+2, ans1+5] + + random.seed(s + 100) + a_base2 = int(random.choice("45") + "0" + random.choice("36")) + b2 = random.randrange(2, 4) * 10 + random.randrange(3, 9) + + nxt_cent = 100 * (a_base2 // 100 + 1) + sol2 = random.randint(2, (nxt_cent - a_base2) // b2) + a2 = a_base2 + b2 * sol2 + ans2=solve(a2, b2) + wrong2 = [ans2-3, ans2+1, ans2+2, ans2+5] + + assert check_no_ugual_answer(ans1, wrong1) + assert check_no_ugual_answer(ans2, wrong2) + + # DEBUG + # steps = [ + # (i, a2 - b2 * i, b2, sumdigits(a2 - b2 * i), i + sumdigits(a2 - b2 * i)) + # for i in range(solve_step(a2, b2)) + # ] + # steps_text = "\n".join( + # [f"({i=}, {x=}, {y=}, {s=}, {ans=})" for i, x, y, s, ans in steps] + # ) + + return dict( + a1=a1, + a2=a2, + b1=b1, + b2=b2, + ans1=ans1, + wrong1=wrong1, + ans2=ans2, + wrong2=wrong2, + # exp=steps_text, + ) + + +print(json.dumps([build_variant(**data) for i, data in enumerate(variants_input)])) diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/P6-distribuisci-carote/5-1-primarie.asy b/src/fibonacci-primarie/2024-prima-fase/contest/P6-distribuisci-carote/5-1-primarie.asy new file mode 100644 index 0000000..2cd8027 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/P6-distribuisci-carote/5-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[]{510, 350, 1786})); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/P6-distribuisci-carote/5-1-secondarie.asy b/src/fibonacci-primarie/2024-prima-fase/contest/P6-distribuisci-carote/5-1-secondarie.asy new file mode 100644 index 0000000..61f7c97 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/P6-distribuisci-carote/5-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[]{1715, 715, 3415})); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/P6-distribuisci-carote/5-2-primarie.asy b/src/fibonacci-primarie/2024-prima-fase/contest/P6-distribuisci-carote/5-2-primarie.asy new file mode 100644 index 0000000..35cb6d6 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/P6-distribuisci-carote/5-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[]{559, 468, 1619})); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/P6-distribuisci-carote/5-2-secondarie.asy b/src/fibonacci-primarie/2024-prima-fase/contest/P6-distribuisci-carote/5-2-secondarie.asy new file mode 100644 index 0000000..a735fed --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/P6-distribuisci-carote/5-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[]{1956, 1067, 2822})); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/P6-distribuisci-carote/code.asy b/src/fibonacci-primarie/2024-prima-fase/contest/P6-distribuisci-carote/code.asy new file mode 100644 index 0000000..fc0fa9c --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/P6-distribuisci-carote/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); + +ALIGN = (0, 0.5); + +element P = + else_block( + element("se è adulto:"), + block_sequence( + if_block( + element("se hai un numero dispari di carote:"), + instr_block(element("mangiane una")) + ), + instr_block(element("dagli metà delle carote rimaste")) + ), + element("altrimenti:"), + instr_block(element("dagli una singola carota")) + ); + +add(P.drawing()); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/P6-distribuisci-carote/fila.asy b/src/fibonacci-primarie/2024-prima-fase/contest/P6-distribuisci-carote/fila.asy new file mode 100644 index 0000000..08175f3 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/P6-distribuisci-carote/fila.asy @@ -0,0 +1,36 @@ +access "../../../../asy_library/pictures/basket_ball.asy" as basket_ball; +access "../../../../asy_library/pictures/soccer_ball.asy" as soccer_ball; +access "../../../../asy_library/structures/layout.asy" as layout; +access "../../../../asy_library/pictures/bunny_polychrome.asy" as bunny_polychrome; + +unravel layout; // per evitare di scrivere layout.cose tutto il tempo + +unitsize(1cm); + +ALIGN = (0.5, 0); + +pen cols[] = {bunny_polychrome.tiptap_col, bunny_polychrome.carol_col, bunny_polychrome.bunny_col, bunny_polychrome.allie_col}; +element bunny(int i, string type) { + picture b = bunny_polychrome.drawing(1, cols[rand() % cols.length]); + if (type == "bambino") + b = scale(0.7)*b; + return column( + padding=0.5, + fill_space=0, + element(b), + column( + element(type) + ), + element("\textbf{"+string(i)+"}", 3) + ); +} + +element[] bunnies; +for (int i = 0; i < seq.length; ++i) { + bunnies.push(bunny(i+1, seq[i] == 1 ? "bambino" : "adulto")); +} + +// Use the row function to arrange the circles +add(row(padding=0.5 ... bunnies).drawing()); + + diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/P6-distribuisci-carote/question.md b/src/fibonacci-primarie/2024-prima-fase/contest/P6-distribuisci-carote/question.md new file mode 100644 index 0000000..7f157d1 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/P6-distribuisci-carote/question.md @@ -0,0 +1,40 @@ +import variants from "./variants.py"; + +Carol ha $\js{k1}$ carote da distribuire agli altri conigli, che sono in fila ad aspettare. + +![I coniglietti in fila](fila.asy?v=variants.py) + +Per ogni coniglio in fila, da sinistra a destra, Carol decide quante carote dargli in base alla seguente regola: + +![Algoritmo](code.asy) + +Quante carote gli rimarranno alla fine, se all'inizio ne ha $\js{k1}$? + +- [x] $\js{ans1}$ +- [ ] $\js{wrong1[0]}$ +- [ ] $\js{wrong1[1]}$ +- [ ] $\js{wrong1[2]}$ +- [ ] $\js{wrong1[3]}$ + +> Se incontra un coniglio adulto, Carol rimane con metà delle carote che aveva, arrotondate per difetto. Altrimenti, Carol perde una carota. +> Ripetendo l'operazione per ogni coniglio presente, si arriva alla soluzione. +> +> ![5.1 primarie](5-1-primarie.asy) +> ![5.1 secondarie](5-1-secondarie.asy) + +--- + +Se alla fine della distribuzione Carol volesse rimanere con almeno $\js{k2}$ carote, quante ne deve avere almeno all'inizio? + +- [x] $\js{ans2}$ +- [ ] $\js{wrong2[0]}$ +- [ ] $\js{wrong2[1]}$ +- [ ] $\js{wrong2[2]}$ +- [ ] $\js{wrong2[3]}$ + +> Possiamo ripercorrere il numero di carote di Carol al contrario (dalla fine all'inizio). +> - Se l'ultimo coniglio è bambino, prima di incontrarlo Carol aveva una carota in più. +> - Se l'ultimo coniglio è adulto, prima di incontrarlo Carol aveva il doppio delle carote, oppure il doppio delle carote più una. Dato che vogliamo minimizzare il numero di carote iniziali, conviene dare a Carol il doppio delle carote (e mai il doppio delle carote più una). +> +> ![5.2 primarie](5-2-primarie.asy) +> ![5.2 secondarie](5-2-secondarie.asy) diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/P6-distribuisci-carote/variants.py b/src/fibonacci-primarie/2024-prima-fase/contest/P6-distribuisci-carote/variants.py new file mode 100644 index 0000000..8cfc128 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/P6-distribuisci-carote/variants.py @@ -0,0 +1,77 @@ +import json + +variants_input = [ # NO SEQUENZE PALINDROME + dict(seq="01101", ans1=5, k2=6), + dict(seq="11001", ans1=5, k2=6), + dict(seq="10011", ans1=6, k2=7), + dict(seq="11010", ans1=7, k2=8), + dict(seq="10110", ans1=6, k2=8), +] + +def invert(x, seq): + for i in seq[::-1]: + if i == "0": + x *= 2 + else: + x += 1 + return x + +def forward(x, seq): + ok = True + for i in seq: + if i == "0": + if x % 2 == 1: + ok = False + x /= 2 + else: + x -= 1 + return x, ok + +def unduplicate(correct, wrong, min=0, check=None): + res = [] + + def ok(x): + return x != correct and x not in res + + for w in wrong: + ww = w + while not ok(ww) and ww >= min: + ww -= 1 + if ww < min: + ww = w + while not ok(ww): + ww += 1 + res.append(ww) + return res + + + +def build_variant(seq, ans1, k2): + k1 = invert(ans1, seq) + wrong1 = [ + ans1 - 1, + k1-len(seq), + ans1 - 2, + ans1 + 2 + ] + + ans2 = invert(k2, seq) + wrong2 = [ + invert(k2-1, seq), + invert(k2+1, seq), + invert(1, seq), + invert(k2*2, seq), + ] + + return { + "k1": k1, + "ans1": ans1, + "wrong1": unduplicate(ans1, wrong1), + "k2": k2, + "ans2": ans2, + "wrong2": wrong2, + "seq": list(map(int, seq)) + } + + +print(json.dumps([build_variant(**data) for i, data in enumerate(variants_input)])) diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-20-due-carote/1-1-primarie.asy b/src/fibonacci-primarie/2024-prima-fase/contest/a-20-due-carote/1-1-primarie.asy new file mode 100644 index 0000000..7a14dcc --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-20-due-carote/1-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[]{1718, 47, 881})); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-20-due-carote/1-2-primarie.asy b/src/fibonacci-primarie/2024-prima-fase/contest/a-20-due-carote/1-2-primarie.asy new file mode 100644 index 0000000..9590a35 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-20-due-carote/1-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[]{917, 161, 1568})); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-20-due-carote/fig.asy b/src/fibonacci-primarie/2024-prima-fase/contest/a-20-due-carote/fig.asy new file mode 100644 index 0000000..cf6fd4a --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-20-due-carote/fig.asy @@ -0,0 +1,28 @@ +unitsize(0.7cm); +access "../../../../asy_library/pictures/bunny_polychrome.asy" as bunny_polychrome; +access "../../../../asy_library/pictures/paint_bucket.asy" as paint_bucket; +access "../../../../asy_library/pictures/carrot.asy" as carrot; +access "../../../../asy_library/pictures/table.asy" as table; +access "../../../../asy_library/structures/layout.asy" as layout; + +unravel layout; // per evitare di scrivere layout.cose tutto il tempo + +unitsize(1cm); + +picture pbunny = reflect((2, 1), (2, 0))*bunny_polychrome.drawing(1.2, bunny_polychrome.bunny_col); +add(pbunny, shift(4.8, -1.4)*carrot.drawing(0.12)); + +picture pcarol = bunny_polychrome.drawing(1.2, bunny_polychrome.carol_col); +add(pcarol, shift(-0.9, -1.4)*reflect((0, 1), (0, 0))*carrot.drawing(0.12)); + +element bunny = element(pbunny); +element carol = element(pcarol); + +element R = row( + padding = 3, + bunny, + element(table.drawing(0.2)), + carol +); + +add(R.drawing()); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-20-due-carote/question.md b/src/fibonacci-primarie/2024-prima-fase/contest/a-20-due-carote/question.md new file mode 100644 index 0000000..9be22d8 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-20-due-carote/question.md @@ -0,0 +1,34 @@ +import variants from "./variants.py"; + +Bunny e Carol pranzano insieme tutti i giorni, portando ciascuno una carota dalla propria scorta personale. +Nella scorta di Bunny ci sono $\js{b}$ carote mentre nella scorta di Carol ce ne sono $\js{c}$. +Dopo quanti giorni uno dei due avrà finito le carote della propria scorta? + +![image](fig.asy) + +- [x] $\js{correct1}$ +- [ ] $\js{wrong1[0]}$ +- [ ] $\js{wrong1[1]}$ +- [ ] $\js{wrong1[2]}$ +- [ ] $\js{wrong1[3]}$ + +> Bunny impiega $\js{b}$ giorni per finire le proprie carote, mentre Carol ne impiega $\js{c}$. +> Quindi il primo coniglio che finisce le proprie carote è quello che ne ha di meno: dopo $\js{c}$ giorni, avrà finito le carote. +> +> ![1.1 primarie](1-1-primarie.asy) + +--- + +Se invece Carol fosse dispettosa e ogni sera di nascosto rubasse una carota dalla scorta Bunny per metterla nella sua, dopo quanti giorni uno dei due sarà rimasto senza carote nella propria scorta? + +- [x] $\js{correct2}$ +- [ ] $\js{wrong2[0]}$ +- [ ] $\js{wrong2[1]}$ +- [ ] $\js{wrong2[2]}$ +- [ ] $\js{wrong2[3]}$ + +> Bunny mangia una carota al giorno, mentre Carol mangia una carota di Bunny al giorno. +> Quindi ogni giorno Bunny perde $2$ carote, mentre Carol non ne perde nessuna. +> Quindi la risposta è la metà del numero $\js{b}$ di carote iniziali di Bunny, cioè $\js{b/2}$. +> +> ![1.2 primarie](1-2-primarie.asy) diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-20-due-carote/variants.py b/src/fibonacci-primarie/2024-prima-fase/contest/a-20-due-carote/variants.py new file mode 100644 index 0000000..26b89e1 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-20-due-carote/variants.py @@ -0,0 +1,40 @@ +import json + +variants_input = [ + dict(c = 3, b = 6), + dict(c = 4, b = 8), + dict(c = 3, b = 10), + dict(c = 2, b = 12), +] + +def check_no_ugual_answer(c, ws): + s = {c} + for w in ws: + s.add(w) + + return len(s) == 5 + +def build_variant(c, b): + assert b%2 == 0 + + correct1 = min(c, b) + wrong1=[c + b, max(c, b), (c + b) // 2, min(c, b) - 1] + + assert check_no_ugual_answer(correct1, wrong1) + + correct2 = b // 2 + wrong2=[c + b // 2, b + c // 2, b + c, c // 2] + + assert check_no_ugual_answer(correct2, wrong2) + + return dict( + correct1=correct1, + wrong1=wrong1, + correct2=correct2, + wrong2=wrong2, + c=c, + b=b + ) + + +print(json.dumps([build_variant(**data) for i, data in enumerate(variants_input)])) diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-21-ordina-conigli/1-1-secondarie.asy b/src/fibonacci-primarie/2024-prima-fase/contest/a-21-ordina-conigli/1-1-secondarie.asy new file mode 100644 index 0000000..789ec58 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-21-ordina-conigli/1-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[]{4971, 36, 838})); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-21-ordina-conigli/1-2-secondarie.asy b/src/fibonacci-primarie/2024-prima-fase/contest/a-21-ordina-conigli/1-2-secondarie.asy new file mode 100644 index 0000000..3f93a37 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-21-ordina-conigli/1-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[]{2924, 357, 2564})); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-21-ordina-conigli/2-1-primarie.asy b/src/fibonacci-primarie/2024-prima-fase/contest/a-21-ordina-conigli/2-1-primarie.asy new file mode 100644 index 0000000..418705c --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-21-ordina-conigli/2-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[]{1868, 63, 715})); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-21-ordina-conigli/2-2-primarie.asy b/src/fibonacci-primarie/2024-prima-fase/contest/a-21-ordina-conigli/2-2-primarie.asy new file mode 100644 index 0000000..7e71078 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-21-ordina-conigli/2-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[]{735, 239, 1672})); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-21-ordina-conigli/fig.asy b/src/fibonacci-primarie/2024-prima-fase/contest/a-21-ordina-conigli/fig.asy new file mode 100644 index 0000000..8ccfe1e --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-21-ordina-conigli/fig.asy @@ -0,0 +1,26 @@ +unitsize(0.7cm); + +access "../../../../asy_library/pictures/bunny_monochrome.asy" as bunny_monochrome; +access "../../../../asy_library/structures/layout.asy" as layout; + +unravel layout; // per evitare di scrivere layout.cose tutto il tempo + +ALIGN = (0.5, 0); + +element bunny(real height, pen shirt, string name) { + return column( + fill_space = 0, + element(yscale(height)*bunny_monochrome.drawing(1.5, shirt = shirt, scale(2.8)*("\texttt{" + substr(name, 0, 1) + "}"))) + ); +} + +element R = row( + bunny(1.0, lightblue, "4"), + bunny(0.8, lightmagenta, "2"), + bunny(1.2, lightgreen, "6"), + bunny(0.7, lightred, "1"), + bunny(1.1, lightcyan, "5"), + bunny(0.9, lightyellow, "3") +); + +add(R.drawing()); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-21-ordina-conigli/question.md b/src/fibonacci-primarie/2024-prima-fase/contest/a-21-ordina-conigli/question.md new file mode 100644 index 0000000..3fff6de --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-21-ordina-conigli/question.md @@ -0,0 +1,48 @@ +Durante la ricreazione, gli amici di Bunny si sono disposti in fila: + +![immage](fig.asy) + +Per gioco, Bunny deve ordinarli dal più basso al più alto (le altezze degli amici sono scritte sulle loro magliette). +Può farlo con degli **scambi** di posto tra coppie di suoi amici. Quali di questi **scambi** può fare Bunny per riordinarli? + +- [x] scambiare l'amico alto $4$ con l'amico alto $1$ e poi scambiare l'amico alto $6$ con l'amico alto $3$ +- [ ] scambiare l'amico alto $4$ con l'amico alto $2$ e poi scambiare l'amico alto $6$ con l'amico alto $1$ +- [ ] Bunny non può ordinarli solo con scambi +- [ ] scambiare l'amico alto $6$ con l'amico alto $3$ +- [ ] scambiare l'amico alto $6$ con l'amico alto $3$ e poi scambiare l'amico alto $4$ con l'amico alto $2$ + +> Il coniglio alto $1$ è in quarta posizione e quello alto $4$ è in prima posizione, quindi vanno scambiati. +> Inoltre, il coniglio alto $3$ è in sesta posizione e quello alto $6$ è in terza posizione, quindi vanno scambiati. +> Non servono altri scambi! +> +> ![2.1 primarie](2-1-primarie.asy) +> ![1.1 secondarie](1-1-secondarie.asy) + +--- + +Per rendere il gioco più difficile, ora Bunny può solo fare **scambi di vicini**, cioè può scambiare di posto due suoi amici solo se sono uno di fianco all'altro. +Quanti **scambi di vicini** deve fare per ordinare i suoi amici? + +- [ ] $6$ +- [ ] $2$ +- [x] $8$ +- [ ] $12$ +- [ ] $11$ + +> Conviene fare solo scambi tra conigli vicini in ordine sbagliato, cioè conviene fare uno scambio solo se il coniglio a sinistra è più alto di quello a destra. Ad esempio, +> +> - All'inizio, l'ordine è $[4, 2, 6, 1, 5, 3]$. +> - Dopo il primo scambio, l'ordine è $[2, 4, 6, 1, 5, 3]$. +> - Dopo il secondo scambio, l'ordine è $[2, 4, 1, 6, 5, 3]$. +> - Dopo il terzo scambio, l'ordine è $[2, 1, 4, 6, 5, 3]$. +> - Dopo il quarto scambio, l'ordine è $[1, 2, 4, 6, 5, 3]$. +> - Dopo il quinto scambio, l'ordine è $[1, 2, 4, 5, 6, 3]$. +> - Dopo il sesto scambio, l'ordine è $[1, 2, 4, 5, 3, 6]$. +> - Dopo il settimo scambio, l'ordine è $[1, 2, 4, 3, 5, 6]$. +> - Dopo l'ottavo scambio, l'ordine è $[1, 2, 3, 4, 5, 6]$. +> +> Anche facendo altri scambi, la risposta non cambia, purché non si facciano scambi tra conigli vicini che sono già nell'ordine giusto. +> Non è una coincidenza: all'inizio, ci sono $8$ coppie di conigli (non necessariamente vicini) tali che il più alto dei due è più a sinistra di quello in basso, e ad ogni scambio il numero di queste coppie diminuisce di $1$. +> +> ![2.2 primarie](2-2-primarie.asy) +> ![1.2 secondarie](1-2-secondarie.asy) diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/2-1-secondarie.asy b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/2-1-secondarie.asy new file mode 100644 index 0000000..b679e00 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/2-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[]{3468, 65, 2312})); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/2-2-secondarie.asy b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/2-2-secondarie.asy new file mode 100644 index 0000000..2a947fa --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/2-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[]{2484, 395, 2966})); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/3-1-primarie.asy b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/3-1-primarie.asy new file mode 100644 index 0000000..a7dc203 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/3-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[]{1167, 81, 1398})); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/3-2-primarie.asy b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/3-2-primarie.asy new file mode 100644 index 0000000..ec666e6 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/3-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[]{943, 175, 1528})); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/A.asy b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/A.asy new file mode 100644 index 0000000..a389060 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/A.asy @@ -0,0 +1,9 @@ +unitsize(1cm); +access "../../../../asy_library/structures/layout.asy" as layout; +access "fruit_rows.asy" as rows; + +unravel layout; +unravel rows; +fruit[] fruits = getfruits(... perm); + +add(row(padding = 1, fruits[2].single(), fruits[3].single(), carrot.single()).drawing()); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/B.asy b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/B.asy new file mode 100644 index 0000000..09f21bf --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/B.asy @@ -0,0 +1,9 @@ +unitsize(1cm); +access "../../../../asy_library/structures/layout.asy" as layout; +access "fruit_rows.asy" as rows; + +unravel layout; +unravel rows; +fruit[] fruits = getfruits(... perm); + +add(row(padding = 1, carrot.single(), fruits[2].single(), fruits[3].single()).drawing()); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/C.asy b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/C.asy new file mode 100644 index 0000000..04e7d19 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/C.asy @@ -0,0 +1,10 @@ +unitsize(1cm); +access "../../../../asy_library/structures/layout.asy" as layout; +access "fruit_rows.asy" as rows; + +unravel layout; +unravel rows; +fruit[] fruits = getfruits(... perm); + +add(row(padding = 1, carrot.single(), fruits[3].single(), fruits[2].single()).drawing()); + diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/D.asy b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/D.asy new file mode 100644 index 0000000..83c07a6 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/D.asy @@ -0,0 +1,9 @@ +unitsize(1cm); +access "../../../../asy_library/structures/layout.asy" as layout; +access "fruit_rows.asy" as rows; + +unravel layout; +unravel rows; +fruit[] fruits = getfruits(... perm); + +add(row(padding = 1, fruits[3].single(), carrot.single(), fruits[2].single()).drawing()); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/E.asy b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/E.asy new file mode 100644 index 0000000..b6e9d3b --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/E.asy @@ -0,0 +1,9 @@ +unitsize(1cm); +access "../../../../asy_library/structures/layout.asy" as layout; +access "fruit_rows.asy" as rows; + +unravel layout; +unravel rows; +fruit[] fruits = getfruits(... perm); + +add(row(padding = 1, fruits[2].single(), carrot.single(), fruits[3].single()).drawing()); diff --git a/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/fruit_rows.asy b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/fruit_rows.asy new file mode 100644 index 0000000..af0a342 --- /dev/null +++ b/src/fibonacci-primarie/2024-prima-fase/contest/a-22-pesa-la-frutta/fruit_rows.asy @@ -0,0 +1,51 @@ +access "../../../../asy_library/pictures/carrot.asy" as carrot; +access "../../../../asy_library/pictures/apple.asy" as apple; +access "../../../../asy_library/pictures/banana.asy" as banana; +access "../../../../asy_library/pictures/watermelon.asy" as watermelon; +access "../../../../asy_library/pictures/strawberry.asy" as strawberry; +access "../../../../asy_library/structures/layout.asy" as layout; + +unravel layout; + +struct fruit { + picture f(real k); + real pd; + real k1; + real k2; + + element row(int n) { + element[] elems; + for(int i=0; i +![scale1](scale1.asy?v=variants.py) +![scale2](scale2.asy?v=variants.py) + + + + +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? + +
+- [ ] ![A](A.asy?v=variants.py&s=0.6) +- [ ] ![B](B.asy?v=variants.py&s=0.6) +- [ ] ![C](C.asy?v=variants.py&s=0.6) +- [ ] ![D](D.asy?v=variants.py&s=0.6) +- [x] ![E](E.asy?v=variants.py&s=0.6) +
+ +> 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. +> +> ![3.1 primarie](3-1-primarie.asy) +> ![2.1 secondarie](2-1-secondarie.asy) + +--- + +Dopo le pesate di prima, che riportiamo qui per comodità: + +
+![scale1](scale1.asy?v=variants.py) +![scale2](scale2.asy?v=variants.py) +
+ + + +Carol compra altri frutti da pesare e ottiene il risultato che vedi nella prima bilancia qui sotto: + +
+![scale3](scale3.asy?v=variants.py) +![scale4](scale4.asy?v=variants.py) +
+ + + +
+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. +> +> ![3.2 primarie](3-2-primarie.asy) +> ![2.2 secondarie](2-2-secondarie.asy) 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 +![code](code.asy) + + + +- [ ] 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. +> +> ![6.1 primarie](6-1-primarie.asy) +> ![6.1 secondarie](6-1-secondarie.asy) + +--- + +Ricordiamo il percorso ad ostacoli ed il procedimento seguito da Bunny: + +![fig](fig.asy) + +
+![code](code.asy) +
+ + +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$. +> +> ![6.2 primarie](6-2-primarie.asy) +> ![6.2 secondarie](6-2-secondarie.asy) 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",