Atenție! Aceasta este o versiune veche a paginii., scrisă la 2023-09-16 13:23:26.000.
Revizia anterioară   Revizia următoare  

Fișierul intrare/ieșire controlnode.in, controlnode.out Sursă Testare IQ-Academy 2023
Autor David Demetriad | Mihai Tuțu Adăugată de avatar demetriad-dagpag David Demetriad demetriad-dagpag
Timp de execuție pe test 0.4 sec Limită de memorie 3000 KB
Scorul tău N/A Dificultate N/A
open book Poți vedea testele pentru această problemă accesând atașamentele .

Control Node

Ești noul administrator de rețea la compania Anavdren și trebuie să gestionezi rețeaua de servere.

Fiecare server se identifică printr-o adresă de tip IPv6. Un IPv6 este de forma y1 : y2 : y3 : y4 : y5 : y6 : y7 : y8. Fiecare element yi ( 0 < i ≤ 8 ) este format din 4 caractere hexazecimale, fie ele ‘x1x2x3x4’ , unde xi poate fi oricare cifră sau literele mici de la a la f (reprezentând de fapt valorile de la 10 la 15). Din adresa IPv6, grupul y1 : y2 : y3 : y4 reprezintă grupa din care face parte serverul, iar y5:y6:y7:y8 reprezintă numărul de ordine al serverului curent în cadrul grupei sale.
De exemplu, pentru adresa IPv6 ‘1111:2222:3333:4444:5555:6666:7777:aaaa’, grupa din rețea este ‘1111:2222:3333:4444’. iar numărul de ordine din grupa sa este ‘5555:6666:7777:aaaa’.

Ordinea lexicografică a două servere este definită în felul următor: Fie două servere ( să le zicem A și B ) având IPv6-urile:

A —> y1 : y2 : y3 : y4 : y5 : y6 : y7 : y8
B —> z1 : z2 : z3 : z4 : z5 : z6 : z7 : z8

A este mai mic decât B dacă există un i ( 0 < i <= 8 ) , astfel încât ( z1 = y1, z2 = y2, ..., zi-1 = yi-1 și yi < zi ). În acest sens, yi este mai mic decât zi dacă și numai dacă numărul hexazecimal format din caracterele ce îl compun pe yi este mai mic decât numărul hexazecimal format din caracterele ce îl compun pe zi, ceea ce e înseamnă că reprezentarea zecimală în baza 10 a lui yi să fie mai mică decât cea a lui zi.

Șeful tău vrea să vadă cât de bine te pricepi și are câteva provocări pentru tine.

Cerinta

1. Să se determine în câte grupe distincte sunt împărțite serverele din rețea.
2. Să se determine o listă cu toate adresele IPv6 din rețea, ordonate lexicografic, mai întâi după grupă și apoi după numărul de ordine din grupă.

Date de intrare

Fișierul de intrare controlnode.in conține pe primul rând c, reprezentând cerința.

Apoi, pe fiecare rând câte o adresă IPv6, conform descrierii din cerință, urmată de caracterul ascuns ‘\n’, reprezentând sfârșitul de linie. O adresă IPv6 conține 39 de caractere ce pot fi orice cifră (între 0 – 9), orice literă mică dintre a – f și caracterul ‘:’ )(două puncte).

Ultimul rând din fișierul de intrare va conține ‘#########’, adică 8 caractere ‘#’. Acesta este rândul care arată că nu mai sunt adrese IPv6 de citit.

Date de ieșire

Fișierul de ieșire controlnode.out va avea conținut diferit în funcție de cerință:

În cazul cerinței 1, se vor afișa un singur număr, x, reprezentând numărul de grupe distincte din lista de ip-uri oferită în fișierul de intrare.

În cazul cerinței 2, se va afișa atâtea adrese IPv6 câte au fost citite, dar ordonate lexicografic, mai întâi după grupă (primele 4 grupe de 4 caractere) și apoi după numărul de ordine din grupă (ultimele 4 grupe de 4 caractere).

Restricții

  • ... ≤ ... ≤ ...

1 ≤ c ≤ 2
Numărul de adrese IPv6 dintr-un fișier de intrare poate fi maxim 105
Fișierul de intrare are caracterul ‘\n’ la fiecare final de rând, iar pe ultimul rând se va găsi ‘########’,
simbolizând sfârșitul fișierului.
IP-urile NU sunt neapărat distincte
Pentru teste în valoare de 50% cerința va fi 1
Pentru teste în valoare de 50% numărul de IPv6 dintr-un fișier de intrare va fi 104

Exemplu

controlnode.in controlnode.out
This is some
text written on
multiple lines.
This is another
text written on
multiple lines.

Explicație

Pe primul rând avem cerința 2, apoi 6 rânduri, fiecare cu câte o adresă IPv6 și ultimul rând, marcator al finalului de linie.

Mai întâi vom ordona lexicografic după grupă, adică după primele grupe de 4 caractere, apoi după numărul de ordine din grupă, adică următoarele 4 grupe de caractere.

Trebuie să te autentifici pentru a trimite soluții. Click aici

Indicii de rezolvare

Arată 6 categorii