poniedziałek, 12 lutego 2018

00024 - 506 - Flamaster - www.pl.spoj.com

Treść zadania:

Kasia niedawno poznała wszystkie literki w szkole. Z wielką pasją potrafiła całe dnie spędzać na pisaniu długich słów swoim ulubionym flamastrem. Pisała i pisała "tasiemce" tak długo, aż flamaster wypisał się. Kasia posmutniała. Z trudem, ale udało jej się uprosić swoją mamę, aby kupiła jej nowy pisak. Musiała jednak obiecać, że tym razem będzie bardziej oszczędna przy jego używaniu żeby wystarczył na dłużej. Kasia zaczęła zastanawiać się w jaki sposób będzie mogła zrealizować obietnicę daną mamie.

Postanowiła, że aby zaoszczędzić wkład flamastra będzie wypisywała skróconą wersję wymyślanych wyrazów. Jeśli miała zamiar napisać więcej niż dwie takie same literki obok siebie w wyrazie, to teraz napisze literkę a następnie liczbę, określającą ilość wystąpień tej literki.

Zadanie
Twoim zadaniem jest dla zadanego wyrazu, który wymyśliła Kasia, podanie skróconej wersji tego wyrazu.

Wejście
W pierwszej linijce wejścia znajduje się liczba naturalna C, 1 ≤ C ≤ 50, oznaczająca ilość zestawów danych. W kolejnych C wierszach wejścia znajdują się zestawy danych. Każdy zestaw składa się z niepustego wyrazu złożonego z samych dużych liter alfabetu amerykańskiego. Długość wyrazu nie przekracza 200 znaków.

Wyjście
Dla każdego zestawu danych, dla zadanego wyrazu, na wyjściu powinna znaleźć się jego skrócona wersja.

Przykład

Dla danych wejściowych:
4
OPSS
ABCDEF
ABBCCCDDDDEEEEEFGGHIIJKKKL
AAAAAAAAAABBBBBBBBBBBBBBBB

prawidłowym rozwiązaniem jest:
OPSS
ABCDEF
ABBC3D4E5FGGHIIJK3L
A10B16


Kod źródłowy w C++:
#include <iostream>

using namespace std;

int main()
{
    int c, q, i;
    char p;
    char input[200];
    cin>>c;
    ++c;
    while(--c)
    {
        cin>>input;
        for(i=0;input[i]!='\0';++i)
        {
            if(input[i]==input[i+1] && input[i+1]==input[i+2])
            {
                p=input[i];
                q=2;
                while(input[i+q]==p)
                {
                    ++q;
                }
                cout<<input[i]<<q;
                i+=q;
                --i;

            }
            else
            {
                cout<<input[i];
            }
        }
        cout<<endl;
    }
    return 0;
}


Kod źródłowy Python 2:
c = int(raw_input(''))
for i in range(0, c, +1):
    strr = raw_input('')
    output = ""
    char = []
    quantity = 0
    char = list(strr)
    if len(char) == 1:
        print str(char[0])
        continue
    for j in range(1, len(char), +1):
        if char[j - 1] == char[j]:
            quantity += 1
            continue
        elif char[j - 1] != char[j] and quantity < 1:
            output += str(char[j - 1])
            quantity = 0
            continue
        elif char[j - 1] != char[j] and quantity == 1:
            output+= str(char[j-1]) + str(char[j-1])
            quantity = 0
            continue
        elif char[j - 1] != char[j] and quantity > 1:
            output += str(char[j - 1]) + str(quantity + 1)
            quantity = 0
            continue
    if j+1 == int(len(char)) and quantity == 0:
        output += str(char[j])
        print output
        continue
    if j+1 == int(len(char)) and quantity == 1:
        output += str(char[j]) + str(char[j])
        print output
        continue
    if j+1 == int(len(char)) and quantity > 1:
        output += str(char[j]) + str(quantity + 1)
        print output
        continue
exit(0)


Kod źródłowy w Python 3:
c = int(input(''))
for i in range(0, c, +1):
    strr = input('')
    output = ""
    char = []
    quantity = 0
    char = list(strr)
    if len(char) == 1:
        print (str(char[0]))
        continue
    for j in range(1, len(char), +1):
        if char[j - 1] == char[j]:
            quantity += 1
            continue
        elif char[j - 1] != char[j] and quantity < 1:
            output += str(char[j - 1])
            quantity = 0
            continue
        elif char[j - 1] != char[j] and quantity == 1:
            output+= str(char[j-1]) + str(char[j-1])
            quantity = 0
            continue
        elif char[j - 1] != char[j] and quantity > 1:
            output += str(char[j - 1]) + str(quantity + 1)
            quantity = 0
            continue
    if j+1 == int(len(char)) and quantity == 0:
        output += str(char[j])
        print (output)
        continue
    if j+1 == int(len(char)) and quantity == 1:
        output += str(char[j]) + str(char[j])
        print (output)
        continue
    if j+1 == int(len(char)) and quantity > 1:
        output += str(char[j]) + str(quantity + 1)
        print (output)
        continue
exit(0)



Źródło: http://pl.spoj.com/problems/FLAMASTE/

Brak komentarzy:

Prześlij komentarz