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

Zadanie SPOJ Sort 1 Python

VPS Starter Arubacloud
+1 głos
372 wizyt
pytanie zadane 17 lipca 2020 w Python przez Stefan Marzec Użytkownik (710 p.)

Cześć. Niewiem dlaczego, ale w zadaniu na spoju wychodzi mi błąd NZEC, a po uruchomieniu na ideone wyskakuje EOF Error, chociaż na komputerze wszystko działa. Ktoś, coś?

https://pl.spoj.com/problems/PP0506A/

import math
stop = True
t1 = int(input())
for i in range(0, t1):
    t2 = int(input())
    points = [[0]*4]*t2
    for j in range(0, t2):
        inputVar = input()
        # Splitujemy dane wejsciowe na ID, X i Y
        inputVarSplitten = inputVar.split()

        # Obliczamy odległość od centrum układu ( delte ) według wzoru a^2 * b^2 = c^2
        delta = math.sqrt(int(inputVarSplitten[1])*int(inputVarSplitten[1]) + int(inputVarSplitten[2])*int(inputVarSplitten[2]))

        # Jeżeli delta jest ujemna, zmieniamy ja na dodatnią
        if delta < 0:
            delta *= (-1)

        # Wrzucamy do tablicy wszystkich punktów wartości kolejno: ID, X, Y i delta
        points[j] = [inputVarSplitten[0],
                     inputVarSplitten[1], inputVarSplitten[2], delta]
    # Dopoki zmienna stop ma wartość True, czyli elementy tablicy nie są jeszcze posortowane
    while True:
            for h in range(0, t2-1):
                    # Jeżeli delta indeksu poprzedniego ma większą wartosc niż nastepna, zamieniamy obie
                    if points[h][3] > points[h+1][3]:
                        schowek = points[h]
                        points[h] = points[h+1]
                        points[h+1] = schowek
                    # W przeciwnym wypadku, zaznaczamy zaliczony "test"
                    else:
                        count += 1
                # Jezeli wszystkie elementy tablicy są posortowane, przerwij pętlę
                if count == t2-1:
                    break
                else:
                    count = 0
            
    # Wypisujemy dane na ekran
    for k in range(0, t2):
        print(points[k][0], end="")
        print(" ", end="")
        print(points[k][1], end="")
        print(" ", end="")
        print(points[k][2])

 

komentarz 17 lipca 2020 przez Whistleroosh Maniak (56,900 p.)
Co do kodu to nie wiem czy aby na pewno tworzenie tablicy w 7 linii jest poprawne, ale to nie jestem pewien, bo nie korzystam z pythona  na co dzień. Dodatkowo nie ma sensu liczyć pierwiastka, to tylko może doprowadzić do błędów w precyzji liczb zmiennoprzecinkowych, a sam pierwiastek nigdy nie może wyjść ujemny
komentarz 17 lipca 2020 przez Whistleroosh Maniak (56,900 p.)
Nie zerujesz też chyba zmiennej count
komentarz 17 lipca 2020 przez Stefan Marzec Użytkownik (710 p.)
Co do tablicy: jako że w pythonie, podobnie jak w js, typ zmiennej jest ustawiany automatycznie. Tak jak w c++ można było wpisać int tab[];, tak tutaj trzeba od razu podać wartość. I coś takiego działa. Co do pierwiastka: jak inaczej obliczyć odległość od środka układu?
komentarz 17 lipca 2020 przez Whistleroosh Maniak (56,900 p.)

Z tymi tablicami chodziło mi o ten problem

komentarz 17 lipca 2020 przez Whistleroosh Maniak (56,900 p.)
Co do tej odległości od środka układu to chodzi o to, że porównywanie po sqrt(a^2 + b^2) to jest to samo co porównywanie po a^2 + b^2, więc pierwiastek jest zbędny

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 276 wizyt
pytanie zadane 16 lutego 2023 w Python przez skyynet Początkujący (410 p.)
0 głosów
1 odpowiedź 186 wizyt
pytanie zadane 5 lipca 2023 w SPOJ przez lada_4455 Nowicjusz (170 p.)
0 głosów
2 odpowiedzi 366 wizyt
pytanie zadane 11 września 2020 w SPOJ przez cupoforanges Początkujący (380 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...