Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Επισκέπτης
Δημοσ. (επεξεργασμένο)

Στην πραγματικότητα δεν χρειάζεσαι κανέναν υπολογισμό. Αν το Χ που διαλέξεις είναι άρτιος τότε η ακολουθία της δεύτερης λίστας θα είναι όλα 0 (μηδέν) ενώ αν είναι περιττος θα είναι 1,0,1,0 κτλ κτλ

Επεξ/σία από antonis35
Επισκέπτης
Δημοσ.
11 λεπτά πριν, antonis35 είπε

Στην πραγματικότητα δεν χρειάζεσαι κανέναν υπολογισμό. Αν το Χ που διαλέξεις είναι άρτιος τότε η ακολουθία της δεύτερης λίστας θα είναι όλα 0 (μηδέν) ενώ αν είναι περιττος θα είναι 1,0,1,0 κτλ κτλ

Άρα θα χρειαστείς τον υπολογισμό της αρτιότητας του x. Επίσης θα πρέπει να χτίσεις τη δεύτερη λίστα σου. Θα μπορούσες ενδεχομένως να κάνεις ένα:

mylist = [0]*y

if x%2:
  for i in range(0,y,2):
    mylist[i]=1


Αξίζει;

Επισκέπτης
Δημοσ.
5 λεπτά πριν, Orestis_G είπε

Άρα θα χρειαστείς τον υπολογισμό της αρτιότητας του x. Επίσης θα πρέπει να χτίσεις τη δεύτερη λίστα σου. Θα μπορούσες ενδεχομένως να κάνεις ένα:

mylist = [0]*y

if x%2:
  for i in range(0,y,2):
    mylist[i]=1


Αξίζει;

Ποιο στοιχίζει σε πολυπλοκότητα περισσότερο, η διαπεραση της λίστας και έλεγχος κάθε αριθμού και δημιουργία νέας λίστας ή ο έλεγχος ενός αριθμού και η δημιουργία νεας λίστας;

Επισκέπτης
Δημοσ.

@antonis35 Προφανώς κι έχεις πλεονέκτημα ειδικά στην περίπτωση των αρτίων, που σταματάς στην αρχικοποίηση. Το ζήτημα είναι αν το πλεονέκτημα είναι τόσο μεγάλο ώστε να δικαιολογήσει την πιο "δυσανάγνωστη" λύση που θα προκύψει. Η απάντηση εδώ είναι, κατά τη γνώμη μου, "εξαρτάται από το πρόβλημα". Μετρώντας πρόχειρα με time() σε λίστα 100.000.000 στοιχείων η λύση με τον έλεγχο κάθε στοιχείου έκανε 2.073 δευτερόλεπτα, η λύση με τον έλεγχο του x 2,092 στην περίπτωση του περιττού, και 0,139 για τον άρτιο. Η δημιουργία του αρχικού πίνακα χρειάστηκε 3,637 δευτερόλεπτα.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...