4 / 4
Oct 2015

Zwraca "błędny wynik" mimo że w mojej ocenie jest ok

def ileznakow(ciag):
        ciag=ciag+"****" #zaznaczam sobie gwiazdkami koniec danych
        nawyjscie=""
        i=len(ciag)
        a=0
        for i in range (len(ciag)-1) :
            if a>1:
                a=a-1
                pass
            elif ciag[i]=="*" :
                break
            elif ciag[i]!=ciag[i+1] :
                nawyjscie=nawyjscie+str(ciag[i])
            elif (ciag[i]!=ciag[i+2]) and (ciag[i]!=ciag[i+3]):
                nawyjscie=nawyjscie+str(ciag[i])
            else:
                a=0
                while ciag[i]==ciag[a+i]:
                    a = a + 1
                nawyjscie=nawyjscie+ciag[i]+str(a)
                pass
        return nawyjscie    

cykle=int(input())
for i in range (cykle):
       print (ileznakow(input()))
  • created

    Aug '16
  • last reply

    Aug '17
  • 3

    replies

  • 941

    views

  • 1

    user

  • 1

    link

1 year later

Cześć.
Mam pytanie. Nie do końca wiem gdzie może być błąd, sędzia wyrzuca mi błąd odpowiedzi, a próbowałem na każdy możliwy sposób i zawsze wychodził dobry wynik.
Oto Kod, python 3.4:

ilosc_testow=int(input())
if ilosc_testow>=1 and ilosc_testow<=30:
    for test in range(ilosc_testow):
        linia=input()
        czy_wysokie=linia.isupper()
        czy_litery=linia.isalpha()

        if ((len(linia)<=200 and len(linia)>0)and (czy_wysokie==True and czy_litery==True)):
            poprzednia=""
            licznik=1
            wynik=[]
            for litera in linia:
                aktualna=litera
                if aktualna!=poprzednia and licznik==2:
                    wynik.append(poprzednia)
                if aktualna==poprzednia:
                    licznik=licznik+1
                else:
                    if licznik>2:
                        wynik.append(str(licznik))
                    wynik.append(aktualna)
                    licznik=1
                poprzednia=aktualna
            if licznik>2:
                wynik.append(str(licznik))
            wynik="".join(wynik)
            print (wynik)

Przeczytałem tylko dwie pierwsze linijki twojego kodu. Bardzo zasmuciłem się i nie mogłem już czytać dalej ;-(
Powinieneś koniecznie dopisać dwa warunki:

if ilość_testów <1 :
    send_message_to_autor ("Autorze, przykro mi, pomyliłeś się, Game Over!\n")
    exit program

I dopisać analogiczny warunek, gdy testy będą za duże.

I jeszcze jedna rada, czytać, czytać, czytać .... aż się wszystko zrozumie i wszystko stanie się jasne, a czytać ze skupieniem, uważnie i ze zrozumieniem, a nie po łebkach. Potem kartka papieru i ołówek, spisanie założeń itd. Dopiero potem zaczynać kodować.
Potem już tylko testować, testować, testować i jeszcze raz. Koniecznie dla warunków brzegowych, czyli dla ilości testów:
0
1
górna granica
górna granica +1

Warto wiedzieć, że w górnym lewym rogu jest wyszukiwarka [ikona lupy]. Należy przeczytać wszystkie wątki na temat tego zadania [także na starym forum], bo takie niedociągnięcia są niezależne od użytego języka programowania.

Dzięki za uwagi, przydzadzą się na przyszłość i jedna przydała się teraz.
Po rozrysowaniu okazało się że jak na końcu inputu były 2 znaki takie same np AA, to printowało tylko jedną.
Można zamknąć.
Pozdrawiam