Zadanie Spoj Flamaster

0

Cześć , robię poniższe zadanie
https://pl.spoj.com/problems/FLAMASTE/
w którym na pewnym etapie się zaciąłem.

ile=int(input())

for x in range(ile):
    slowo=input()
    ile=1
    j=0
    wynik=''

    while(j<len(slowo)):
        ile=1
        aktualnyZnak=slowo[j]
        j+=1

        for s in range(j<len(slowo)):
            j+=1
            ile+=1

            if ile==1:
                wynik+=aktualnyZnak
            elif ile==2:
                wynik+=aktualnyZnak
                wynik+=aktualnyZnak

            else:
                wynik+=aktualnyZnak

Do tego zadania przyjąłem zmienną wynik-przechowującą końcowy wynik zadania, j-zmienna chodząca po słowie , i zmienna zliczająca słowa które występują po sobie i są takie same

0

A co Ci tam nie wychodzi?

0
pavarotti napisał(a):

A co Ci tam nie wychodzi?

Gdy wypisuje wynik nic nie wyskakuje , na SPOJ-u też błędna odpowiedź.

0

A nie powinieneś tej zmiennej ile zerować?

0
pavarotti napisał(a):

A nie powinieneś tej zmiennej ile zerować?

no nie , jak wprowadzam pierwszy raz jakąś literkę , to ona liczy się jako '1'

0

A nie zapomniałeś wypisać wynik? :)

0
nalik napisał(a):

A nie zapomniałeś wypisać wynik? :)

:) Nie

1

Tak na szybko, pomijajac Twoj algorytm, mozesz zrobic chyba taki pseudo-online algorytm:

  1. Wczytujesz po jednym znaku z wejscia
  2. Jesli znak jest identyczny jak poprzedni wczytany to inkrementujesz licznik
  3. Jesli znak jest inny to natychmiast wypisujesz Znak+liczba i podmieniasz wartosci na nowy znak i jedno wystapienie
1

Ehh, to źle wkleiłeś kod. Trudno sprawdzić co nie działa, skoro nie ma części kodu ... Niedbalstwo.

To na pewno działa

n = int(input())
for _ in range(n):
    word = input()
    word_len = len(word)
    short = []
    count = 0
    for i, _ in enumerate(word):
        count += 1
        if i == word_len-1 or word[i] != word[i+1]:
            if count <= 2:
                short += [word[i] * count]
            else:
                short += [word[i], str(count)]
            count = 0
    print("".join(short))
1
import re,sys;next(sys.stdin);{print(end=re.sub(r'(.)\1{2,}',lambda m:m[1]+
str(len(m[0])),ln))for ln in sys.stdin}

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0