Diferențe pentru problema/controlnode între reviziile #10 si #1

Nu există diferențe între titluri.

Diferențe între conținut:

== include(page="template/taskheader" task_id="controlnode") ==
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 y[~1~] : y[~2~] : y[~3~] : y[~4~] : y[~5~] : y[~6~] : y[~7~] : y[~8~]. Fiecare element y[~i~] ( 0 < i ≤ 8 ) este format din 4 caractere hexazecimale, fie ele ‘x[~1~]x[~2~]x[~3~]x[~4~]’ , unde x[~i~] 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 y[~1~] : y[~2~] : y[~3~] : y[~4~] reprezintă grupa din care face parte serverul, iar y[~5~]:y[~6~]:y[~7~]:y[~8~] 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 —> y[~1~] : y[~2~] : y[~3~] : y[~4~] : y[~5~] : y[~6~] : y[~7~] : y[~8~]
B —> z[~1~] : z[~2~] : z[~3~] : z[~4~] : z[~5~] : z[~6~] : z[~7~] : z[~8~]
 
A este mai mic decât B dacă există un i ( 0 < i <= 8 ) , astfel încât ( z[~1~] = y[~1~], z[~2~] = y[~2~], ..., z[~i-1~] = y[~i-1~] și y[~i~] < z[~i~] ). În acest sens, y[~i~] este mai mic decât zi dacă și numai dacă numărul hexazecimal format din caracterele ce îl compun pe y[~i~] 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 y[~i~] să fie mai mică decât cea a lui z[~i~].
 
Șeful tău vrea să vadă cât de bine te pricepi și are câteva provocări pentru tine.
 
h2. 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ă.
 
 
Poveste și cerință...
h2. 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.
Fișierul de intrare $controlnode.in$ ...
h2. 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).
 
În fișierul de ieșire $controlnode.out$ ...
h2. Restricții
* 1 ≤ c ≤ 2
* Numărul de adrese IPv6 dintr-un fișier de intrare poate fi maxim 10[^5^]
* 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 10[^4^]
* $... &le; ... &le; ...$
h2. Exemplu
table(example).
table(example).
|_. controlnode.in |_. controlnode.out |
| 1
2459:ab46:0023:1111:3467:3563:5555:1111
1111:2222:3333:4444:5555:6666:7777:aaaa
2459:ab46:0023:1111:2433:2354:7686:5670
2459:ab46:0023:1111:2433:2754:7686:5670
ffaa:2334:2343:9913:6845:4302:2aaa:bbbb
ffaa:2334:2343:9913:4363:4253:2451:cccc
2459:ab46:0023:1111:3243:2353:8888:0000
########
| 3
|
| 2
2459:ab46:0023:1111:3467:3563:5555:1111
1111:2222:3333:4444:5555:6666:7777:aaaa
2459:ab46:0023:1111:2433:2354:7686:5670
2459:ab46:0023:1111:2433:2754:7686:5670
ffaa:2334:2343:9913:6845:4302:2aaa:bbbb
ffaa:2334:2343:9913:4363:4253:2451:cccc
2459:ab46:0023:1111:3243:2353:8888:0000
########
| 1111:2222:3333:4444:5555:6666:7777:aaaa
2459:ab46:0023:1111:2433:2354:7686:5670
2459:ab46:0023:1111:2433:2754:7686:5670
2459:ab46:0023:1111:3243:2353:8888:0000
2459:ab46:0023:1111:3467:3563:5555:1111
ffaa:2334:2343:9913:4363:4253:2451:cccc
ffaa:2334:2343:9913:6845:4302:2aaa:bbbb
|
 
| This is some
text written on
multiple lines.
| This is another
text written on
multiple lines.
|
h3. Explicație
h4. Exemplul 1:
 
Pe primul rând avem cerința 1, apoi 6 rânduric cu câte o adrese IPv6 și ultimul rând, marcator al finalului de linie.
 
 
Grupele diferite din adresele date sunt:
1111:2222:3333:4444
2459:ab46:0023:1111
ffaa:2334:2343:9913
 
h4. Exemplul 2:
 
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.
 
...
== include(page="template/taskfooter" task_id="controlnode") ==

Nu există diferențe între securitate.