• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

SPOJ - Parzyste Nieparzyste

42 Warsaw Coding Academy
0 głosów
135 wizyt
pytanie zadane 18 stycznia w SPOJ przez MarcelM Początkujący (450 p.)

Zadanie o treści:

PP0602A - Parzyste nieparzyste

Wczytaj ciąg liczb. Następnie wypisz wczytane liczby w taki sposób, aby najpierw pojawiły się te, które wystąpiły na pozycjach parzystych, a następnie te, które wystąpiły na pozycjach nieparzystych; z zachowaniem pierwotnej kolejności w obrębie obu grup. Numerujemy od 1.

Wejście

Najpierw t - liczba testów. Następnie dla każdego testu liczba n i n liczb, n <= 100.

Wyjście

Dla każdego testu n liczb w opisanym porządku.

Przykład

Wejście:
2 
4 1 2 3 5
3 9 8 7 

Wyjście:
2 5 1 3
8 9 7

Mój kod:

import sys

id = 1
for line in sys.stdin:
    if id != 1:
        line = line[2:].strip()
        i = 1
        parzyste = ""
        nieparzyste = ""
        for j in line:
            #print("j: " + j)
            if j != " ":
                if i % 2 == 0:
                    #print("ta j jest parzysta ↑")
                    parzyste += j + " "
                else:
                    #print("ta j jest nieparzysta ↑")
                    nieparzyste += j + " "
                i += 1
        wynik = parzyste + nieparzyste[0:len(nieparzyste)-1]
        print(wynik)
    id += 1 

co jest nie tak? pisze że blędna odpowiedź.

2 odpowiedzi

0 głosów
odpowiedź 18 stycznia przez adrian17 Mentor (353,220 p.)
edycja 18 stycznia przez adrian17
Na intuicję, zadanie mówi żebyś wczytywał liczby, nie cyfry.

Tak więc zamiast ręcznie iterować string, podziel po spacjach i iteruj kolejne liczby.

Uwaga na boku #1: zamiast ręcznie inkrementować id, możesz użyć enumerate()

Uwaga na boku #2: możesz od razu wypisywać kolejne części wyjścia zamiast go sklejać w jeden string
–1 głos
odpowiedź 18 stycznia przez VBService Ekspert (256,600 p.)
edycja 18 stycznia przez VBService

IMO, problem leży w zaprezentowanych przykładowych danych (tip: spacje pomiędzy liczbami), które albo

  • celowo wprowadzają w błąd - sprawdzenie uważności
    (są częścią zadania i trzeba coś z tym zrobić)
  • przypadkowo zostały tak zaprezentowane

Sprawdź różnicę:

Wejście:

4 1 2 3 5
41235

 


W takim razie zaprezentowane dane przykładowe, też mogą nieuważnych wprowadzić w błąd (jak Mnie wink i umknęło Mi n liczba i n <= 100), i zasugerowałem się tylko wskazanymi cyframi. angel

komentarz 18 stycznia przez adrian17 Mentor (353,220 p.)

Nie no, to jest jeszcze gorsze?

Następnie dla każdego testu liczba n i n liczb, n <= 100.

Czyli co, zamiast

100 1 2 3 4 5 etc

chcesz mieć

10012345

?

komentarz 18 stycznia przez VBService Ekspert (256,600 p.)

Słusznie, przegapiłem ten warunek.

Czyli chyba trzeba wyodrębnić liczby z wejścia, spacje dzielą wejście na kolejne liczby np. z użyciem tablicy i wtedy sprawdzić czy wystąpiły na pozycjach parzystych i nieparzystych no i sprawdzić czy liczba spełnia warunek n <= 100

4 100 200 3 5

 

komentarz 18 stycznia przez MarcelM Początkujący (450 p.)

a czemu n <= 100?

komentarz 18 stycznia przez adrian17 Mentor (353,220 p.)
Mam wrażenie że vbservice drugi raz z rzędu nie przeczytał dokładnie treści zadania :P

Podobne pytania

0 głosów
1 odpowiedź 391 wizyt
pytanie zadane 17 czerwca 2018 w SPOJ przez karmel222 Nowicjusz (200 p.)
0 głosów
1 odpowiedź 584 wizyt
pytanie zadane 24 lutego 2017 w SPOJ przez chucksqll Stary wyjadacz (12,930 p.)
0 głosów
2 odpowiedzi 278 wizyt
pytanie zadane 10 lipca 2020 w C i C++ przez Filip_Rudy Nowicjusz (170 p.)

93,382 zapytań

142,382 odpowiedzi

322,539 komentarzy

62,741 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...