Fiftyville
Problema a resolver
¡El pato de CS50 fue robado! La ciudad de Fiftyville ha pedido tu ayuda para resolver el misterio del pato robado. Las autoridades creen que el ladrón robó el pato y, poco después, salió de la ciudad en un vuelo con la ayuda de un cómplice. Tu objetivo es identificar:
- Quién es el ladrón,
- A qué ciudad escapó el ladrón y
- Quién es el cómplice del ladrón que lo ayudó a escapar
Todo lo que sabes es que el robo sucedió el 28 de julio de 2023 y que sucedió en Humphrey Street.
¿Cómo vas a resolver este misterio? Las autoridades de Fiftyville han tomado algunos de los registros de la ciudad de la época del robo y han preparado una base de datos SQLite para ti, fiftyville.db
, que contiene tablas de datos de alrededor de la ciudad. Puedes consultar esa tabla usando consultas SQL SELECT
para acceder a los datos que te interesan. Usando solo la información en la base de datos, tu tarea es resolver el misterio.
Demostración
Comenzando
Para este problema, utilizarás una base de datos que te proporcionará el personal de CS50.
Inicia sesión en cs50.dev, haz clic en tu ventana de terminal y ejecuta cd
por sí mismo. Deberías encontrar que el indicador de tu ventana de terminal se asemeja al siguiente:
$
Luego ejecuta
wget https://cdn.cs50.net/2023/fall/psets/7/fiftyville.zip
para descargar un ZIP llamado fiftyville.zip
en tu codespace.
Luego ejecuta
unzip fiftyville.zip
para crear una carpeta llamada fiftyville
. Ya no necesitas el archivo ZIP, por lo que puedes ejecutar
rm fiftyville.zip
y responde con "y" seguido de Enter en el indicador para eliminar el archivo ZIP que descargaste.
Ahora escribe
cd fiftyville
seguido de Enter para moverte a (es decir, abrir) ese directorio. Tu indicador ahora debería parecerse al siguiente.
fiftyville/ $
Ejecuta ls
por sí mismo y deberías ver algunos archivos:
answers.txt fiftyville.db log.sql
Si tienes algún problema, sigue estos mismos pasos nuevamente y observa si puedes determinar dónde te equivocaste.
Especificación
Para este problema, tan importante como resolver el misterio en sí es el proceso que utilizas para resolver el misterio. En log.sql
, mantén un registro de todas las consultas SQL que ejecutas en la base de datos. Encima de cada consulta, etiqueta cada una con un comentario (en SQL, los comentarios son cualquier línea que comienza con --
) que describa por qué estás ejecutando la consulta y/o qué información esperas obtener de esa consulta en particular. Puedes utilizar comentarios en el archivo de registro para agregar notas adicionales sobre tu proceso de pensamiento a medida que resuelves el misterio: en última instancia, este archivo debería servir como evidencia del proceso que utilizaste para identificar al ladrón.
A medida que escribes tus consultas, puedes notar que algunas de ellas pueden volverse bastante complejas. Para ayudar a que tus consultas sean legibles, consulta los principios de buen estilo en sqlstyle.guide. ¡La sección sangría puede ser particularmente útil!
Una vez que resuelvas el misterio, completa cada una de las líneas en answers.txt
completando el nombre del ladrón, la ciudad a la que escapó el ladrón y el nombre del cómplice del ladrón que lo ayudó a escapar de la ciudad. (¡Asegúrate de no cambiar el texto existente en el archivo ni agregar ninguna otra línea al archivo!)
Finalmente, debes enviar tus archivos log.sql
y answers.txt
.
Tutorial
Sugerencias
- Ejecuta
sqlite3 fiftyville.db
para comenzar a ejecutar consultas en la base de datos.- Mientras ejecutas
sqlite3
, ejecutando.tables
se mostrarán todas las tablas en la base de datos. - Mientras ejecutas
sqlite3
, ejecutando.schema TABLE_NAME
, dondeTABLE_NAME
es el nombre de una tabla en la base de datos, te mostrará el comandoCREATE TABLE
utilizado para crear la tabla. ¡Esto puede ser útil para saber qué columnas consultar!
- Mientras ejecutas
- Puede resultarte útil comenzar con la tabla
crime_scene_reports
. Comienza buscando un informe de escena del crimen que coincida con la fecha y el lugar del crimen. - Consulta esta referencia de palabras clave SQL para conocer algunas sintaxis SQL que pueden ser útiles.
Cómo probar
Corrección
check50 cs50/problems/2024/x/fiftyville
Cómo enviar
submit50 cs50/problems/2024/x/fiftyville
Reconocimientos
Inspirado en otro caso en SQL City.