Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Matricraft  (Citit de 8885 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
alex123f
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« : Noiembrie 21, 2016, 13:27:18 »

Salut! Ieri mi-a venit ideea să încerc să încerc să creez o problema de informatică, de genul celor care se întâlnesc pe site-uri. Problema este relativ simpluță, dar încă sunt la început. Vreau să știu dacă problema este ușor de înțeles, iar eu mă aflu în imposibilitatea de a-mi da cu părerea în acest caz. Mă puteți ajuta ??

update:
1. Am dat un exemplu mai mix și am oferit și o explicație a acestuia.
2. Am corectat neclaritatea legata de cadere.


Matricraft
   Lumea Minecraftului este alcătuită din blocuri cu dimensiunea de 1x1x1. Aceste blocuri pot să fie de două tipuri: cele care se supun gravității (de tipul 1) și cele care nu se supun gravității (de tipul 2), adică cele care pot rămâne suspendate în aer. Interesant este faptul că, dacă un bloc care se supune gravității se află lângă unul care nu se supune gravității, atunci blocul se va lipi de el, și va rămâne și el suspendat. De precizat este faptul că, un bloc care se află în mișcare nu se poate lipi de un bloc care nu se supune gravității.
   Prietenul nostru Gigel a găsit o cale prin care poate să genereze blocuri la întâmplare, pe o anumită suprafață, de NxMx1, însă acesta are o problemă, nu poate să genereze blocurile decât pe o suprafață existentă de minim NxM, care poate să conțină sau nu blocuri, astfel, dupa ce Gigel a generat suprafața, unele blocuri ar putea să cadă în vid.
   Gigel are nevoie să știe câte blocuri i-au rămas intacte după generare.
Cerință
   Se cunosc N și M, reprezentând dimensiunile a doua  matrici și cele doua matrici, prima reprezentând blocurile generate de Gigel, care pot fi de tipul 0,1 sau 2, tipul 0 reprezentând un bloc vid, și a doua matrice, care reprezintă terenul pe care Gigel generează blocurile, care poate fi alcătuită doar din  2 sau 0.
   Cunoscăndu-se proprietățile blocurilor 0, 1 și 2, să se calculeze cate blocuri, din cele generate de Gigel, vor rămâne intacte.
Date de intrare
   Fișierul matricraft.in va conține pe prima linie doua valori, N și M, reprezentând dimensiunile celor două matrici, iar pe următoarele cele două matrici, fiecare de dimensiune NxM.
Date de ieșire
   Fișierul matricraft.out va conține pe o singură linie o valoare, reprezentând numărul de blocuri care vor rămâne intacte, în urma generării.
Restricții și precizări
   2 ≤ N,M  ≤ 1000

Exemplu

   matricraft.in

   
3 4
1 2 0 0
2 1 1 1
1 1 1 0
2 0 2 2
0 0 0 2
2 0 0 0


   matricaft.out
6

Explicație
   În total vor rămâne 6, deoarece primul element de pe linia 1 și 3 și al doilea de pe linia 2 se vor lipi de blocurile care nu se supun gravității, care se află alături.
   În momentul în care se va genera prima matrice, pe terenul care are structura matricei doi, unele blocuri vor cădea printre spațiile libere, rămânând doar 6.
1 2 0 0
2 1 1 1
1 1 1 0
Cifrele îngroșate reprezintă blocurile care vor cădea în vid.


Exemplul 2

   matricraft.in
   
6 7
1 1 1 1 1 1 1
2 1 2 2 1 0 1
2 2 2 2 2 2 2
1 0 0 0 0 0 0
2 1 1 1 1 0 2
0 1 2 0 2 1 0
0 0 0 0 0 0 0
2 2 2 0 0 0 0
0 0 0 2 2 2 0
2 0 2 0 2 2 2
0 0 0 0 0 0 0
2 0 2 0 2 0 2



   matricaft.out
23
 






« Ultima modificare: Noiembrie 22, 2016, 18:12:38 de către Alex Ifrim » Memorat
klamathix
Echipa infoarena
Nu mai tace
*****

Karma: 733
Deconectat Deconectat

Mesaje: 1.216



Vezi Profilul
« Răspunde #1 : Noiembrie 21, 2016, 18:38:50 »

Salut!

Cred că ar ajuta dacă ai explica exemplul: poți copia din nou matricea generată și să îngroșezi piesele care vor dispărea. Mie nu mi-e clar de ce rămân 23 și vreau să văd de ce. În general e bine să pui (și) un exemplu mai mic  Smile.
Memorat
alex123f
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« Răspunde #2 : Noiembrie 21, 2016, 21:01:13 »

Salut!

Cred că ar ajuta dacă ai explica exemplul: poți copia din nou matricea generată și să îngroșezi piesele care vor dispărea. Mie nu mi-e clar de ce rămân 23 și vreau să văd de ce. În general e bine să pui (și) un exemplu mai mic  Smile.

Am modificat exemplul cu unul mai mic și am adăugat și o exemplificare a acestuia.
Memorat
klamathix
Echipa infoarena
Nu mai tace
*****

Karma: 733
Deconectat Deconectat

Mesaje: 1.216



Vezi Profilul
« Răspunde #3 : Noiembrie 22, 2016, 15:41:41 »

Hm, ok. Pe exemplul ăsta aș fi zis și eu că e 6. Ești sigur că erau 23 pe cel precedent?

De-asemenea, cred că e puțin neclară următoarea chestie:

Citat
dacă un bloc care se supune gravității se află lângă unul care nu se supune gravității, atunci blocul se va lipi de el, și va rămâne și el suspendat.

Din asta s-ar putea deduce că pentru testul:

Cod:
1 2
1 0
0 2

răspunsul este 1. Pentru că dacă am înțeles bine, celula de tip 1 va începe să cadă și va trece pe lângă o celulă de tip 2, ceea ce ar fixa-o. Dar din ce văd în exemplul ăsta, se pare că nu e așa.
Memorat
alex123f
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« Răspunde #4 : Noiembrie 22, 2016, 18:12:17 »

Hm, ok. Pe exemplul ăsta aș fi zis și eu că e 6. Ești sigur că erau 23 pe cel precedent?

De-asemenea, cred că e puțin neclară următoarea chestie:

Citat
dacă un bloc care se supune gravității se află lângă unul care nu se supune gravității, atunci blocul se va lipi de el, și va rămâne și el suspendat.

Din asta s-ar putea deduce că pentru testul:

Cod:
1 2
1 0
0 2

răspunsul este 1. Pentru că dacă am înțeles bine, celula de tip 1 va începe să cadă și va trece pe lângă o celulă de tip 2, ceea ce ar fixa-o. Dar din ce văd în exemplul ăsta, se pare că nu e așa.

Am corectat neclaritatea legată de căderea blocurilor.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines