Test segreti?

s
stefano.fantauzzi (2260 points)
3 6 17
asked Nov 3, 2020 in HW2 obbligatorio by stefano.fantauzzi (2,260 points)
recategorized Nov 3, 2020 by andrea.sterbini
Ciao a tutti,

apro questo thread per provare a ipotizzare qualche test segreto...Presumo che i test con parole non solo lower siano molto papabili, ma volevo accennarvi un'evenienza: avrebbe senso secondo voi ipotizzare delle stringhe vuote alla fine della lista delle giocate?Lo vedo poco sensato, ma dovendo il codice adattarsi a tutti i tipi di input, non lo escluderei completamente!

9 Answers

Best answer
f
fabrizio_ancaiani (1790 points)
0 0 9
answered Nov 4, 2020 by fabrizio_ancaiani (1,790 points)
selected Nov 5, 2020 by stefano.fantauzzi

Segnalo questa discussione che mi sembra molto pertinente, dove era intervenuto lo stesso Prof. Sterbini:

https://q2a.di.uniroma1.it/13682/test-segreti

R
Raffaele (3850 points)
10 24 48
answered Nov 3, 2020 by Raffaele (3,850 points)
Io personalmente non ho implementato sistemi per controllare uppercase o se ci sono giocate vuote, stesso per quanto riguarda la possibilità che un giocatore non gioca nulla e quello dopo si.. Dal mio punto di vista i casi limite devono essere presi in considerazione all'interno della traccia.

Dal momento che nella traccia non sono stati citati e non sono neanche sottointesi non penso bisogna implementare alcun controllo di questo tipo.

I "test segreti" sono sicuramente casi limite ma all'interno del regolamento stesso del gioco, quindi se l'algoritmo è fatto bene li passa come passa gli altri.
a
alessandro.bellia (930 points)
0 2 12
commented Nov 4, 2020 by alessandro.bellia (930 points)
Non credo abbia particolarmente senso ipotizzare un test per l'uppercase, siccome le tessere dello Scarabeo in teoria non lo prevedono (nel senso che le tessere sono tutte uguali ahah).
Romitoskj (8920 points)
4 8 40
answered Nov 3, 2020 by Romitoskj (8,920 points)
Ma i test segreti quando verranno applicati? Io avevo capito con l'inizio del PA...
andrea_25 (6070 points)
2 2 24
commented Nov 3, 2020 by andrea_25 (6,070 points)
I test segreti verranno applicati al termine del PA, quando il programma consegnato sarà quello definitivo.
andrea_25 (6070 points)
2 2 24
answered Nov 3, 2020 by andrea_25 (6,070 points)
Anche io qualche giorno fa ho provato ad ipotizzare diversi tipi di test segreti che potrebbero capitare.

Purtroppo, mi sono accorto che ci possono essere davvero tantissimi casi particolari, e che quindi implementare controlli per ognuno di essi (senza tener conto inoltre di tutti quei casi a cui non ho pensato) porterebbe a diminuire l'efficienza del codice e ne aumenterebbe l'intricatezza...

Quindi sono giunto alla conclusione che ragionare in questa maniera non è molto proficuo, anche perché si scende inevitabilmente nell'ambito dell'interpretazione personale.

Prendiamo come esempio il caso che proponi tu, quello in cui potrebbero esserci delle parole con le lettere maiuscole: stiamo parlando dello scarabeo, un gioco in cui si hanno dei tasselli con delle lettere che vengono utilizzate per formare delle parole. Perché alcuni tasselli dovrebbero avere delle lettere maiuscole e altri delle lettere minuscole? Certamente nel gioco non avrebbe senso una cosa del genere.

Assicurati quindi che il tuo codice non abbia delle soluzioni ad hoc per passare alcuni dei test che già conosciamo, questo dovrebbe essere sufficiente per stare tranquilli.
M
MatteoRinaldi (440 points)
0 0 4
answered Nov 3, 2020 by MatteoRinaldi (440 points)
Avevo inizialmente pensato a gestire il caso di lettere upper o lower ma poi ho evitato anche io. Realisticamente non credo che nel gioco dello scarabeo si utilizzino combinazioni di maiuscole o minuscole. Ho letto alcuni manuali del gioco per capire meglio il requisito ma non ho trovato nessun riferimento alla cosa. Per quanto riguarda l'ipotesi di stringhe vuote immagino tu intenda il caso in cui alcuni giocatori passino il turno senza comporre nulla. A quel punto immagino che queste possano trovarsi non alla fine ma tra la lista delle altre parole, e sarebbero parole anche loro in un certo senso solo che avrebbero lunghezza pari a zero.
AdSum (16290 points)
9 20 134
answered Nov 4, 2020 by AdSum (16,290 points)
I test segreti servono proprio per evitare i furbetti che gestiscono in maniera specifica gli input ricevuti. Quindi sono fatti apposta per controllare chi ha un codice funzionante con tutti gli input o chi lo ha solo con quelli dati. Quindi, in linea teoria, non dovrebbero essere "infami", ma solamente dei test casuali. Tutto ciò che possiamo fare è presuppore eventuali test, ma non abbiamo modo di gestirli in maniera specifica, essendo, come già detto, quello lo scopo dei test.
Loriv3 (7970 points)
8 20 84
answered Nov 4, 2020 by Loriv3 (7,970 points)
Probabilmente non saranno così, la consegna è chiara, le liste date sono le parole giocate. Come molti ipotizzano penso che i test segreti vengano generati a caso in modo tale che non si sappia in alcun modo quali possano essere i valori dati così si riesce anche a fare in modo che nessuno possa "cheattare" l'HW inserendo condizioni che ritornano il risultato corretto solo vedendo gli input inseriti
C
ChristianSt (1790 points)
3 9 25
answered Nov 4, 2020 by ChristianSt (1,790 points)

Io invece stavo pensando a possibili test in cui potrebbero essere passate:

  • liste vuote;
  • num_letters < hand_size * 4;
  • hand_size <= 0;

Che ne pensate?

m
marco.soda (470 points)
0 0 3
answered Nov 4, 2020 by marco.soda (470 points)
Penso che la cosa importante sia che il programma restituisca sempre qualcosa a prescindere dal modo in cui sono strutturati gli input.

Visto che la consegna è chiara su quello che deve essere restituito dalla funzione, io mi concentrerei sul far si che il risultato venga restituito sempre e comunque.