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

SPOJ - Parzyste Nieparzyste

0 głosów
481 wizyt
pytanie zadane 18 stycznia 2025 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 2025 przez adrian17 Mentor (354,880 p.)
edycja 18 stycznia 2025 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 2025 przez VBService Ekspert (256,600 p.)
edycja 18 stycznia 2025 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 2025 przez adrian17 Mentor (354,880 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 2025 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 2025 przez MarcelM Początkujący (450 p.)

a czemu n <= 100?

komentarz 18 stycznia 2025 przez adrian17 Mentor (354,880 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ź 472 wizyt
pytanie zadane 17 czerwca 2018 w SPOJ przez karmel222 Nowicjusz (200 p.)
0 głosów
1 odpowiedź 751 wizyt
pytanie zadane 24 lutego 2017 w SPOJ przez chucksqll Stary wyjadacz (12,930 p.)
0 głosów
2 odpowiedzi 418 wizyt
pytanie zadane 10 lipca 2020 w C i C++ przez Filip_Rudy Nowicjusz (170 p.)

93,695 zapytań

142,612 odpowiedzi

323,223 komentarzy

63,224 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...