Judge : https://hashcodejudge.withgoogle.com/#/home
- Lancer une résolution sur tous les fichiers d'entrée, en parallèle :
npm run all - Lancer une résolution sur un fichier d'entrée :
npm run input:1,npm run input:2, ... - Tests :
npm test - Commit, zip, soumission au juge puis tag avec le score reçu :
npm run submit - Génère une nouvelle fonction avec son test :
npm run scaffold <functionName>
- Assert
- Lodash, évidemment
- Debug
- Parsing du fichier d'entrée :
jolicitron - Manipulations de grilles / matrices 2D :
grid-utils.js
- Editeur recommandé : Visual Studio Code
- Auto-complétion excellente, très utile pour lodash
- Debugger intégré, et configuration fournie dans ce repo (F5 pour lancer)
- Configurer editorconfig dans l'éditeur avec auto-fix on save
- Configurer eslint dans l'éditeur avec auto-fix on save
- Configurer prettier dans l'éditeur avec format on save
- Se familiariser avec la signature des fonctions utilitaires
Trois options sont configurables :
- Dossier où sont téléchargés l'énoncé et les fichiers d'entrée par
npm run download: variable d'environnementDOWNLOAD_DIRouconfig.downloadDirdanspackage.json, vide par défaut (équivalent au dossier de travail) - Dossier où sont déposées les archives de sources : variable d'environnement
BUILD_DIRouconfig.buildDirdanspackage.json,.buildspar défaut - Dossier où sont déposées les solutions : variable d'environnement
SOLUTION_DIRouconfig.solutionDirdanspackage.json, vide par défaut (équivalent au dossier de travail)
Les variables d'environnement peuvent être renseignée dans un fichier .env.
- Forker et cloner ce repo
- Exécuter
sh ./gcloud-auth-init.shet suivre les instructions pour se connecter au compte Google du Hash Code. - Exécuter
npm ci
- Lancer
npm run init(ce script télécharge énoncé et fichiers d'entrée, remplit les sectionsconfigetscriptsdupackage.jsonutilisé par les autres scripts, commit le tout, et enfin crée des fichiers de sortie vide)
- Pusher rapidement sur GitHub pour mettre à disposition de l'équipe
- Faire des fonctions indépendantes testées
- Utiliser le script de scaffolding pour aller vite
- Permet à toute l'équipe de profiter de la fonction
- Permet d'écrire des fonctions et des tests petits
- Permet de perdre moins de temps en debug
- Faire des tests très simples pour ne pas perdre de temps en debug
- Utiliser
assertpour vérifier que tout va bien au milieu des fonctions et ne pas perdre de temps en debug - Utiliser
debugen dernier recours (i.e. préférer tests et assertions) pour afficher des valeurs
- Lancer une base de données PostgreSQL avec
npm run pg:run - Dans
pg-load.js, implémenter la fonctioninsertDataSetqui insère un jeu de données en base - Exécuter
pg-load.js *.in.jsonqui va créer une base de données par jeu de données - Lancer
npm run pg:psqlpour avoir une REPL SQL pour explorer les jeux de données\lpour lister les bases de données (jeux de données)\c <database>pour changer de base de données (jeux de données)\dtpour lister les tables\d <table>pour décrire une table\qpour quitter
npm run pg:stopetnpm run pg:rmsont aussi disponibles pour arrêter et supprimer le conteneur Postgres respectivement