Calcolatore di tubi e cisterne gratis online
Due tubi che riempiono una vasca in 4 e 6 ore la riempiono insieme in 2,4 ore. Indichi quanto impiega ogni tubo a riempire la vasca e ogni scarico a svuotarla e ottenga la portata netta, il tempo necessario e lo stato. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Tubi di riempimento (ore ciascuno, da solo)
- 4, 6
- Portata netta (frazione del serbatoio all'ora)
- 0,4166666667
- Ore per riempire
- 2,4
- Stato
- In riempimento
Tasso netto di riempimento per serbatoi con tubi di ingresso e scarichi di uscita, restituendo le ore per riempire o svuotare. Gratis, deterministico e privato nel browser. Senza account.
Come funzionano i problemi di rubinetti e vasche
Questi problemi classici trattano la vasca piena come un'unità di lavoro. Un tubo che la riempirebbe da solo in H ore aggiunge 1/H della vasca ogni ora, e uno scarico che la svuoterebbe in H ore ne toglie 1/H ogni ora. La somma di tutte queste portate con segno dà la portata netta. Con tubi da 4 e 6 ore la portata netta è di circa 0,4166666667 di vasca all'ora, e uno diviso per questa portata dà 2,4 ore per riempirla. Una portata netta negativa indica che la vasca si svuota, e la stessa divisione dà le ore fino a quando resta vuota.
Come leggere il risultato e la trappola classica
Lo stato dice a colpo d'occhio se la vasca si riempie, si svuota o è ferma, cosa che accade quando entrata e uscita si annullano. Compare solo il tempo che ha senso: le ore di riempimento se si riempie, quelle di svuotamento se si svuota. La trappola classica è sommare o fare la media dei tempi, per esempio trattare 4 e 6 ore come 10 o 5; si sommano le portate, non i tempi. Indichi tutti i tubi e tutti gli scarichi del problema e tenga i tempi nella stessa unità.
Ingressi e uscite
Un numero singolo è accettato e avvolto come lista di un elemento per comodità. Almeno uno dei due campi deve essere presente con almeno una voce; una richiesta vuota viene rifiutata all'inizio. I messaggi di errore usano sottostringhe stabili in inglese per l'harness di test.
Gli input sono convalidati prima di qualsiasi aritmetica. Le uscite numeriche usano arrotondamento documentato per stabilità tra esecuzioni e canali.
Casi d'uso
Compiti ed esami
Controlli problemi quantitativi classici con risposte stabili e riproducibili.
Automazione
Chiami la stessa funzione pura da script senza installare fogli di calcolo né CAS.
Domande frequenti
È gratis?
Sì. Il livello A gira interamente nel browser senza account.
Come si considera uno scarico?
Come una portata negativa. Uno scarico che svuoterebbe la vasca piena in H ore toglie 1/H della vasca ogni ora, e si somma con il segno meno ai tubi di riempimento per dare la portata netta.
Che cosa significa che la vasca è ferma?
Che ciò che entra e ciò che esce si compensano: la portata netta è praticamente zero e il livello non avanza in nessun senso. In quel caso non c'è un tempo di riempimento né di svuotamento da mostrare.
Posso inserire più di due tubi?
Sì. Può elencare tutti i tubi di riempimento e tutti gli scarichi del problema; il calcolatore somma ogni portata. Se da una parte c'è un solo tubo, basta indicare quel singolo numero di ore.
Perché si sommano le portate e non le ore?
Perché ogni tubo apporta una frazione di vasca all'ora, e sono queste frazioni a sommarsi. Sommare o fare la media delle ore, come trattare 4 e 6 come 10 o 5, dà una risposta sbagliata; il risultato giusto è 2,4 ore.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"fill_hours": [
1
],
"empty_hours": [
1
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.pipes_cisterns",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
L'API parte da $0.002.
Come funziona il modello
I problemi classici di tubi e cisterne trattano il serbatoio pieno come un'unità di lavoro. Ogni tubo di ingresso che riempirebbe da solo il serbatoio in H ore contribuisce un tasso positivo di uno su H frazioni di serbatoio all'ora. Ogni scarico che svuoterebbe lo stesso serbatoio pieno in H ore contribuisce un tasso negativo di uno su H. Il tasso netto con segno decide l'esito: positivo significa che il serbatoio si riempie, negativo che si svuota, e un tasso quasi nullo indica stallo senza progressi. Può elencare più ingressi in fill_hours e più uscite in empty_hours; il risolutore somma ogni reciproco. Quando il tasso netto è positivo, hours_to_fill è uno diviso per quel tasso; quando è negativo, hours_to_empty è uno sul valore assoluto. Questa aritmetica pura è pienamente deterministica e gira gratis nel browser con la stessa funzione pura del percorso API. Gli input sono convalidati prima di qualsiasi calcolo così tipi errati e valori fuori intervallo diventano errori invalid_input chiari invece di NaN silenziosi.
Ingressi e uscite
Fornisca fill_hours e empty_hours come array di numeri positivi, oppure ometta un lato se applicano solo ingressi o solo uscite. In caso di successo il payload include sempre net_rate_per_hour, hours_to_fill, hours_to_empty e status così i client collegano metriche di interfaccia senza indovinare i nomi dei campi. status è filling, emptying o stalled. hours_to_fill è null quando il serbatoio non si riempie; hours_to_empty è null quando non si svuota. L'implementazione è pienamente deterministica e gira gratis nel browser con la stessa funzione pura del percorso API.
Casi limite e vincoli
L'implementazione è pienamente deterministica e gira gratis nel browser. Ogni valore di ore deve essere un numero finito strettamente maggiore di zero; zero, negativi o non numerici falliscono con invalid_input. Tassi opposti uguali restituiscono status stalled con net_rate_per_hour a zero e entrambi i campi ore a null, senza dividere per zero. Valori intermedi enormi che superano IEEE-754 diventano errore fuori intervallo invece di campi nulli.
Casi di integrazione
Dimostrazioni didattiche
Mostri esempi risolti con fixture golden allineati al widget gratis e all'API.
Domande tecniche
Chiama la rete?
No. Il motore parse tiene tutto sul dispositivo nel widget gratuito.
E se l'input non è valido?
Riceve invalid_input con un messaggio chiaro in inglese.
I risultati sono stabili?
Sì. La matematica deterministica e gli esempi golden fissano il contratto.
Chi è l'autore di questa capacità?
abuela nel laboratorio KIT di ForHosting.