Prihlásenie Registrácia  

B - Delenie troma

Časový limit: 10000000 steps, Pamäťový limit: 10000000 chars

Programovací jazyk: Turing Machine

Počet bodov: 6

[ Pošli riešenie ] [ Tvoje riešenia ] [ Správne riešenia ] [ Vzorové riešenie ]

Úloha

Na páske sú zaradom uložené dve unárne kódované prirodzené čísla X a Y oddelené práve jednou medzerou. Tvojou úlohou je vypočítať funkciu:

Del3(X,Y) = (X+Y)/3 - ak X +Y je delitelné troma bezo zvyšku a skončiť v stave s_ano. Ak X + Y nie sú delitelné troma bezo zvyšku, treba skončiť v stave s_nie a obsah pásky nie je dôležitý.

Vstup

Páska je ohraničená z ľava. Počiatočný stav je s0. Hlava je nastavená na prvý znak čísla X, ktorý je vždy jedna. Naľavo od hlavy je práva jeden znak nula a naľavo od neho už nie je páska. Povolené páskové písmená sú len 0 a 1. Na páske sa nachádzajú práve dve čísla X a Y v unárnom kódovaní oddelené jednou medzerou.

Výstup

Ak X + Y je delitelné troma bezo zvyšku, na páske treba ponechať počet jednotiek rovný (X+Y)/3 a skončiť v stave s_ano. Samotné rozloženie jednotiek na páske nie je podstatné, dôležiťý je len ich počet. Ak X + Y nie sú delitelné troma bezo zvyšku, treba skončiť v stave s_nie, pričom obsah pásky nie je dôležitý. Pozícia hlavy po skončení vykonávania algoritmu nie je podstatná, no nikdy sa nesmie dostať mimo pásku.

Priklad 1

Vstup:

-t1 -os -oc -sp
01
0111011111

Výstup:

s_ano
2

Vysvetlenie:

Prvé číslo je 2 a druhé 4. Výstup bude teda (2+4)/3 = 2. Stav je s_ano.

Priklad 2

Vstup:

-t1 -os -sp
01
01111011111

Výstup:

s_nie

Vysvetlenie:

Prvé číslo je 3 a druhé 4. Ich súčet nie je delitelný troma bezo zvyšku, preto nás zaujíma len stav a ten je s_nie.

Poznámka:

Vo vstupe sú uvedené parametre použité na testovanie pomocou programu palma_ts, môžete ich umiestniť do vstupného súboru.