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_DIR
ouconfig.downloadDir
danspackage.json
, vide par défaut (équivalent au dossier de travail) - Dossier où sont déposées les archives de sources : variable d'environnement
BUILD_DIR
ouconfig.buildDir
danspackage.json
,.builds
par défaut - Dossier où sont déposées les solutions : variable d'environnement
SOLUTION_DIR
ouconfig.solutionDir
danspackage.json
, vide par défaut (équivalent au dossier de travail)
Les variables d'environnement peuvent être renseignée dans un fichier .env
.
- Exécuter
sh ./gcloud-auth-init.sh
et suivre les instructions pour se connecter au compte Google du Hash Code.
- Lancer
npm run init
(ce script télécharge énoncé et fichiers d'entrée, remplit les sectionsconfig
etscripts
dupackage.json
utilisé 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
assert
pour vérifier que tout va bien au milieu des fonctions et ne pas perdre de temps en debug - Utiliser
debug
en 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 fonctioninsertDataSet
qui insère un jeu de données en base - Exécuter
pg-load.js *.in.json
qui va créer une base de données par jeu de données - Lancer
npm run pg:psql
pour avoir une REPL SQL pour explorer les jeux de données\l
pour lister les bases de données (jeux de données)\c <database>
pour changer de base de données (jeux de données)\dt
pour lister les tables\d <table>
pour décrire une table\q
pour quitter
npm run pg:stop
etnpm run pg:rm
sont aussi disponibles pour arrêter et supprimer le conteneur Postgres respectivement