Consigli test_foto_10___6_ter___40__17871_

F
Fra (2240 points)
4 4 7
asked Nov 27, 2019 in HW6 obbligatorio by Fra (2,240 points)
recategorized Dec 6, 2019 by andrea.sterbini
Il mio codice esegue 14 test e non passa test_foto_10___6_ter___40__17871_ per 0.006 sec, ho provato ad utilizzare funzioni per trovare il lato o il punto di origine ma ho visto che ci mette di più, c'è qualche modo per far velocizzare il codice di 0.007 secondi?
719 views

8 Answers

Christian (15220 points)
2 4 77
answered Nov 27, 2019 by Christian (15,220 points)
Ciao, sicuro che quello sia realmente il timeout e non sia stopit a fermare il tuo programma?
(Nel file test_01.py c'è la variabile DEBUG da mettere a True)

Inoltre, scorri la griglia pixel per pixel o segmento per segmento?
F
Fra (2240 points)
4 4 7
commented Nov 27, 2019 by Fra (2,240 points)
Se metto Debug True mi passa tutti i test.

Ho cercato di migliorare il codice al massimo, il ciclo parte dal primo punto verde e considero ogni segmento
Christian (15220 points)
2 4 77
commented Nov 27, 2019 by Christian (15,220 points)
Ok, se usi il parametro - -durations 0 quando lanci i test ti dice effettivamente quanto tempo impiega per l'esecuzione di ogni singolo test.
L
Lolloxox31 (1610 points)
11 16 26
commented Nov 27, 2019 by Lolloxox31 (1,610 points)
Perchè? che succede se mettiamo debug a True?
Tommaso Sgroi (12990 points)
6 11 91
commented Nov 27, 2019 by Tommaso Sgroi (12,990 points)
Mi sembra si tolga il timeout nel test...
Christian (15220 points)
2 4 77
commented Nov 27, 2019 by Christian (15,220 points)
Esatto, non tiene conto del timeout stopit
L
Lolloxox31 (1610 points)
11 16 26
commented Nov 27, 2019 by Lolloxox31 (1,610 points)
Aaaaaah ok   !
a
andreaamici (1740 points)
9 12 21
answered Nov 27, 2019 by andreaamici (1,740 points)
occhio che puo essere che non lo passa di molto più tempo quel test,poichè il timeout si interrompe dopo un secondo...anche io pensavo dentro di me che sfiga per cosi poco poi ho scoperto che non era cosi poco ma bensi il timer che in automatico si stoppava...
F
Fra (2240 points)
4 4 7
commented Nov 27, 2019 by Fra (2,240 points)
si hai ragione, ci metto intorno ai 3 secondi, grazie mille
jngelena (4880 points)
1 2 9
answered Nov 27, 2019 by jngelena (4,880 points)
La tua programma non che non passa per 0,006 secondi, e perché il professore ha usato libreria stop-it..una volta che superi 1secondo di esecuzione di stoppa Direttamente..quindi prova a cambiare file test, Invece di 1 secondo ,prova a mettere 20secondi. Così vedi il risultato di tua algoritmo
plm (18850 points)
7 15 118
answered Nov 27, 2019 by plm (18,850 points)
Sicuramente è la libreria che ferma il programma,nel caso non fosse quello prova a risparmiarti qualche assegnamento o leva una funzione
Tommaso Sgroi (12990 points)
6 11 91
answered Nov 27, 2019 by Tommaso Sgroi (12,990 points)
Dovresti rivedere il tuo algoritmo, perché il timeout effettivo potrebbe essere più alto, il test viene interrotto passato un secondo. Quindi i tempi restituiti sono leggermente più alti del secondo...

Ti consiglio di rivedere il tuo algoritmo e togliere controlli e operazioni superflue.
E
Edward (25950 points)
2 4 172
answered Nov 27, 2019 by Edward (25,950 points)
Ti dice che ci mette 1.006 secondi per via del timeout, infatti dopo 1 secondo il programma viene interrotto (sicuramente ci mette più di 1.006s).

Devi rivedere il tuo algoritmo. Devi trovare un modo per non controllare segmenti che hai già controllato.
L
Lolloxox31 (1610 points)
11 16 26
commented Nov 27, 2019 by Lolloxox31 (1,610 points)
Ciao riferendomi sempre al test_6_ter sulla VM lo passa con 0,80/0,70 posso stare tranquillo per i test segreti o devo migliorarlo? poi ho provato anche a fare i test commentati per prova, devo considerare che sono giusti oppure no? grazie!
E
Edward (25950 points)
2 4 172
commented Nov 27, 2019 by Edward (25,950 points)

sulla VM lo passa con 0,80/0,70 posso stare tranquillo per i test segreti o devo migliorarlo?

Calcola che i test segreti generalmente non hanno istanze troppo grandi, quindi penso che tu possa stare tranquillo. Puoi comunque provare a ricaricarlo più volte per vedere se il tempo di esecuzione si avvicina ad 1s (c'è varianza, ma con 0.8s penso tu possa stare tranquillo, la vedo dura arrivare ad 1s).

poi ho provato anche a fare i test commentati per prova, devo considerare che sono giusti oppure no?

Non ho capito cosa intendi.

L
Lolloxox31 (1610 points)
11 16 26
commented Nov 27, 2019 by Lolloxox31 (1,610 points)
Grazie per la risposta, si nel file test_01 ci sono due test delle immagini che sono commentati e di norma non vengono eseguiti come test, li ho provati, sono esatti oppure sono commentati proprio perchè non sono corretti?
E
Edward (25950 points)
2 4 172
commented Nov 27, 2019 by Edward (25,950 points)
Sono commentati perchè il prof ha deciso di non usare quei test, li ha probabilmente sostituiti con altri test.
Quindi quei test che vedi commentati non vengono eseguiti. Non so se sono corretti o meno.
L
Lolloxox31 (1610 points)
11 16 26
commented Nov 27, 2019 by Lolloxox31 (1,610 points)
Ok grazie mille!!
fc-dev (16450 points)
12 20 34
answered Nov 27, 2019 by fc-dev (16,450 points)
Molto probabilmente stai controllando ogni pixel di ogni segmento, basta che controlli un pixel per ogni segmento (con segmento intendo parte tra due punti verdi, non l'intero lato del quadrato)
J
Jan Rogala (7260 points)
3 4 37
answered Nov 27, 2019 by Jan Rogala (7,260 points)
Molto probabilmente è la libreria stopit che te lo fa andare in timeout di cosi poco, dato che appena supera il timeout da errore. Prova a fare il timeit dentro spider di quel test per vedere quanto ci mette cosi da avere un'idea piu chiara. Un consiglio e di evitare di scorrere tutta l'immagine, per esempio facendo salti da un pixel verde ad un altro, per fare cio ti devi ovviamente calcolare questa distanza. Facendo cosi non effettui piu n scorrimenti ma soltano n-distanza volte