In quest’articolo affronteremo un quesito delle olimpiadi di matematica con scratch.
Sappiamo che il PIN del bancomat di Claudia è un numero di 5 cifre della forma n = 41a9b, dove a e b indicano le cifre che non conosciamo. Sappiamo però che n è divisibile per 312. Quanto vale il prodotto a · b?
Ragioniamo sul numero da trovare.
Se a e b fossero uguali a 9, cioè la più alta combinazione possibile, il nostro numero sarebbe 41999.
Questo numero diviso 312 mi dà 134 con resto 191 e 134 x 312=41808.
Quindi non può essere 134 perchè deve essere soddisfatta la seguente condizione 41a9b. Dunque il numero da trovare è minore di 134.
Se invece a e b fossero uguali a zero, ovvero la più piccola combinazione possibile, il nostro numero sarebbe 41090. Se lo dividiamo per 312 avremo:
41090/312= 131 con resto 7 e 131 x 312 = 40872
Il numero è comunque troppo piccolo, quindi possiamo scartare 131.
Per i ragionamenti appena fatti gli unici divisori possono dunque essere 132 e 133.
Facendo le operazioni possiamo escludere 132, in quanto:
132 x 312 = 41184 e chiaramente non può essere perchè deve essere soddisfatta la seguente condizione 41a9b.
Perciò l’unico divisore è 133, infatti se lo moltiplichiamo per 312 mi darà il numero 41496.
133 x 312= 41496 e la condizione 41a9b è soddisfatta.
Quindi a=4 e b=6
Dunque il prodotto di a per b è 24.
Proviamo adesso a risolverlo con un algoritmo.
Algoritmo su un quesito delle olimpiadi di matematica con scratch
Consideriamo il nostro numero 41a9b, dove a e b sono due variabili che possono variare ognuna da 0 a 9.
Queste sono le variabili che servono:
Scelgo uno sfondo e uno sprite qualunque e inserisco il testo, del problema delle olimpiadi di matematica, direttamente nello sfondo.
Cliccando sullo stage compaiono gli strumenti per personalizzare gli sfondi:
Quindi consideriamo due cicli annidati per provare tutte le possibili combinazioni finchè non troverà il numero cercato.
Ecco lo script completo che ripete partendo da a e b uguali a 9 tutte le possibili combinazioni.In sostanza proverà dapprima il numero 41999 poi 41998,..,41997, …,41990,41899… ecc… fino a trovare il numero divisibile per 312.
Per verificare se il numero è divisibile per 312 si considera l’operatore presente in scratch: resto della divisione e lo si confronta con zero.
Potremmo migliorare l’algoritmo e farlo fermare non appena trova il divisore. Basta spostare il ferma tutto sotto l’istruzione prodotto. Oppure creare una variabile di controllo.
Questo è solo un quesito delle olimpiadi di matematica con scratch, ve ne proporrò degli altri.
Un anno è bisestile se è divisibile per 400 oppure è divisibile per 4 ma non per 100.
In definitiva con questa regola ad esempio gli anni secolari non sono bisestili a meno che non siano divisibili per 400.
Anno bisestile con Scratch
Per realizzarlo con Scratch, cominciamo con l’impostare uno sfondo a piacere e a scegliere uno sprite, io ad esempio ho scelto questi:
Mi servirà una sola variabile che è quella che rappresenta l’anno, dove andrò a memorizzare la risposta dell’utente.
Dopo dobbiamo controllare che il resto della divisione di anno per 400 sia uguale a zero; se tale condizione si verifica allora l’anno è bisestile; altrimenti controlliamo se l’anno è divisibile per 4 ma non per 100 e anche in tal caso l’anno è bisestile; se entrambe le condizioni non sono verificate allora l’anno non è bisestile.
Si utilizza l’operatore resto della divisione in Scratch e lo si confronta con zero per verificare la divisibilità. Allego lo script completo:
Si poteva anche fare anche tutto in un unico se utilizzando l’operatore logico or. Provate pure voi a farlo.
In quest’articolo studieremo un algoritmo che controlla se un anno è bisestile oppure no.
Regola per calcolare se un anno è bisestile
Nel mese di febbraio ogni 4 anni viene aggiunto un giorno per evitare lo slittamento delle stagioni. Quindi ogni 4 anni avremo 366 giorni anziché 365.
Per vedere se un anno è bisestile dobbiamo dividerlo per 400; se è divisibile allora è sicuramente un anno bisestile; altrimenti saranno bisestili solo quegli anni che si possono dividere per 4 ma non per 100.
Esempi di anni bisestili sono:
1600, 1604, 1608 fino al 1696. Il 1700 non è bisestile. E ancora il 1704, 1708 fino a 1796. Il 1800 non è bisestile. Allo stesso modo neanche il 1900 è bisestile e così via.
In definitiva per apportare un’ulteriore approssimazione si è stabilito di non rendere bisestili gli anni secolari, eccetto quelli divisibili per 400.
Potete seguire tutta la spiegazione su focus scienza se volete approfondire.
Algoritmo anno bisestile con i diagrammi di flusso
Realizziamo questo semplice algoritmo con i diagrammi di flusso.
Per realizzare l’algoritmo servono dunque le seguenti forme:
Ellisseper l’inizio e per la fine;
Parallelogramma per inserire l’input, ovvero in questo caso per prendere l’anno e per visualizzare in output il risultato;
Romboper effettuare un test che può essere vero o falso. In questo caso si effettuano due test.
Quindi chiediamo in input l’anno e poi verifichiamo se è divisibile per 400. Se è vero diciamo che l’anno è bisestile, altrimenti verifichiamo se l’anno è divisibile per 4 ma non per 100 come detto sopra.
Utilizzeremo l’operatore % , che è l’operatore modulo, che serve a trovare il resto della divisione.
Lo spiego con un esempio:
2400%400 indica il resto della divisione che in questo caso è 0; in quanto 2400 diviso 400 fa 6 con resto zero;
invece 2400/400 indica un quoziente e in questo caso è 6.
Per fare il test usiamo l’operatore di confronto che ricordo si esprime con il doppio uguale.
Allego l’algoritmo completo che verifica se un anno è bisestile.
Potremmo anche adottare questo procedimento:
In questo modo si controlla se un anno è bisestile con un solo test, ovvero un solo se.