Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Bitnami MediaWiki
Search
Search
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
1491 - Coduri
Page
Discussion
English
Read
Edit
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
În urma inundațiilor din această iarnă, COFFESHOP a suferit câteva pierderi esențiale. Unele materiale au fost luate de ape, iar documentele de înregistrare deteriorate. Pentru estimarea pagubelor s-a pornit la realizarea unor liste cu produsele existente în depozit. Singurele documente recuperate parțial au fost listingurile codurilor produselor și ale codurilor de bare. Fiecare produs are un un cod reprezentând un număr în bază <code>16</code>. Codul de bare asociat fiecărui produs este numărul obținut prin conversia codului produsului în baza <code>2</code>. Pentru un produs se cunoaște fie codul produsului, fie codul de bare. În cazul produselor ale căror coduri nu sunt total vizibile, cifrele care nu se vad sunt marcate cu <code>X</code>. = Cerința = Fiind date numerele naturale <code>N</code>, <code>H</code> și <code>D</code>, reprezentând numărul de produse, numărul de cifre pentru codurile produselor, respectiv numărul de cifre pentru codurile de bare și cele <code>N</code> coduri, să se determine: a) Pentru fiecare produs pentru care se cunoaște unul dintre cele două coduri, codul care lipsește, adică codul de bare – dacă este specificat codul produsului, respectiv codul produsului – dacă este precizat codul de bare. Pentru produsele pentru care nu se cunoaște cu exactitate niciunul dintre coduri, se va determina, dacă este posibil, codul produsului. b) Numărul de coduri indescifrabile. = Date de intrare = Fișierul de intrare <code>coduri.in</code> conține pe prima linie despărțite printr-un spațiu, trei numere naturale <code>N H D</code>. Începând cu a doua linie, pe următoarele <code>N</code> linii se găsesc <code>N</code> coduri, precedate de caracterul <code>'H'</code> pentru codurile produselor, <code>'D'</code> pentru codurile de bare sau <code>'U'</code> (unknown) pentru produsele ale căror coduri sunt indescifrabile. În cazul în care, pentru un produs nu se cunoaște cu exactitate niciunul din coduri, fișierul de intrare conține pe linia corespunzătoare caracterul <code>'U'</code>, urmat de codul produsului și codul de bare, cifrele indescifrabile fiind marcate cu <code>'X'</code>. Pentru codurile indescifrabile, în fișierul de intrare, este scris caracterul <code>'U'</code>, urmat de <code>H</code> cifre hexazecimale și <code>D</code> cifre binare. = Date de ieșire = Fișierul de ieșire <code>coduri.out</code> va conține <code>N+1</code> linii. Pe primele <code>N</code> linii vor fi trecute codurile lipsă ale produselor în ordinea citirii din fișierul de intrare, codul produsului în cazul în care o parte din cifre sunt indescifrabile, dar pot fi reconstituite din codul de bare, respectiv <code>0</code> în cazul în care codul nu poate fi reconstituit. Pe ultima linie se va afișa numărul de coduri indescifrabile. = Restricții și precizări = * <code>1 ≤ N ≤ 60000</code>; <code>1 ≤ H ≤ 8</code>; <code>1 ≤ D ≤ 32</code> * Codurile produselor sunt cuprinse în intervalul <code>[0,7FFFFFFF]</code> * Pentru reprezentarea codurilor în hexazecimal se folosesc majuscule. = Exemplul 1 = <code>coduri.in</code> 5 2 8 HB1 D01011100 D00110101 H23 HA3 <code>coduri.out</code> 10110001 5C 35 00100011 10100011 0 Încărcare soluție def Coduri1491(): const fs = require('fs'); const f = fs.readFileSync('coduri.in', 'utf8').split('\n'); const g = fs.createWriteStream('coduri.out'); let n, h, d; const a = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']; const c = <nowiki>''</nowiki>, cod = [], cod1 = []; const w = ['0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '1', '0', '0', '0', '1', '1', '0', '1', '0', '0', '0', '1', '0', '1', '0', '1', '1', '0', '0', '1', '1', '1', '1', '0', '0', '0', '1', '0', '0', '1', '1', '0', '1', '0', '1', '0', '1', '1', '1', '1', '0', '0', '1', '1', '0', '1', '1', '1', '1', '0', '1', '1', '1', '1']; let i, j, x, q, nrx = 0, nrg; for (let line of f) { const tokens = line.split(' '); if (tokens[0] == = 'H') { for (j = 1; j <= h; j++) { cod[j] = tokens[j]; if (cod[j] > '9') q = cod[j] - 'A' + 10; else q = cod[j] - '0'; g.write(w[4 * q + 0] + w[4 * q + 1] + w[4 * q + 2] + w[4 * q + 3]); } } else if (tokens[0] == = 'D') { for (let k = 1; k <= d; k++) cod1[k] = tokens[k]; for (j = 1; j <= h; j++) { x = (cod1[j * 4 - 3] - '0') * 8 + (cod1[j * 4 - 2] - '0') * 4 + (cod1[j * 4 - 1] - '0') * 2 + (cod1[j * 4] - '0'); g.write(a[x]); } } else { for (j = 1; j <= h; j++) cod[j] = tokens[j]; nrg = 0; for (let k = 1; k <= d; k++) cod1[k] = tokens[k]; for (j = 1; j <= h; j++) { if (cod[j] == = 'X') { if (cod1[j * 4 - 3] != = 'X' & & cod1[j * 4 - 2] != = 'X' & & cod1[j * 4 - 1] != = 'X' & & cod1[j * 4] != = 'X') { x = (cod1[j * 4 - 3] - '0') * 8 + (cod1[j * 4 - 2] - '0') * 4 + (cod1[j * 4 - 1] - '0') * 2 + (cod1[j * 4] - '0'); cod[j] = a[x]; } else nrg++; } } if (nrg > 0) { nrx++; g.write('0'); } else { for (j = 1; j <= h; j++) { g.write(cod[j]); } } } g.write('\n'); } g.write(nrx.toString()); g.end();
Summary:
Please note that all contributions to Bitnami MediaWiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Bitnami MediaWiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Toggle limited content width