Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

Come dovrei interpretare i " " e i "\t"

I
Ionut_02 (4400 points)
4 4 18
in HW6 by (4.4k points)
edited by
Come dovrei interpretare i " " e i "\t"?

Ho modificato la domanda per essere più chiaro con chi vuole leggersi la soluzione subito, in caso di errori scusate e ditemelo

input_1 = "2 \t30, 30, 255, 44, 55," ----> errato perché manca una virgola tra "2 \t30"

output_1 = [230, 30, 255, 44, 55] ----> imp

input_2 = "20 \t30, 255, 44, 55," ----> errato perché manca una virgola tra "20 \t30"

output_2 = [20, 30, 255, 44, 55] ----> imp

input_3 = "20, \t30, 255, 44, 55,"------> corretto perché contiene tutte le virgole

output_3 = [20, 30, 255, 44, 55] ------> pos

ho riportato 2(3*) esempi pratici al fine di eliminare un dubbio che avverto nel HW6 e che potrebbe trovarsi nei test segreti

Vorrei che il professore Sterbini quando possibile possa chiarire la domanda "chi sono i separatori?", anche per rendere il codice meno ambiguo possibile (fatto nei commenti)

Grazie in anticipo

3 Answers

marcofelici (3160 points)
2 2 20
by (3.2k points)
Da quanto ho capito io, in ogni riga del file ci sono dei valori. OGNUNO di essi può essere separato dall'altro con una virgola (",") e/o 0 o più spazi o tab("\t"). In questo modo tu sai come prendere tutti i dati da una riga, ovvero non solo sai come separare un gruppo di 5 valori CONSECUTIVI (che sono significativi perchè rappresentano le informazioni di un palazzo) ma anche separare i valori stessi. Quindi l'esempio che hai fatto mi risulta errato in quanto: input_1 = "2 \t30, 30, 255, 44, 55" darebbe come output: output_1 = [2, 30, 30, 255, 44, 55] che sono 6 valori e quindi non più significativi per UN SOLO PALAZZO e idem il secondo esempio. Questo perchè il modo che hai utilizzato per interpretare come separare i singoli valori (ovvero la virgola) è sbagliato perchè anche i singoli valori possono essere separati con degli spazi o tab ("\t") e quindi a quel punto come fai a capire quello ("\t") separa due valori di una stessa rappresentazione (ES: la larghezza del palazzo come nei tuoi esempi) oppure separa due rappresentazioni diverse (ad esempio il valore di larghezza e altezza dello stesso palazzo).
m
max.maniscalco (860 points)
1 2 10
by (860 points)
Attenzione, il testo dice: "Il file contiene su ciascuna riga, seguiti da 1 virgola e/o 0 o più spazi o tab, gruppi di 5 valori", vuol dire che tra un numero e l'altro 1 virgola c'è sempre e può essere seguita da 0 o più spazi o tab.
I
Ionut_02 (4400 points)
4 4 18
by (4.4k points)
Grazie per la risposta Marco, ma allo stesso tempo il testo non penso dica direttamente quale sia il separatore, io la penso come te, anche se mi aspetterei una risposta dal professore visto che è lui che decide, si gli esempi 1 e 2 interpretano i " " e "\t" in modo diverso apposta
marcofelici (3160 points)
2 2 20
by (3.2k points)
In realtà non essendo specificato, non è detto che sia sempre la virgola a separare i valori e inoltre "e/o 0 o più spazi o tab" indica che tra un numero e l'altro non c'è sempre una virgola ma può esserci anche solo spazio o più spazi, a patto che questi due numeri siano uno l'ultimo valore del gruppo di 5 che rappresenta il canale B della terna R, G, B, e l'altro sia il primo valore di larghezza del gruppo di 5 successivo.
marcofelici (3160 points)
2 2 20
by (3.2k points)
Si effettivamente dovrebbe da come ha scritto ha specificato solo quali possono essere i separatori ogni gruppo di 5 valori interi e non quale sia quello che separa ogni valore intero di questo gruppo.
m
max.maniscalco (860 points)
1 2 10
by (860 points)
La virgola è il carattere importante che divide un numero dall'altro, tutti i caratteri whitespace possono essere ignorati.
marcofelici (3160 points)
2 2 20
by (3.2k points)
In teoria è cosi ma non è specificato nella descrizione dell'Homework se sia sempre e solo la virgola a separare ogni valore del gruppo di 5 oppure può esserci anche uno spazio o tab.
andrea.sterbini (207920 points)
750 1267 2373
by (208k points)
in ciascuno dei due esempi di input mancano due virgole, quindi sono input errati
I
Ionut_02 (4400 points)
4 4 18
by (4.4k points)
Ok adesso ho aggiunto un terzo esempio che dovrebbe essere giusto come input e output, e ho aggiunto le virgole finali ai due input errati di base(e che rimangono errati), grazie
Matypist (5370 points)
11 16 45
by (5.4k points)
edited by

Professore mi scusi, mi è sorto un dubbio nell'interpretazione della consegna in seguito alla sua risposta, per virgole mancanti (a parte quelle finali) intende che ci sarebbero dovute essere per forza quelle che evidenzio di seguito in rosso:

input_1 = "2, \t30, 30, 255, 44, 55,"

input_2 = "20, \t30, 255, 44, 55,"


per essere un input valido? Se sì, l'"e/O" contenuto in consegna (nella parte che cito di seguito) è un refuso o l'abbiamo semplicemente interpretato male noi?


Il file contiene su ciascuna riga, seguiti
da 1 virgola e/o 0 o più spazi o tab,

Matypist (5370 points)
11 16 45
by (5.4k points)
andrea.sterbini (207920 points)
750 1267 2373
by (208k points)
"0 o più" spazi o tab