Calculateur de tuyaux et citernes gratuit en ligne
Deux tuyaux qui remplissent une cuve en 4 et 6 heures la remplissent ensemble en 2,4 heures. Indiquez le temps que met chaque arrivée pour remplir la cuve et chaque vidange pour la vider, et obtenez le débit net, le temps nécessaire et l'état. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Tuyaux de remplissage (heures chacun, seul)
- 4, 6
- Débit net (fraction du réservoir par heure)
- 0,4166666667
- Heures pour remplir
- 2,4
- État
- Remplissage
Taux net de remplissage pour des réservoirs avec tuyaux d'entrée et drains de sortie, renvoyant les heures pour remplir ou vider. Gratuit, déterministe et privé dans votre navigateur. Sans compte.
Comment fonctionnent les problèmes de robinets
Ces problèmes classiques traitent la cuve pleine comme une unité de travail. Un tuyau qui la remplirait seul en H heures ajoute 1/H de la cuve chaque heure, et une vidange qui la viderait en H heures en retire 1/H chaque heure. La somme de tous ces débits signés donne le débit net. Avec des arrivées de 4 et 6 heures, le débit net vaut environ 0,4166666667 de cuve par heure, et un divisé par ce débit donne 2,4 heures pour remplir. Un débit net négatif signifie que la cuve se vide, et la même division donne les heures jusqu'à ce qu'elle soit vide.
Lire le résultat et éviter le piège classique
L'état indique d'un coup d'œil si la cuve se remplit, se vide ou reste à l'arrêt, ce qui arrive quand entrée et sortie s'annulent. Seul le temps pertinent est donné : les heures de remplissage quand elle se remplit, les heures de vidange quand elle se vide. Le piège classique consiste à additionner ou à moyenner les temps, par exemple prendre 4 et 6 heures pour 10 ou 5 ; ce sont les débits qui s'additionnent, pas les temps. Indiquez toutes les arrivées et toutes les vidanges du problème, dans la même unité de temps.
Entrées et sorties
Un nombre isolé est accepté et enveloppé en liste d'un élément pour plus de commodité. Au moins un des deux champs doit être présent avec au moins une entrée ; une requête vide est rejetée immédiatement. Les messages d'erreur utilisent des sous-chaînes stables en anglais pour le harnais de tests.
Les entrées sont validées avant toute arithmétique. Les sorties numériques utilisent un arrondi documenté pour la stabilité entre exécutions et canaux.
Cas d’usage
Devoirs et examens
Vérifiez des problèmes quantitatifs classiques avec des réponses stables et reproductibles.
Automatisation
Appelez la même fonction pure depuis des scripts sans installer de tableur ni de CAS.
Questions fréquentes
Est-ce gratuit ?
Oui. Le niveau A s'exécute entièrement dans votre navigateur sans compte.
Les résultats sont-ils stables ?
Oui. Les mathématiques déterministes et les exemples dorés figent le contrat.
Comment une vidange est-elle prise en compte ?
Comme un débit négatif. Une vidange qui viderait la cuve pleine en H heures retire 1/H de la cuve par heure, et s'ajoute avec un signe moins aux arrivées pour former le débit net.
Que signifie une cuve à l'arrêt ?
Que ce qui entre et ce qui sort se compensent : le débit net est pratiquement nul et le niveau n'avance dans aucun sens. Il n'y a alors aucun temps de remplissage ni de vidange à afficher.
Pourquoi additionner les débits et non les heures ?
Parce que chaque tuyau apporte une fraction de cuve par heure, et ces fractions s'additionnent. Additionner ou moyenner les heures, comme prendre 4 et 6 pour 10 ou 5, donne une mauvaise réponse ; le bon résultat est 2,4 heures.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/math/pipes-cisterns \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"fill_hours":[1],"empty_hours":[1]}'const res = await fetch("https://api.kit.forhosting.com/math/pipes-cisterns", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"fill_hours": [
1
],
"empty_hours": [
1
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/pipes-cisterns",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"fill_hours": [
1
],
"empty_hours": [
1
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/pipes-cisterns", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"fill_hours":[1],"empty_hours":[1]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"fill_hours":[1],"empty_hours":[1]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/pipes-cisterns", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"fill_hours": [
1
],
"empty_hours": [
1
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.pipes_cisterns",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
L'API démarre à $0.002.
Comment le modèle fonctionne
Les problèmes classiques de tuyaux et citernes traitent le réservoir plein comme une unité de travail. Chaque tuyau d'entrée qui remplirait seul le réservoir en H heures contribue un taux positif d'un sur H fractions de réservoir par heure. Chaque drain qui viderait le même réservoir plein en H heures contribue un taux négatif d'un sur H. Le taux net signé décide du résultat : positif signifie que le réservoir se remplit, négatif qu'il se vide, et un taux quasi nul indique un blocage sans progrès. Vous pouvez lister plusieurs entrées sous fill_hours et plusieurs sorties sous empty_hours ; le solveur additionne chaque réciproque. Quand le taux net est positif, hours_to_fill vaut un divisé par ce taux ; quand il est négatif, hours_to_empty vaut un sur la valeur absolue. Cette arithmétique pure est entièrement déterministe et s'exécute gratuitement dans le navigateur avec la même fonction pure que le chemin API. Les entrées sont validées avant tout calcul afin que types incorrects et valeurs hors plage deviennent des erreurs invalid_input claires plutôt que des NaN silencieux.
Entrées et sorties
Fournissez fill_hours et empty_hours comme tableaux de nombres positifs, ou omettez un côté s'il n'y a que des entrées ou que des sorties. En cas de succès la charge utile inclut toujours net_rate_per_hour, hours_to_fill, hours_to_empty et status pour que les clients lient des métriques d'interface sans deviner les noms de champs. status vaut filling, emptying ou stalled. hours_to_fill est null lorsque le réservoir ne se remplit pas ; hours_to_empty est null lorsqu'il ne se vide pas. L'implémentation est entièrement déterministe et s'exécute gratuitement dans le navigateur avec la même fonction pure que le chemin API.
Cas limites et contraintes
Consultez les exemples dorés pour les chemins de succès canoniques et le chemin d'erreur pour un temps de remplissage non positif. L'implémentation est entièrement déterministe et s'exécute gratuitement dans le navigateur. Chaque valeur d'heures doit être un nombre fini strictement supérieur à zéro ; zéro, négatifs ou non numériques échouent avec invalid_input. Des taux opposés égaux renvoient status stalled avec net_rate_per_hour à zéro et les deux champs d'heures à null, sans division par zéro. Des valeurs intermédiaires énormes qui débordent IEEE-754 deviennent une erreur hors plage plutôt que des champs nuls.
Cas d'intégration
Démonstrations pédagogiques
Montrez des exemples résolus avec des fixtures dorés alignés sur le widget gratuit et l'API.
Questions techniques
Appelle-t-il le réseau ?
Non. Le moteur parse garde tout sur l'appareil dans le widget gratuit.
Et si mon entrée est invalide ?
Vous recevez invalid_input avec un message clair en anglais.
Qui est l'auteur de cette capacité ?
abuela dans l'atelier KIT de ForHosting.