Programozó versenyek

DEIK Regionális Programozó Csapatverseny, nyílt kategória, 2019. december 8.

2019. december 8. 10:15 – 2019. december 8. 15:15

Boci, boci tarka

Boci, boci tarka, se füle, se farka… A régi dallam 2019-ben visszatér, ráadásul nem is akárhogyan! Összegyűjtöttük ugyanis a pénzt a Kickstarteren arra, hogy elkészítsük a világ első érintőképernyős (és persze mindenféle szuper extrával tűzdelt) xilofonját! Az ilyen bonyolult szerkezetek programozásához a legjobb szakemberre van szükség, így most rád esett a választásunk.

Az eszköz két oktávnyi hangot tud lejátszani, melyeket a c, d, e, f, g, a, h, C, D, E, F, G, A, H karakterekkel jelölünk. Az eszköz különlegessége az ismétlés funkció. Ez azt jelenti, hogy nem kell egy dallam részletét akár többször is elismételnünk, elég csak egyszer megadni, majd az eszköz képes azt megismételni.

A bemenet specifikációja

A bemenet minden sora egy dallamot ír le. A dallamot induktívan definiáljuk a következőképpen:

  • A c, d, e, f, g, a, h, C, D, E, F, G, A, H hangkészlet elemeiből álló nem üres sorozat dallam.
  • Ha M1 és M2 dallamok, akkor M1+M2 egy olyan dallam, amely először az M1, majd az M2 dallam hangjaiból áll.
  • Ha M egy dallam, akkor az (M)*n egy olyan dallam, amely az M dallamot tartalmazza egymás után n-szer (1 ≤ n ≤ 9).

A bemenet sorainak a hossza egyetlen esetben sem haladja meg a 100 karaktert.

A kimenet specifikációja

A program írja a kimenetre minden dallam esetén a ténylegesen megszólaló hangok sorozatát, immár operátorok (+, *) és kerek zárójelek nélkül.

Példa bemenet

  1. ceceggceceggCbagfagfedcc
  2. ((ce)*2+(g)*2)*2+(Cbagfagfedcc)*1
  3. (ceceggceceggCbagfagfedcc)*1
  4. (cecegg)*2+Cbagfagfedcc
letöltés szöveges állományként

A példa bemenethez tartozó kimenet

  1. ceceggceceggCbagfagfedcc
  2. ceceggceceggCbagfagfedcc
  3. ceceggceceggCbagfagfedcc
  4. ceceggceceggCbagfagfedcc
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.