Gitara


Submit solution

Points: 40 (partial)
Time limit: 1.0s
Memory limit: 64M

Author:
Problem type
Allowed languages
Assembly, Awk, C, C++, Java, Perl, Python

Županijsko natjecanje iz informatike 2017. / Srednja škola / Prva podskupina (1. i 2. razred) - 1. zadatak

Tablatura je način zapisivanja glazbe koji opisuje redoslijed i način trzanja žica na gitari.

Žicu na gitari je moguće trznuti ili uz stiskanje jednog od 19 polja na vratu gitare (označenih brojevima od 1 do 19) ili bez stiskanja polja.

Dakle, određenu žicu možemo trznuti na 20 načina i tako proizvesti 20 različitih tonova.

Tonove označavamo na sljedeći način: kromatska ljestvica se sastoji od oktava redom označenih prirodnim brojevima od jedan na dalje.

Jedna oktava se sastoji od točno dvanaest tonova označenih redom sa nizovima znakova: C, C#, D, D#, E, F, F#, G, G#, A, A#, H, a nakon svakog od tih nizova obavezno pišemo redni broj oktave.

Dakle “C1”, “D#1” i “H5” su oznake tonova.

Svaki ton u oktavi je za jedan polustupanj viši od prethodnog, a prvi ton oktave je za jedan polustupanj viši od zadnjeg tona prethodne oktave.

Pa je tako, primjerice, “D#1” za tri polustupnja viši od “C1” dok je “C6” za jedan polustupanj viši od “H5”.

Osnovni ton žice je ton koji dobijemo kada žicu trznemo bez stiskanja polja, a gitara je napravljena tako da ako žicu trznemo uz stiskanje polja k onda dobijemo ton koji je za točno k polustupnja viši od osnovnog tona žice.

Naša gitara se sastoji od 6 žica označenih brojevima od 1 do 6, čiji su osnovni tonovi redom “E4”, “H3”, “G3”, “D3”, “A2”, “E2”. Na primjer, trazanjem žice 5 uz stiskanje polja 4 dobijemo ton “C#3”.

Pretpostavimo da opisujemo glazbeno djelo duljine n taktova (takt je jedinična mjera vremena) označenih brojevima od 1 do n. Tablatura tog djela je tablica znakova koje se sastoji od 6 redaka i n stupaca.

Ukoliko je u i-tom taktu potrebno trznuti j-tu žicu onda u i-ti znak u j-tom retku tablature zapisujemo:

  • Znamenku “0” ukoliko se ne stiska polje prilikom trzanja.
  • Broj k ukoliko se stiska polje k prilikom trzanja.

Ukoliko je k dvoznamenkasti broj, prva znamenka se upisuje u i-ti znak, a druga u sljedeći znak u j-tom retku (dakle, druga znamenka se upisuje u stupac koji zapravo pripada taktu i + 1).

Ukoliko u određeno mjesto u tablici nismo upisali znamenku onda tamo zapisujemo znak “-” (minus).

Prilikom zapisa tablature, prije prvog i nakon zadnjeg stupca dodajemo stupac sastavljen od znakova “|”.

Za zadanu tablaturu, odredite niz tonova koji se odsvira prilikom izvođenja glazbenoga djela redom od početka do kraja.

Naše djelo je jednostavno pa možete pretpostaviti da se u svakom taktu odsvira najviše jedan ton.

Dodatno možete pretpostaviti da na svakoj pojedinoj žici, nakon što se odsvira ton u nekom taktu, dolaze još barem dva takta u kojima se ništa ne svira na toj žici.

Stoga se oznake polja u tablaturi koje pripadaju različitim trzajima iste žice ne preklapaju niti dotiču.

Ulazni podaci

Ulaz se sastoji od šest redova jednake duljine. U j-tom redu se nalazi j-ti redak tablature zajedno s graničnim znakovima.

Prvi i zadnji znak svakog retka je “|” (vertikalna crta, ASCII 124), dok je svaki ostali znak ili znamenka ili znak “-” (minus).

Djelo se sastoji od najviše 100 taktova (n ≤ 100), što znači da je svaki red ulaza duljine najviše 102 znaka.

Možete pretpostaviti da djelo sadrži najmanje jedan ton.

Izlazni podaci

Ispišite m redova gdje je m ukupan broj tonova u djelu.

U k-ti red ispišite oznaku k-tog po redu tona koji se odsvira prilikom izvođenja djela.

Oznaka tona se sastoji od velikog slova, nakon kojeg kod nekih tonova dolazi znak “#” (ASCII 35), te prirodnog broja.

Između elemenata oznake jednog tona ne dolaze razmaci.

PRIMJERI TEST PODATAKA

Ulaz
|---|
|0--|
|---|
|---|
|---|
|---|
Izlaz
H3

Ulaz
|---0--------|
|--0--0------|
|-0----0-----|
|-------0----|
|--------0---|
|0--------0--|
Izlaz
E2
G3
H3
E4
H3
G3
D3
A2
E2

Ulaz
|-8--6----------9---|
|--9--5-------------|
|---8--4--3---------|
|----------2--------|
|-----------1--9----|
|------------1------|
Izlaz
C5
G#4
D#4
A#4
E4
H3
A#3
E3
A#2
F2
F#3
C#5

Ulaz
|-----5--------10-|
|----15-------11--|
|---16------10----|
|--17--19-17------|
|-18-------11-----|
|19---------------|
Izlaz
H3
D#4
G4
H4
D5
A4
A4
G4
G#3
F4
A#4
D5

Comments

There are no comments at the moment.