Per aiutarti con questo task, abbiamo preparato delle tracce di soluzione, che includono solo le parti di lettura dell'input e scrittura dell'output (da tastiera e su schermo). Puoi decidere se leggere/scrivere su file decommentando le opportune righe di codice.
- Scarica la traccia in C: antivirus.c
- Scarica la traccia in C++: antivirus.cpp
- Scarica la traccia in C#: antivirus.cs
- Scarica la traccia in Go: antivirus.go
- Scarica la traccia in JavaScript: antivirus.html
- Scarica la traccia in Java: antivirus.java
- Scarica la traccia in Pascal: antivirus.pas
- Scarica la traccia in Python: antivirus.py
- Scarica la traccia in VisualBasic: antivirus.vb
Il nuovo sistema di gara delle Selezioni Territoriali funziona alla grande, ma Mojito non è così convinto... sembra infatti che la nota mascotte delle Olimpiadi abbia fiutato un virus nascosto fra i file inviati da un partecipante!
Conosciamo la lunghezza del virus e sappiamo che si ripete uguale nei quattro file che abbiamo ricevuto, ma non sappiamo dove. Aiutaci ad individuare il virus!
I quattro file sono dati in input, rappresentati come quattro stringhe di caratteri di lunghezza rispettivamente .
Il virus è una stringa di caratteri di lunghezza . La lunghezza è data in input, ma non si conosce il contenuto della stringa del virus.
Sappiamo con certezza che il virus appare all'interno di tutti e quattro i file, come sottostringa di caratteri consecutivi. Sappiamo inoltre che NON ci sono altre sottostringhe consecutive di lunghezza che si ripetono uguali in tutti e quattro i file.
Le posizioni dei caratteri nelle stringhe sono numerati a partire da . Per ciascuno dei quattro file , trova la posizione in cui è inserito il virus, ovvero la posizione dove appare il primo carattere del virus all'interno della stringa .
a
alla z
), NON sono presenti spazi.La prima riga del file di input contiene un intero , il numero di casi di test. Seguono casi di test, numerati da a . Ogni caso di test è preceduto da una riga vuota.
In ciascun caso di test:
Il file di output deve contenere la risposta ai casi di test che sei riuscito a risolvere. Per ogni caso di test che hai risolto, il file di output deve contenere una riga con la dicitura
Case #t: p1 p2 p3 p4
dove t
è il numero del caso di test (a partire da ) e i valori p1
, p2
,
p3
, p4
sono le posizioni in cui si trova il virus in ciascuno dei quattro
file. Con posizione si intende l'indice del primo carattere del virus, il primo
carattere del file ha indice zero.
Input: Download
2
8 12 10 7
4
ananasso
associazione
tassonomia
massone
6 9 11 10
3
simone
ponessimo
milionesimo
cassonetto
Output: Download
Case #1: 4 0 1 1
Case #2: 3 1 4 4
Nel primo caso d'esempio il virus è asso: ananasso, associazione, tassonomia, massone.
Nel secondo caso d'esempio il virus è one: simone, ponessimo, milionesimo, cassonetto. Nota che sim è presente nei primi tre file ma non nel quarto, quindi non è il virus cercato.
La prima riga del file di input contiene un intero , il numero di casi di test. Seguono casi di test, numerati da a . Ogni caso di test è preceduto da una riga vuota.
Ogni caso di test è composto come segue:
Il file di output deve contenere la risposta ai casi di test che sei riuscito a risolvere. Per ogni caso di test che hai risolto, il file di output deve contenere una riga con la dicitura "Case #test:
", dove test
è il numero del caso di test (a partire da ), seguita dai quattro interi , , , .