{"id":15945824,"url":"https://github.com/guiferviz/cerosyunos-code","last_synced_at":"2026-04-28T11:02:49.403Z","repository":{"id":95110296,"uuid":"310624984","full_name":"guiferviz/cerosyunos-code","owner":"guiferviz","description":"Code from the videos on \"Ceros y Unos\" YouTube channel.","archived":false,"fork":false,"pushed_at":"2021-06-22T23:39:24.000Z","size":213,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-03T22:14:34.041Z","etag":null,"topics":["learning","programming","youtube"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/guiferviz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-06T14:50:36.000Z","updated_at":"2021-06-22T23:38:49.000Z","dependencies_parsed_at":"2023-04-24T23:17:18.391Z","dependency_job_id":null,"html_url":"https://github.com/guiferviz/cerosyunos-code","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/guiferviz/cerosyunos-code","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guiferviz%2Fcerosyunos-code","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guiferviz%2Fcerosyunos-code/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guiferviz%2Fcerosyunos-code/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guiferviz%2Fcerosyunos-code/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/guiferviz","download_url":"https://codeload.github.com/guiferviz/cerosyunos-code/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guiferviz%2Fcerosyunos-code/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32377599,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T09:24:15.638Z","status":"ssl_error","status_checked_at":"2026-04-28T09:24:15.071Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["learning","programming","youtube"],"created_at":"2024-10-07T09:07:12.925Z","updated_at":"2026-04-28T11:02:49.368Z","avatar_url":"https://github.com/guiferviz.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg width=\"200\" alt=\"Logo friki de Ceros y Unos\" src=\"https://guiferviz.com/cerosyunos/assets/logo.png\"\u003e\n\n# Ceros y Unos\n\nAquí podrás encontrar el código que aparece en los vídeos del canal de YouTube\n**Ceros y Unos**.\n\nAcompañando a cada algoritmo/problema hay una batería de *tests* para que puedas\ncomprobar que tus implementaciones son correctas.\nPara no limitar a nadie ni discriminar a ningún lenguaje de programación,\ntodos los datos de entrada/salida del programa deberán de pasarse a través de\nla entrada/salida estándar del sistema (a.k.a. `read`/`print`, `cin`/`cout`...).\nLa programación no se trata de andar discutiendo sobre cuál es el mejor\nlenguaje de programación se trata de encontrar soluciones lógicas y sistemáticas\na los problemas que se nos presentan.\nAsí que sin más dilación, elige el lenguaje que más te guste y...\n*¡feliz programación!*\n\n\n## ¿Cómo empiezo?\n\n### Clonar repositorio\n\nEl primer paso es clonar el repositorio de git que estás leyendo.\nSi estás usando una línea de comandos con git instalado ejecuta:\n\n```sh\ngit clone https://github.com/guiferviz/cerosyunos-code.git\n```\n\nTambién puedes descargarte un zip con todo el código desde la página de GitHub.\nDebe haber algún botón llamado *Descargar ZIP* por algún sitio :)\nDe todas formas las instrucciones de este README están escritas pensando que\ntienes acceso a una terminal que corre un sistema operativo de kernel Linux.\nSi deseas instalar todas estas herramientas en Windows y sin usar la terminal\ndeberás de buscar alternativas a alguno de estos comandos.\n\n\n### Instalar Python 3 y Pip\n\nTu misión será implementar el algoritmo pero, ¿quién se va a encargar de probar\nque tu implementación es correcta?\nAhí es donde entra en juego el\n[**Online Judge**](https://github.com/online-judge-tools/oj).\nEsta herramienta ejecutará tu programa una vez por cada caso de prueba y\ncomprobará que la salida devuelta sea correcta.\n\nEsta herramienta está creada en Python, por lo que hay que instalarlo.\nSi usas alguna de las principales distribuciones de GNU Linux es bastante\nprobable que ya lo tengas instalado.\nEstando en 2021, recomiendo instalar Python \u003e= 3.7.\n\nNOTA: Aunque el Online Judge requiera de Python para poder instalarse eso no\nquiere decir que tengas que usar Python para implementar tus algoritmos.\nPuedes usar **cualquier lenguaje**.\n\nTambién es necesario contar con pip, el gestor de paquetes de Python.\nEn cualquier distribución basa en Ubuntu se puede instalar con:\n\n```\nsudo apt-get update\nsudo apt-get install python3-pip\n```\n\n\n### Instalar dependencias de Python\n\nDesde tu terminal navega al directorio en el que has clonado el código y\nejecuta lo siguiente:\n\n```\npip install -r requirements.txt\n```\n\nCon esto se instalará el Online Judge y otras dependencias necesarias para\ngenerar los tests.\n\nPara comprobar que la instalación ha sido correcta puedes probar a ejecutar\n`oj` y deberías obtener una salida que empieza como la siguiente:\n\n```\n$ oj\n[INFO] online-judge-tools 11.2.0 (+ online-judge-api-client 10.8.0)\nusage: oj [-h] [-v] [-c COOKIE] [--version] {download,d,dl,login,l,submit,s,test,t,generate-output,g/o,generate-input,g/i,test-reactive,t/r} ...\n\nTools for online judge services\n\n.\n.\n.\n```\n\n\n### Instalar make\n\nPara facilitar la generación y ejecución de tests se proporciona un `Makefile`\npor cada ejercicio.\nEs conveniente que tengas `make` instalado.\nDe nuevo, para instalarlo en una distribución GNU Linux basada en Ubuntu puedes\nutilizar el siguiente comando:\n\n```\nsudo apt-get install make\n```\n\n\n### Ejecutar tests\n\nMueve tu terminal al directorio del primer ejemplo y lista los ficheros que hay\nen él.\n\n```\n$ cd algoritmos/a000_max/\n$ ls\ngenerate.sh  generator.py  main.cpp  main.py  README.adoc  run.sh  solver.cpp  solver.py  tests\n```\n\nAunque no todos los algoritmos/problemas tendrán exactamente la misma\nestructura, si que serán bastante similares a este.\n\n* En primer lugar tenemos un `README.md` que contiene el enunciado del problema.\nEste fichero puede contener fórmulas LaTeX que no se renderizan en un README en\nGitHub.\nSi tienes algún visualizador de Markdown quizás te proporcione una mejor\nexperiencia de lectura.\n* La carpeta `tests/` contiene los ficheros de entrada y salida de los tests.\n* Los ficheros `solver.*` contienen la solución vista en el vídeo.\nLa extensión depende del lenguaje de programación.\nEn general cada problema está resuelto en un par de lenguajes.\n* Los ficheros `main.*` son los que debes editar tú.\nDe nuevo, la extensión indica el lenguaje en cuestión.\nLa lectura de los datos de entrada está ya hecha, un comentario en el código\nseñala la función que debes completar.\n* Un fichero `Makefile` con los siguientes targets:\n  * `make tests`.\nAlgunos test están escritos a mano y otros son aleatorios.\nEl target `tests` utiliza `oj` y `generator.py` para crear ficheros de tests.\nEditando este target puedes cambiar el número de test generados y la complejidad\nde cada uno de ellos (el número de elementos de entrada, por ejemplo).\n  * `make \u003cextension\u003e`.\nSi quieres probar un fichero de Python debes ejecutar `make py`.\nEste comando utiliza `oj` para ejecutar todos los tests.\nCuando uses otro lenguaje de programación que no esté ya definido en el\n`Makefile` deberás crear tu propio target basándote en los existentes.\n  * `make clean`.\nSi lo necesitas, este comando borrará los tests generados automáticamente y\ndejará solo aquellos creados manualmente.\nTambién puedes usar este target para borrar los ficheros resultantes de una\ncompilación (si el lenguaje que estás usando es compilado :).\n\nEse es el funcionamiento básico, ¡con esto tienes diversión para rato!\nSiéntete libre de jugar con los comandos y probar nuevas cosas.\nSi encuentras algún error o quieres aportar una mejora no dudes en crear un\nissue en este repositorio.\nUna buena forma de aportar mejoras es incluir implementaciones en otros\nlenguajes :)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguiferviz%2Fcerosyunos-code","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguiferviz%2Fcerosyunos-code","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguiferviz%2Fcerosyunos-code/lists"}