A - PriemerČasový limit: 10000000 steps, Pamäťový limit: 10000000 charsProgramovací jazyk: Turing MachinePočet bodov: 6 [ Pošli riešenie ] [ Tvoje riešenia ] [ Správne riešenia ] [ Vzorové riešenie ] ÚlohaNa 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: Priemer(X,Y) = (X+Y)/2 - ak X a Y maju rovnakú paritu a skončiť v stave s_ano. Ak X a Y nemajú rovnakú paritu, treba skončiť v stave s_nie a obsah pásky nie je dôležitý.VstupPáska je ohraničená z ľava. Počiatočný stav je s0. Hlava je nastavená na prvý znak, ktorý je vždy nula. Prvý znak čísla X začína napravo od nej. Naľavo od hlavy 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ýstupAk X a Y majú rovnakú paritu, na páske treba ponechať počet jednotiek rovný (X+Y)/2 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 a Y nemajú rovnakú paritu, 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 1Vstup:-t1 -os -oc 01 0111011111 Výstup:s_ano 3 Vysvetlenie:Prvé číslo je 2 a druhé 4. Výstup bude teda (2+4)/2 = 3. Stav je s_ano. Priklad 2Vstup:-t1 -os 01 01111011111 Výstup:s_nie Vysvetlenie:Prvé číslo je 3 a druhé 4. Nemajú rovnakú paritu, 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. Pozor! Zmenil sa spôsob zápisu Turingovho stroja! Aktuálny spôsob nájdete popísaný v sekcii Dokumenty. |