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

Zadanie SPOJ Sort 1 Python EOFError: EOF when reading a line

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
391 wizyt
pytanie zadane 16 lutego 2023 w Python przez skyynet Początkujący (410 p.)
edycja 16 lutego 2023 przez skyynet
t=int(input()) #liczba testów
for _ in range(t):
    n=int(input()) #liczba punktów
    P=[] #lista punktów
    D=[] #lista odległości
    for i in range(n):
        Point=input()
        Point_copy=Point.split(' ')
        x=int(Point_copy[1])
        y=int(Point_copy[2])
        dist=x**2+y**2 #Odległość punktu od początku układu współrzędnych (bez pierwiastka)
        if i==0: #Pierwszy podany punkt
            P.append(Point) 
            D.append(dist)
        else:
            for d in D:
                if dist<d: #jeśli odległość jest mniejsza dodaję ją do list na odpowiednie miejsce
                    D.insert(D.index(d)-1,dist)
                    P.insert(D.index(d)-1,Point)
                    break
            if dist not in D: #jesli odległość jest największa dodaję ją na koniec list
                D.append(dist)
                P.append(Point)
    for p in P:
        print(p)
    print('')

Mam problem z zdaniem ze Spoj PP0506A - Sort 1, wyświetla mi się błąd wykonania (NZEC) i nie mam pojęcia co mogę poprawić w kodzie, to mój kod:

 

komentarz 16 lutego 2023 przez Great Stary wyjadacz (12,660 p.)
komentarz 17 lutego 2023 przez skyynet Początkujący (410 p.)
w 26 linii kodu print('') nie odpowiada za tą linię odstępu? Poza tym taka 1 linia odstępu nie powinna generować błędnej odpowiedzi, a nie błąd wykonania (NZEC)?
komentarz 17 lutego 2023 przez Great Stary wyjadacz (12,660 p.)

print('') odpowiada za linię odstępu dla wyjścia programu. Dane na wejściu również są rozdzielone. Dla drugiego testu wczytasz pustą linię w tym miejscu:

n=int(input())
komentarz 17 lutego 2023 przez skyynet Początkujący (410 p.)

Faktycznie pomogło, bardzo dziękuję teraz pokazuję mi błędną odpowiedź. Pozmieniałem trochę kod i wydaje mi się że zgadza się z podanym na SPOJu przykładem. Jesteś w stanie podpowiedzieć w którym dokładnie miejscu jest błąd, który powoduje błędną odpowiedź?

t=int(input()) #liczba testów
for i in range(t):
    n=int(input()) #liczba punktów
    P=[] #lista punktów
    D=[] #lista odległości
    for j in range(n):
        Point=input()
        Point_copy=Point.split(' ')
        x=int(Point_copy[1])
        y=int(Point_copy[2])
        dist=x**2+y**2 #Odległość punktu od początku układu współrzędnych (bez pierwiastka)
        if i==0: #Pierwszy podany punkt
            P.append(Point) 
            D.append(dist)
        else:
            for d in D:
                if dist<d: #jeśli odległość jest mniejsza dodaję ją do list na odpowiednie miejsce
                    D.insert(D.index(d)-1,dist)
                    P.insert(D.index(d)-1,Point)
                    break
            if dist not in D: #jesli odległość jest największa dodaję ją na koniec list
                D.append(dist)
                P.append(Point)
    if i>0:
        print('') #jeden pusty wiersz na wyjściu
    for p in P:
        print(p)
    if i<t-1:
        space=input() #jeden pusty wiersz na wejściu 

 

komentarz 17 lutego 2023 przez Great Stary wyjadacz (12,660 p.)

Jak znajdę chwilkę to mogę poszukać błąd, ale na razie proponuję prostsze rozwiązanie. Wstaw punkty do tablicy i posortuj je po odległości:

for j in range(n):
    name, x, y = input().split()
    points.append(...)
points.sort(...)
komentarz 17 lutego 2023 przez skyynet Początkujący (410 p.)
Nie do końca rozumiem jak mam posortować tablicę zawierającą wartości name,x i y. W moim kodzie ominąłem to tworząc tablice specjalną dla odległości i dodając punkt na ten sam indeks co odległość względnie z innymi. Wydaję mi się, że jest samo obliczanie jest dobrze ://
komentarz 17 lutego 2023 przez Great Stary wyjadacz (12,660 p.)

Wydaję mi się, że jest samo obliczanie jest dobrze ://

Pierwszy kod (o ile wczytasz znak ten znak nowej linii) wyświetla błędny wynik dla testu:

output:
1
5
A 0 0
C 5 5
B 1 -1
E 5 -5
K -5 -5
output:
A 0 0
B 1 -1
C 5 5

Drugi kod w zasadzie w ogóle nie przechodzi nawet testu z treści zadania. W zasadzie metoda, której używasz jest przekombinowana i zawiera w sobie dodatkową złożoność (dodatkowe wyszukiwanie elementów).  

Nie do końca rozumiem jak mam posortować tablicę zawierającą wartości name,x i y.

Możesz posortować taką samą tablicę jak tablica P z Twojego kodu. Nie potrzebujesz tablicy odległości. Opcjonalnie możesz dodać dodatkowy element(odległość) do listy reprezentującej punkt. Masz tutaj dowolność. 

1
komentarz 17 lutego 2023 przez skyynet Początkujący (410 p.)
Test z punktamk E i K pokazuje błąd bo odległość do punktu C, E i Kjest taka sama a w treści zadania jest że nie mogą być podane takie same odległości
komentarz 17 lutego 2023 przez skyynet Początkujący (410 p.)
Wiec wydaje mi się że nie o to chodzi

1 odpowiedź

+1 głos
odpowiedź 16 lutego 2023 przez Great Stary wyjadacz (12,660 p.)

Kolejne testy oddzielone są jednym pustym wierszem.

Podobne pytania

+1 głos
0 odpowiedzi 789 wizyt
pytanie zadane 17 lipca 2020 w Python przez Stefan Marzec Użytkownik (710 p.)
0 głosów
1 odpowiedź 385 wizyt
pytanie zadane 5 lipca 2023 w SPOJ przez lada_4455 Nowicjusz (170 p.)
0 głosów
2 odpowiedzi 431 wizyt
pytanie zadane 11 września 2020 w SPOJ przez cupoforanges Początkujący (380 p.)

93,187 zapytań

142,203 odpowiedzi

322,022 komentarzy

62,513 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2581p. - dia-Chann
  2. 2528p. - Łukasz Eckert
  3. 2421p. - Łukasz Piwowar
  4. 2399p. - CC PL
  5. 2252p. - Tomasz Bielak
  6. 2219p. - Łukasz Siedlecki
  7. 2215p. - rucin93
  8. 2201p. - Michal Drewniak
  9. 2156p. - Marcin Putra
  10. 2152p. - Adrian Wieprzkowicz
  11. 2105p. - Mikbac
  12. 1941p. - Anonim 3619784
  13. 1733p. - rafalszastok
  14. 1480p. - Michał Telesz
  15. 1469p. - ssynowiec
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...