Précisions sur les contraintes

Bonjour,

J'ai quelques questions au sujet des contraintes. Je vais prendre l'exemple de GroLopin, mais la question est générale.

  1. La contrainte sur "nombre de dents" n'est pas précisée. Je dirais déjà entier positif, voire nul. Ça c'est bon. En revanche aucun maximum n'est proposé. Je voudrais savoir si cela signifie, pour un entier, que le maximum est inférieur à $2^{31}$, $2^{32}$, $2^{63}$, $2^{64}$ ou une autre valeur. Quelle est la tradition ici ? J'imagine que la réponse est $2^{31}$ pour les codeurs en C. Est-ce vrai quand rien n'est précisé ?

  2. Pour ce GroLopin là (pour l'autre, c'est précisé), il serait bon de savoir si le nombre de dents peut être zéro, qui est divisible par tout nombre ($\forall n \in \mathbb N, n \mid 0$). Juste pour gérer quelques cas méchants... Ou si c'est inutile.

  3. Concernant les contraintes de temps, quand un temps maximal d'exécution est affiché, cela correspond au pire test ; OK. Un coefficient est appliqué pour les langages lents, j'ai lu ça. Ma question est : le temps maximal est-il donné pour le pire test avec un langage rapide (genre C ou C++) ? Et le coefficient pour Python, de quel ordre est-il ? Je dirais entre 10 et 20. Est-ce un coefficient fixe pour tout Prologin, ou bien local à chaque problème ? (ce que je pourrais concevoir).

  4. Je repose ici une question posée hier : quel est le meilleur moyen de signaler une amélioration à apporter à un énoncé ? Le forum ici, ou bien un mail à info@prologin.org ?

Merci à vous, Encore une fois, me concernant, je pourrais presque m'en sortir avec certaines imprécisions, mais je pense aux élèves qui vont venir et j'aimerais qu'ils ne soient ennuyés en rien à part se creuser la tête sur les questions intéressantes que vous posez.

Bonjour,

  1. Après avoir regardé un peu, je dirai que c'est simplement la limite d'un int, ce qui est donc dépendant du langage et de l'architecture. Cependant, nous ne testons normalement pas ces cas-là, car ils n'apportent souvent rien "algorithmiquement parlant". Je vous invite toutefois à poser la question sur le forum si vous pensez que c'est judicieux, nous nous efforcerons de vous répondre dans les plus brefs délais.

  2. En effet, ce n'est pas précisé, mais le nombre de dents ne peut pas être égal à 0.

  3. Les coefficients sont fixes pour tous les exercices. Vous pouvez trouver les information que vous recherchez ici (pour Python, le coefficient est 15) : https://github.com/prologin/site/blob/dee96b90736a94185d25b0befd9be3e52cb6deb7/prologin/prologin/languages.py#L45

  4. Pour l'amélioration d'un énoncé, vous pouvez nous contacter par mail, mais je trouve cela plus judicieux de faire une issue sur le site de Prologin (https://github.com/prologin/site), même si l'issue ne se rapporte pas directement au site, elle se rapporte à son contenu, et comme le repo des sujets est privé, je pense que c'est le meilleur endroit pour le faire. Si jamais il y avait une meilleure solution, à laquelle je n'ai pas pensé, nous vous le ferons savoir.

Vous avez tout à fait raison de poser ces questions, nous nous efforcerons de rendre ces points plus clairs à l'avenir sur notre site. Si vous juger cela pertinent, vous pouvez faire des issues directement sur le site de Prologin pour nous demander des modifications ! Souhaitez-vous par exemple que nous précisions l'exercice GroLopin pour vos élèves ?

Merci pour votre intérêt et votre vigilance.

Très bonne journée.

  1. Je suis d'accord sur l'intérêt limité. C'est juste pour être certain. Carré. Merci.

  2. Bon, alors, je peux divulguer un cas qui aurait été méchant. Un seul nombre, zéro. La réponse aurait été 1, alors que beaucoup auraient probablement éliminé tout zéro de l'entrée... Intérêt limité pour ce cas, mais méchant. Je crois utile de toujours préciser les contraintes, même quand on n'en voit pas l'intérêt. Un solver pourrait avoir une idée différente, et la connaissance des contraintes lui éviter des questions peu pertinentes. Je ferai une issue. Merci.

  3. Un ×15, bien vu. Je constate qu'il y a aussi memory=lambda m: 5 * m + 9000 en bonus. Que je comprends bien avec la taille mini des entiers Python. Merci beaucoup.

  4. C'est noté. Je n'ai encore jamais fait ça ; c'est une très bonne occasion de s'y mettre.

Concernant GroLopin (niveau 7), je suis certain que mes élèves n'iront pas ; aucune urgence donc. Moi-même, je le trouve difficile, et je n'ai pas encore la solution quadratique qui semble attendue. Un jour peut-être.

Très bonne journée à vous également,

Re-bonsoir, j'ai utilisé une issue pour proposer des corrections sur la partie 2013...


Il me reste une question qui a sa place ici.

Quelle est la limite de la taille du code que l'on peut soumettre ? Est-ce fixe ou variable ?

Il m'arrive de coder en dur du matériel ou de méta programmer de la boucle déroulée, ces bouts de code n'ayant pas vocation à être relus par un humain. C'est une sale habitude, mais ça m'aide parfois (et ça peut être aussi indispensable) à passer plus vite des tests.

D'avance, merci.

Bonjour,

j'ai utilisé une issue pour proposer des corrections sur la partie 2013...

J'ai vu l'issue, nous allons la fix dans les plus brefs délais.

Quelle est la limite de la taille du code que l'on peut soumettre ? Est-ce fixe ou variable ?

A ma connaissance, il n'y a pas de limite à la taille du code que l'on peut soumettre.

Il m'arrive de coder en dur du matériel ou de méta programmer de la boucle déroulée, ces bouts de code n'ayant pas vocation à être relus par un humain. C'est une sale habitude, mais ça m'aide parfois (et ça peut être aussi indispensable) à passer plus vite des tests.

Pouvez-vous me donner un exemple de soumission où vous avez fait cela ? Que je puisse vous dire si cela rentre en conflit avec notre règlement ou non !

Bonne journée à vous.

Merci, pour votre réponse.

elfikur

Il m'arrive de coder en dur du matériel ou de méta programmer de la boucle déroulée, ces bouts de code n'ayant pas vocation à être relus par un humain. C'est une sale habitude, mais ça m'aide parfois (et ça peut être aussi indispensable) à passer plus vite des tests.

Pouvez-vous me donner un exemple de soumission où vous avez fait cela ? Que je puisse vous dire si cela rentre en conflit avec notre règlement ou non !

Bonne journée à vous.

Pas ici, mais sur spoj.com, il y a une limite à la taille du code, souvent 50ko, mais parfois moins pour limiter le codage en dur de données, souvent des listes de valeurs pré-calculées (c'est classique), parfois pour du code déroulé méta-programmé (exemple là pour obtenir le #1 : https://www.spoj.com/ranks/SPP/). Je trouve intéressant la possibilité de limiter la taille du code ; quand je crée un problème sur spoj, je modifie parfois la limite du code pour éviter le codage en dur ; cependant la plupart du temps c'est inutile et je laisse le maxi. Il y a aussi certains problèmes où le juge prends en compte la taille du code ; le golf est un sport qui n'est pas sans intérêt, je ne le pratique que très peu.

Je trouve aussi intéressant de créer des problèmes qui nécessitent de produire un code non trivial qui contient du matériel précalculé bien choisi, comme une liste de polynômes... Celui-ci, par exemple, est assez redoutable : https://www.spoj.com/problems/KN2/ J'en ai créé d'autres où la limite de taille de code a son rôle : https://www.spoj.com/problems/SUMPRIM1/ et sa réciproque https://www.spoj.com/problems/SUMPRIM2/

Je crois possible de proposer ici des problèmes simples où l'inclusion de matériel fait partie intégrante du challenge, et donc il est nécessaire d'indiquer (partout) la taille limite de code mis en soumission ; et parfois de le limiter. Ce n'est qu'une proposition. Il y a déjà de très jolies choses proposées, et je vais diriger mes élèves de-ci de-là sur prologin. Merci pour cette belle ressource.

Répondre au sujet

Vous devez vous enregistrer ou vous connecter pour poster des messages.