Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
6daae6a
Master
Francesco-69 Nov 3, 2025
901d325
Add files via upload
Francesco-69 Nov 3, 2025
35ca7cb
Add files via upload
Francesco-69 Nov 3, 2025
c202940
Translate task-15.md from English to Italian
Francesco-69 Nov 3, 2025
a285ce2
Add files via upload
Francesco-69 Nov 4, 2025
c82a859
Translate task-6.md from English to Italian
Francesco-69 Nov 4, 2025
8577977
Add files via upload
Francesco-69 Nov 4, 2025
2c656f1
Translate BMI explanation to Italian
Francesco-69 Nov 4, 2025
d13433b
Add files via upload
Francesco-69 Nov 4, 2025
fb8d9f2
Translate checksum documentation to Italian
Francesco-69 Nov 4, 2025
6355663
Add files via upload
Francesco-69 Nov 4, 2025
b534fbf
Translate task-13.md to Italian
Francesco-69 Nov 4, 2025
4db3342
Add files via upload
Francesco-69 Nov 5, 2025
9c63367
Translate task description to Italian
Francesco-69 Nov 5, 2025
92cecd3
Add files via upload
Francesco-69 Nov 9, 2025
f8c429a
Translate Code Guesser to Italian and update examples
Francesco-69 Nov 9, 2025
8ba8272
Update task description for Code Guesser
Francesco-69 Nov 9, 2025
cf0de06
Add files via upload
Francesco-69 Nov 18, 2025
1a174cf
Translate task-39.md to Italian
Francesco-69 Nov 18, 2025
b2d7cf2
Add files via upload
Francesco-69 Nov 18, 2025
55df116
Translate Fahrenheit to Celsius task to Italian
Francesco-69 Nov 18, 2025
e6749e7
Add files via upload
Francesco-69 Nov 19, 2025
5e00e6f
Translate task-8.md to Italian
Francesco-69 Nov 19, 2025
a516190
Add files via upload
Francesco-69 Nov 19, 2025
07b49e3
Translate triangle task description to Italian
Francesco-69 Nov 19, 2025
c1dd540
Add files via upload
Francesco-69 Nov 19, 2025
e8f1767
Translate task-10 from English to Italian
Francesco-69 Nov 19, 2025
e1277f2
Add files via upload
Francesco-69 Nov 19, 2025
b8db50b
Translate task description to Italian
Francesco-69 Nov 19, 2025
62a16e3
Add files via upload
Francesco-69 Nov 21, 2025
e096cae
Add files via upload
Francesco-69 Nov 21, 2025
b7a9e65
Translate task description to Italian
Francesco-69 Nov 21, 2025
14bfe78
Add files via upload
Francesco-69 Nov 24, 2025
20f88f8
Translate task-54.md to Italian
Francesco-69 Nov 24, 2025
96d70dd
Update task-54.md
Francesco-69 Nov 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions it/task-1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<!-- #Somma "A+B" -->

<div class="centered hint">
<img alt="CodeAbbey Monks struggle with bug" src="https://codeabbey.github.io/data/sum_of_two.gif"/><br/>
<span>Artist's impression of programmers struggling with The Bug.</span><br/>
<span>Note that proper tools may be helpful!</span>
</div>

Dato che a volte iniziare può essere difficile, proviamo a risolvere il problema più dempilce possibile.
L'obiettivo è fare pratica con l'invio delle risposte, ecc.

Dobbiamo sommare due numeri e comunicare il risultato. Anche se puoi farlo manualmente, prova a scrivere un programma semplice
in qualsiasi linguaggio tu conosca, ti piaccia o voglia imparare.

_[**Per favore guarda QUESTO VIDEO da codeabbey author**](https://www.youtube.com/watch?v=c6WWZe12ves)
to get visual demo of writing and submitting solution (as briefly described below)._

###Come inviare la soluzione

Se hai effettuato l'accesso, vedrai i seguenti campi qui sotto:

- **Test data** contiene "i dati di input" o "casi da testare" - due numeri che dobbiamo sommare.
- **Your answer** - è dove inserisci il risultato dopo aver alaborato i dati.
- **Your solution** - è dove salvi il codice del programma. Non viene controllato
(almeno automaticamente), ma ti aiuterà a riutilizzare il codice nelle attività successive.
Puoi rivedere l'attività in qualsiasi momento per visualizzare la soluzione inviata
Esempio:

input data:
3 5

soluzione:
8
Forniamo **[esempi](../wiki/running)** del programma in diversi linguaggi popolari,
ma ti consigliamo vivamente di non consultarli prima di aver risolto questa attività. :)
29 changes: 29 additions & 0 deletions it/task-10.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<!-- #Funzione lineare -->
Un problema molto comune nella programmazione computazionale è determinare la legge di base a cui obbedisce un fenomeno.
A scopo didattico, esercitiamoci con una semplice variante: scoprire la dipendenza lineare tramite due osservazioni date (ad esempio, come il
prezzo di un prodotto dipende dalle sue dimensioni, dal suo peso, ecc.)

La funzione lineare è definita dall' equazione:

y(x) = ax + b

Dove `a` e `b` sono delle costanti.
Ad esempio, con `a=3, b=2` la funzione produrrà i valori `y = 2, 5, 8, 11...`
per `x = 0, 1, 2, 3...`

Il tuo compito è determinare `a` e `b` tramite due punti appartenenti alla funzione.
Ovvero, ti vengono fornite due coppie di valori `(x1, y1), (x2, y2)` che soddisfano l'equazione della funzione
- e dovresti ripristinare l'equazione stessa.

**I dati di input** contengono il numero di casi di test nella prima riga
e poi i casi di test stessi in righe separate.
Ogni caso contiene `4` numeri interi (`x1 y1 x2 y2`).
**Anche le risposte** devono essere numeri interi e vanno scritte in riga, separate da spazi e racchiudendo ogni coppia tra parentesi, ad esempio:
dati input:
2
0 0 1 1
1 0 0 1

risposte:
(1 0) (-1 1)

42 changes: 42 additions & 0 deletions it/task-11.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<!-- #Somma delle cifre -->
Questo esercizio di programmazione ha lo scopo di introdurre le basi del sistema numerico. Inizieremo ad apprendere
questo concetto giocando con il sistema decimale che usiamo quotidianamente (anche se è importante tenere presente che il computer
non lo utilizza internamente, ma converte i numeri in esso solo quando devono essere mostrati all'utente).

Poiché qualsiasi numero maggiore di 9 è rappresentato da più cifre, possiamo calcolare la somma di queste cifre. Ad esempio,
per i numeri `1492` e `1776` otteniamo:

1 + 4 + 9 + 2 = 16
1 + 7 + 7 + 6 = 21

In questo compito ti verranno forniti diversi numeri e ti verrà chiesto di calcolare la somma delle loro cifre.

**Importante:** sebbene molti linguaggi di programmazione abbiano funzioni integrate per convertire i numeri in stringhe
(da cui è possibile estrarre cifre), non dovresti usarle (dato che il tuo obiettivo è imparare alcuni trucchi di programmazione).

**Invece** è necessario implementare un algoritmo con divisione ripetitiva per 10 (base del sistema numerico) e somma dei
resti. Leggi l'articolo [Numero in cifre][numtodig] per i dettagli sull'algoritmo.

[numtodig]: ../wiki/number-to-digits

###Enunciato del problema

**Datidi input** saranno nel seguente formato:

- la prima riga contiene `N`, il numero di valori da elaborare;
- seguiranno le righe `N` che descrivono i valori per i quali la somma delle cifre deve essere calcolata con `3` numeri interi `A B C`;
- per ogni caso è necessario moltiplicare `A` per `B` e aggiungere `C` (ovvero `A * B + C`), quindi calcolare la somma delle cifre del risultato.

**Risposta** dovrebbe avere `N` risultati, separati da spazi. Ad esempio:

dati di input:
3
11 9 1
14 90 232
111 15 111

risposta:
1 16 21


Qui il primo caso richiede di calcolare `11*9+1 = 100` e la sua somma di cifre è `1+0+0 = 1`.
48 changes: 48 additions & 0 deletions it/task-12.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
Gestire i resti può causare grossi grattacapi ai programmatori alle prime armi. Scriviamo un semplice programma che
ha questa operazione al suo centro per studiare meglio la divisione intera. Allo stesso tempo, faremo un po' di pratica nella
gestione delle date, che a volte crea grattacapi anche ai programmatori più esperti.


In aritmetica, il resto (o modulo) è la quantità "rimasta" dopo aver eseguito la divisione di due numeri interi
che non sono divisibili in parti uguali (da [Wiki][wiki]). Questo esercizio fornirà ulteriore pratica con l'operazione modulo.

[wiki]: http://en.wikipedia.org/wiki/Remainder

Supponiamo di ricevere due timestamp, ad esempio quando il treno o il traghetto inizia il suo viaggio e quando lo termina.
Potrebbe apparire così:

start: May 3, 17:08:30
end : May 8, 12:54:15

E siamo curiosi di sapere quanto tempo (in giorni, ore, minuti e secondi) viene impiegato per viaggiare (forse, per
scegliere una variante più veloce). Come si potrebbe ottenere questo risultato?

Uno dei modi più semplici è:

- convertire entrambi i timestamp in numeri grandi, che rappresentano i secondi dall'inizio del mese (o dell'anno o del secolo);
- calcolare la loro differenza, ovvero il tempo di percorrenza in secondi;
- riconvertire questa differenza in giorni, ore, minuti e secondi.

La prima operazione potrebbe essere eseguita moltiplicando i minuti per `60` e le ore per `60*60` ecc. e sommando tutti i valori.
La terza operazione dovrebbe essere eseguita al contrario, eseguendo diverse divisioni mantenendo i resti.

In questo compito ci vengono fornite diverse coppie di timestamp. Supponiamo che entrambe le date della coppia siano sempre nello
stesso mese, quindi verrà fornito solo il numero del giorno. Vogliamo calcolare la differenza tra i timestamp in ciascuna coppia.

**Dati di input:** la prima riga contiene il numero di casi di test, le altre righe contengono i casi di test stessi.
Ogni caso di test contiene `8` numeri, `4` per ogni timestamp: `giorno1 ora1 min1 sec1 giorno2 ora2 min2 sec2` (il secondo
timestamp sarà sempre successivo al primo).
**Risposta:** per ogni caso di test, la differenza deve essere visualizzata come segue `(giorni ore minuti secondi)` - si prega di
notare le parentesi quadre - separate da spazi.

Esempio:

dati input:
3
1 0 0 0 2 3 4 5
5 3 23 22 24 4 20 45
8 4 6 47 9 11 51 13

risposte:
(1 3 4 5) (19 0 57 23) (1 7 44 26)

22 changes: 22 additions & 0 deletions it/task-13.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
Questo programma assomiglia ad algoritmi più complessi per il calcolo del CRC e di altri checksums nonchè a funzioni hash su
stringhe di caratteri. Inoltre fornisce un ulteriore esercizio sulla suddivisione dei valori in cifre decimali. Potresti
provare [Somma delle Cifre](./sum-of-digits) prima di questo.

Calcoliamo la somma delle cifre, come in precedenza, moltiplicando ogni cifra per la sua posizione (contando da sinistra a destra
partendo da 1). Ad esempio, dato il valore `1776` calcoliamo la somma **ponderata** delle cifre (chiamiamola "wsd") come segue:

wsd(1776) = 1 * 1 + 7 * 2 + 7 * 3 + 6 * 4 = 60

**Dati di Input** fornirà il numero di test nella prima riga.
I valori veri si trovano nella seconda riga. Per ciascuno di questi valori si deve calcolare la somma ponderata delle cifre.
**Risposta:** come di consueto, Inserire i risultati su una riga, separandoli con spazi.

Example:

dati input:
3
9 15 1776

risposta:
9 11 60

26 changes: 26 additions & 0 deletions it/task-15.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
Questo problema introduce il popolare algoritmo della "ricerca lineare" che dovrebbe essere appreso a fondo e come spesso accade
utilizzato nella programmazione di compiti più complessi (ordinamento ecc.).

Operazione molto comune su sequenza di valori, o array è quello di trovare il valore minimo o massimo. Per farlo ho bisogno di
memorizzare **massimo corrente** (o minimo) in una variable, e quindi scorrere attraverso l'array, confrontando ciascun valore
con questa variabile. Ogni volta che il valore successivo è superiore a quello della variabile temporanea questo valore
dovrebbe essere copiato in essa (come nuovo massimo).

Alla fine del passaggio questa variabile temporanea manterrà il valore estremo (min o max.

**Dati Input** ti daranno esattamente `300` numeri in una singola riga.
**Risposta** dovrebbe contenere il massimo e il minimo di questi valori, separati da spazio.

<span class="red">Importante:</span> a questo problema alcuni chiedono **"Come devo copiare tanti numeri nel mio codice, come creo
un array / elenco dei numeri..."**
Ti prego, non fare così! Invece [**Guarda il mio video demo**](https://www.youtube.com/watch?v=c6WWZe12ves)
(dal minuto 4:00) puoi vedere come usiamo lo
standard input per leggere i numeri quando si esegue on-site!

**Esempio:**

dati di input:
1 3 5 7 9 11 ... 295 297 299 300 298 296 ... 12 10 8 6 4 2

risposta:
300 1
38 changes: 38 additions & 0 deletions it/task-17.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
I checksum sono piccoli valori calcolati da una grande quantità di dati, per verificare se i dati sono coerenti
ovvero se contengono errori.

Ad esempio, se Anna invia un file a Bob, può calcolarne il checksum e comunicarlo a Bob, che
calcolerà il checksum del file ricevuto, e lo confronterà con il valore comunicato da Anna.

_Altro esempio comune - qualsiasi carta di credito che utilizzi ha un checksun nell'ultima cifra del suo numero quindi qualsiasi
dispositivo potrebbe impedirti di inserire un numero errato per errore (puoi approfondire l'argomento nell'esercizio
[Luhn Algorithm](./luhn-algorithm))._

Per programmare diverse altre attività, utilizzaremo un metodo simile per verificare se l'array è corretto o no. Per
evitare problemi con tali attività, ora esercitiamoci con l'algoritmo di calcolo del checksum che verrà utilizzato.

###Enunciato del problema

Vi verrà fornito l'array per il quale calcolare il checksum. Eseguite il calcolo come segue:
per ogni elemento dell'array (partendo dall'inizio) aggiungete questo elemento alla variabile `result` e moltiplicate questa somma
per `113` - questo nuovo valore calcolato con modulo `10000007` dovrebbe diventare il nuovo valore di `result`, e così via.

Leggi l' [articolo sul checksum](../wiki/checksum) per un adescrizione dettagliata di questo algoritmo.
Li puoi trovare anche un'esempio di calcolo.

**Dati Input** indicheranno la lunghezza di un array nella prima riga.
I valori dell'array seguono nella seconda riga, separati da spazi.
**Risposta** dovrebbe avere un'singolo valore: il checksum calcolato.

Esempio:

dati input:
6
3 1 4 1 5 9

risposta:
8921379

_Tutti i valori di input sono compresi tra `0` e `1,000,000,000` - assicurarsi di prestare attenzione ai possibili overflow

durante i calcoli!_
30 changes: 30 additions & 0 deletions it/task-2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<div class="centered">
<img alt="demo of summing an array" src="https://codeabbey.github.io/data/sum_in_loop.gif"/>
</div>

Ora il nostro obiettivo è imparare i **loop** - ovvero le azioni ripetute.
Cerchiamo di calcolare la somma di più numeri (più di due). Sarà utile farlo in un loop.
Come mostrato nell'immagine sopra,puoi creare la variable `sum` e aggiungerci tutti i valori dell'elenco.
Forse il ["for" loop](http://en.wikipedia.org/wiki/For_loop) andrà bene, dato che il numero di valori è noto a priori.

In caso di problemi, prova prima [Sums In Loop](./sums-in-loop)- probabilmente è più semplice.

**I dati di input** hanno il seguente formato:

- la prima linea contiene `N` - quantità di valori da sommare;
- la seconda linea contiene `N` valori veri e propri.

**La risposta** dovrebbe contenere un singolo valore: la somma di `N` valori.

Esempio:

input data:
8
10 20 30 40 5 6 7 8

risposta:
126

**Nota** poichè sono presenti diverse decine di numeri, non dovresti copiarli manualmente nel tuo programma.
Fai invece in modo che il tuo programma li legga dallo standard input(dove puoi copiarli tutti insieme). Tieni presente che
se esegui il codice sul nostro server, i dati vengono automaticamente copiati sullo standard input per comodità.
40 changes: 40 additions & 0 deletions it/task-28.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
Applicheremo le nostre competenze di programmazione a qualche problema quasi scientifico, - dato che è
un po'noioso imparare solo cose astratte.

La semplice misura della costituzione corporea fu proposta a metà del XIX secolo. Dipende solo dall'altezza e
dal peso di una persona - ed è chiamata **Indice di massa corporea** o **BMI**. E' definito come:

BMI = peso / altezza^2

Dove il peso è espresso in `kilogrammi` e l'altezza in `metri`.

Sono proposti quattro gradi generali:

Sottopeso (under) - BMI < 18.5
Normale (normal) - 18.5 <= BMI < 25.0
Sovrappeso (over) - 25.0 <= BMI < 30.0
Obesità (obese) - 30.0 <= BMI

Ad esempio, se ho un peso di `80 kg` e un'altezza di `1.73 m` Posso calcolare:

BMI = 80 / (1.73)^2 = 26.7

ovvero leggermente sovrappeso.

Non discuteremo se questa gradazione sia appropriata o meno. Dovresti semplicemente calcolare i voti per diverse
persone.

**Dati Input** contengono il numero delle persone nella prima linea.
Le altre righe conterranno due valori ciascuna - peso in kilogrammi e altezza in metri.
**Risposta** dovrebbe contenere le parole `under`, `normal`, `over`, `obese` per ogni caso di test corrispondente,
separate da spazi. Per esempio:

dati input:
3
80 1.73
55 1.58
49 1.91

risposta:
over normal under

27 changes: 27 additions & 0 deletions it/task-3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<div class="text-center">
<img src="https://codeabbey.github.io/data/sums_in_loop.gif" alt="summing two arrays"/>
</div>
<br/>

Se hai già imparato a scrivere un programma con ciclo semplice dal problema [Sum in Loop][prevtask],
questo nuovo esercizio sarà solo una semplice modifica.

[prevtask]: ./sum-in-loop

Ora ci vengono fornite diverse coppie di valori e vogliamo calcolare la somma per ciascuna coppia..

**Dati di Input** conterranno in numero totale delle coppie da elaborare nella prima riga.
Le righe successive conterranno le coppie da sommare, una coppia per riga.
**Risposta** Dovrebbe contenere i risultati separati da spazi.

Esempio:

dati:
3
100 8
15 245
1945 54

risposta:
108 260 1999

46 changes: 46 additions & 0 deletions it/task-36.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<!-- #Code Guesser -->
Se conoscete il vecchio gioco [Bulls and Cows](./bulls-and-cows), questo problema di programmazione vi sembrerà familiare.

Andrew e Peter giocano a indovinare il codice. Andrew sceglie un `numero segreto` composto da `3` cifre. Peter cerca di
indovinarlo, proponendo diversi valori, uno alla volta.

Per ogni `ipotesi` Andrew deve dire quante cifre sono corrette, ovvero **sono le stesse** nel valore proposto e nel suo
numero segreto, e sono posizionate nella **stessa posizione**. Ad esempio, se il numero segreto è `125` e Peter dice `523`, allora
Andrew risponde con `1`. Ecco un esempio del gioco:

Andrea sceglie un numero segreto: 846

Ipotesi diPeter Risposta diAndrew
402 0
390 0
816 2
848 2
777 0
815 1
846 3

Quindi Peter ha indovinato il numero corretto dopo `6` tentativi.

Devi scrivere un programma che legga le ipotesi fornite da Peter (tranne l'ultima) e stampi il numero segreto
scelto da Andrew. È garantito che esista esattamente una soluzione.

I **dati di input** conterranno il numero di ipotesi nella prima riga.
Seguiranno poi le risposte con i relativi tentativi, ciascuna contenente il numero fornito da Peter e la risposta data da Andrew.
A differenza degli esempi, i numeri saranno composti da `4` cifre.
La **risposta** dovrebbe contenere il numero segreto (anch'esso di `4` cifre). Vedi esempio:

dat input:
6
402 0
390 0
816 2
848 2
777 0
815 1

risposta:
846


*Qui utilizziamo valori a 3 cifre per brevità, ma l'algoritmo è lo stesso.*

Loading