2112 - Tablita

From Bitnami MediaWiki
Revision as of 10:27, 22 April 2023 by Paul Ungur (talk | contribs) (Pagină nouă: Adrian participă la o expediţie, împreună cu colegii lui. La un moment dat, copiii descoperă, lângă un copac, <span style=“color: red”> 5</span> tăbliţe vechi. Primele <span style=“color: red”> 4</span> tăbliţe sunt inscripţionate complet. Prima tăbliţă conţinea textul : “Grupa <span style=“color: red”> 1</span> conţine numărul <span style=“color: red”> 1</span>”, a doua tăbliţă avea textul : „Grupa <span style=“color: red”> 2</s...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Adrian participă la o expediţie, împreună cu colegii lui. La un moment dat, copiii descoperă, lângă un copac, 5 tăbliţe vechi. Primele 4 tăbliţe sunt inscripţionate complet. Prima tăbliţă conţinea textul : “Grupa 1 conţine numărul 1”, a doua tăbliţă avea textul : „Grupa 2 conţine numerele 2 şi 3”, a treia tăbliţă avea textul: „Grupa 3 contine numerele 4, 5 şi 6” , a patra tăbliţă avea textul: „Grupa 4 conţine numerele 7, 8, 9 şi 10.” Pe următoarea tăbliţă găsită era înscris un singur număr, celelalte numere şi numărul grupei erau şterse. Adrian le solicită colegilor lui să descopere ce grupă era scrisă pe a cincea tabliţă găsită.

Cerința

Descoperiţi regula de inscripţionare a tăbliţelor şi pentru numărul găsit pe a cincea tăbliţă, determinaţi din ce grupă face parte.

Date de intrare

Fişierul de intrare tablita.in conţine pe prima linie un număr natural N, ce reprezintă numărul care era înscris pe a cincea tăbliţă descoperită de Adrian.

Date de ieșire

Fişierul de ieşire tablita.out va conţine un număr natural ce reprezintă grupa în care se află numărul N, înscris pe a cincea tabliţă găsită.

Restricții și precizări

Un număr înscris pe o tăbliţă este nenul şi conţine cel mult 8 cifre;

Exemplu:

tablita.in 100

tablita.out 14

Explicație

Numărul 100 ce apare pe a cincea tăbliţă face parte din grupa 14.

Rezolvare

<syntaxhighlight lang="python" line> def validate_input(input_data):

   if not input_data.isdigit():
       raise ValueError("Input must be a positive integer")
   return int(input_data)


def read_input(file_name):

   with open(file_name, 'r') as f:
       return validate_input(f.readline().strip())


def main():

   groups = [(1, [1]), (2, [2, 3]), (3, [4, 5, 6]), (4, [7, 8, 9, 10])]
   number = read_input("tablita.in")
   for group in groups:
       if number in group[1]:
           with open("tablita.out", 'w') as f:
               f.write(str(group[0]))
               break

</syntaxhighlight>

Explicatie

În funcția validate_input verificăm dacă datele de intrare sunt un număr întreg pozitiv și le convertim la un număr întreg.

În funcția read_input citim datele din fișierul de intrare folosind funcția validate_input.

În funcția principală (main), definim grupurile și numerele corespunzătoare lor, citim numărul din fișierul de intrare folosind funcția read_input, apoi căutăm grupul care conține numărul și scriem numărul grupului în fișierul de ieșire.

În acest caz, vom avea un singur număr în fișierul de intrare, deci nu este nevoie să iterăm prin el. Dacă ar fi fost mai multe numere, am fi folosit un for loop pentru a itera prin ele și pentru a rezolva problema pentru fiecare număr.

Explicația pentru soluție este următoarea: citim numărul din fișierul de intrare și apoi căutăm grupul corespunzător în lista noastră de grupuri. Dacă găsim grupul care conține numărul, scriem numărul grupului în fișierul de ieșire și încheiem execuția programului.