Calcolatore del problema delle strette di mano
Scopra quante strette di mano avvengono quando ognuno saluta tutti gli altri una sola volta: 5 persone fanno 10 strette di mano e 4 ne fanno 6, e un totale di 10 torna a essere 5 persone. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Numero di persone
- 5
- Modalità di calcolo
- forward
- Strette di mano
- 10
- N massimo
- 1.000.000
Questo calcolatore del problema delle strette di mano risponde alla classica domanda di combinatoria: se n persone si incontrano e ogni coppia si stringe la mano esattamente una volta, quante strette di mano avvengono? La forma chiusa è n scelto due, scritta C(n, 2) = n(n − 1)/2, gli stessi numeri triangolari che compaiono nella teoria dei grafi come conteggio degli spigoli del grafo completo K_n. Lo strumento esegue anche l'inverso: dato un totale di strette di mano che è un valore esatto di C(n, 2), recupera l'unico conteggio intero non negativo di persone n. Alcune verifiche che già conosce includono cinque persone che danno dieci strette di mano, quattro persone che ne danno sei, e zero o una persona che ne danno zero. Il motore usa solo aritmetica BigInt deterministica — nessuna chiamata di rete, nessun campionamento e nessuna scorciatoia legata alla data.
Cosa conta il problema delle strette di mano e cosa contiene la risposta
Il problema delle strette di mano è la storia quotidiana dietro il coefficiente binomiale C(n, 2). Ogni stretta di mano è una coppia non ordinata di persone, quindi il totale è il numero di modi di scegliere due persone tra n senza ripetizione e senza riguardo per l'ordine. Questo è esattamente n moltiplicato per n meno uno, diviso due, perché può mettere le persone in fila e abbinare ognuna con tutte quelle successive nella fila senza contare due volte.
Lo stesso intero è il numero di spigoli nel grafo completo su n vertici, l'(n − 1)-esimo numero triangolare quando indicizzato con attenzione da zero, e un classico riscaldamento nei corsi di matematica discreta. Questo calcolatore restituisce un flag mode di forward o inverse, il conteggio di persone n, il totale esatto di strette di mano come stringa decimale, una breve stringa formula come C(5, 2) = 5*(5-1)/2, e la n massima pubblicata così i client possono validare prima di inviare un lotto.
Se ha bisogno di combinazioni ordinarie con un k libero, permutazioni, o combinazioni di multiset con ripetizione, usi quegli strumenti dedicati; questa pagina risponde solo al conteggio delle strette di mano e al suo inverso esatto.
Dove si colloca il conteggio delle strette di mano nello studio, nel codice e nella modellazione
Gli studenti incontrano il problema delle strette di mano quando un libro di testo introduce le combinazioni, quando un insegnante chiede quante partite servono in un torneo a girone all'italiana, o quando la teoria dei grafi definisce per la prima volta il grafo completo K_n. Gli insegnanti possono pregenerare le soluzioni per n modeste senza affidarsi ad app calcolatrici opache che arrotondano grandi interi o passano in silenzio alla notazione scientifica.
Gli sviluppatori richiamano lo stesso contratto da script per generare vettori di test deterministici, per dimensionare carichi di lavoro di confronto a coppie, o per soddisfare consegne di programmazione che richiedono il valore esatto di C(n, 2) invece di un'approssimazione in virgola mobile. Nelle gare serve spesso una fonte rapida e offline di ranghi triangolari delle strette di mano, così le soluzioni possono essere verificate senza scaricare tabelle OEIS sotto pressione di tempo.
Analisti di prodotto e operazioni usano il conteggio quando stimano quanti incontri uno-a-uno o spigoli non diretti unici sorgano tra n partecipanti se ogni coppia interagisce una volta. Il percorso inverso è altrettanto utile: dato un totale di incontri riportato che dichiara copertura completa a coppie, recuperi n e verifichi che la cifra sia combinatoriamente possibile prima che entri in una dashboard.
Casi d'uso
Compiti e verifiche di combinatoria
Cerchi totali esatti C(n, 2) di strette di mano e inverta conteggi triangolari per esercizi e quiz da manuale.
Dimensionamento di gironi e coppie
Conti coppie non dirette tra n partecipanti per tornei, piani di incontri o stime di spigoli di grafi completi.
Domande frequenti
Come è definito il conteggio delle strette di mano?
Se ogni coppia tra n persone si stringe la mano una volta, il totale è C(n, 2) = n(n − 1)/2.
Cosa succede se n è negativa?
Il problema delle strette di mano richiede n ≥ 0.
Perché il risultato è una stringa invece di un numero?
I totali di strette di mano crescono quadraticamente e possono superare gli interi sicuri di JavaScript per n grandi.
Posso risalire al numero di persone partendo dalle strette di mano?
Sì. Inserisca il totale delle strette al posto del numero di persone e otterrà la dimensione del gruppo: 10 strette corrispondono a 5 persone. Un totale che non corrisponde esattamente a nessun gruppo viene rifiutato.
Qual è il gruppo più grande che il calcolatore accetta?
Fino a un milione di persone. Anche a quella dimensione il risultato resta esatto, sebbene il numero di strette di mano cresca all'incirca con il quadrato del gruppo.
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/combo/handshake \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":5}'const res = await fetch("https://api.kit.forhosting.com/combo/handshake", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/combo/handshake",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/combo/handshake", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/combo/handshake", 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
{
"n": 5
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "combo.handshake",
"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.
Limiti
max_n | 1000000 |
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
I conteggi negativi di persone vengono rifiutati con invalid_input così le celle sbagliate di un foglio di calcolo non diventano mai risposte sbagliate in silenzio.
Cosa conta il problema delle strette di mano e cosa contiene la risposta
Non esiste un percorso approssimato in virgola mobile presentato come verità né un campionamento casuale di coppie: il motore costruisce il prodotto esatto con BigInt entro l'intervallo supportato, oppure rifiuta l'input con invalid_input. I casi rifiutati includono sia n sia handshakes mancanti, non interi, frazioni, notazione scientifica, valori superiori al limite documentato, qualsiasi n negativa, totali di strette di mano negativi, e totali che non sono esattamente qualche C(n, 2).
Come vengono letti n e handshakes, e come funziona la radice triangolare inversa
Sono ammessi segni più iniziali opzionali sui valori non negativi; spazi incorporati, prefissi esadecimali e notazione esponenziale vengono respinti con un messaggio chiaro, così una cella sbagliata non genera un conteggio sbagliato. Zero e uno per n sono validi e restituiscono zero strette di mano, coerenti con il grafo completo vuoto e il grafo a singolo vertice. Se entrambi i campi sono forniti, il motore verifica la coerenza così una coppia non corrispondente fallisce rumorosamente invece di scegliere silenziosamente un lato. I campi preferiti sono n per il numero di persone e handshakes per il totale da invertire, ma sono accettati anche gli alias people e persons per n e h e count per handshakes, così fogli di calcolo, query string e moduli tipizzati possono riusare lo stesso contratto. Il motore impone un massimo rigido di un milione su n, il che mantiene memoria e latenza entro un budget prevedibile sul percorso gratuito del browser e sul Worker edge, anche se i numeri triangolari crescono quadraticamente. La modalità forward moltiplica n per n meno uno con BigInt e divide per due così i prodotti intermedi non perdono mai cifre come farebbero i double IEEE oltre il cinquantatreesimo bit. La modalità inverse risolve l'equazione quadratica n al quadrato meno n meno due h uguale zero verificando se il discriminante uno più otto h è un quadrato perfetto tramite radice quadrata intera; quando lo è e la n risultante è un intero nell'intervallo, quella n viene restituita, altrimenti invalid_input spiega che il totale di strette di mano non è esatto. Ogni intermedio è un BigInt e il conteggio finale di strette di mano viene serializzato con toString così il JSON non tronca mai valori grandi. Abbini l'esecuzione gratuita nel browser di questa pagina con l'API a pagamento quando ha bisogno dello stesso risultato matematico all'interno di una pipeline automatizzata, senza reimplementare da sé le radici triangolari.
Dove si colloca il conteggio delle strette di mano nello studio, nel codice e nella modellazione
In questa pagina il lavoro avviene interamente nel Suo browser; tramite l'API ogni ricerca riuscita costa $0.002, la validazione fallita non viene addebitata e nulla viene conservato dopo la restituzione della risposta. Questa separazione — esplorazione interattiva gratuita e API identica a pagamento — corrisponde al resto del catalogo tier A di KIT e Le permette di passare da una dimostrazione in aula a una pipeline automatizzata senza cambiare il risultato matematico. Lo abbini a strumenti binomiali o di combinazioni di multiset quando ha bisogno di coefficienti correlati, a contatori di cammini reticolari quando l'ordine dei passi conta, e ad altri endpoint di matematica quando sta costruendo un piccolo laboratorio di strumenti combinatori gratuiti e deterministici.
Casi di integrazione
Fixture di test deterministiche
Generi stringhe decimali di strette di mano riproducibili per test unitari, controlli di proprietà e verifiche CI senza mantenere tabelle a mano.
Domande tecniche
Quanto costa il calcolatore del problema delle strette di mano?
È gratis nel browser in questa pagina. Tramite l'API una richiesta riuscita costa $0.002; gli input non validi non vengono addebitati.
Posso recuperare n da un totale di strette di mano?
Sì. Fornisca handshakes (o h / count). Il totale deve essere esattamente un valore C(n, 2); altrimenti la richiesta fallisce con invalid_input.