Paradoxe de l'hôtel de Hilbert
Avec trois clients dans les chambres 1 à 3 et deux nouveaux arrivants, chacun avance de deux chambres et les chambres 1 et 2 se libèrent. Saisissez votre registre et le nombre d'arrivants pour voir la nouvelle chambre de chaque client. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Tout se passe dans votre navigateur : gratuit, sans envoi de vos données.
L'hôtel de Hilbert est l'expérience de pensée classique sur l'infini : un hôtel complet aux chambres infinies peut toujours accueillir de nouveaux clients, en demandant simplement à chaque occupant de monter d'un étage. Vous envoyez le registre actuel — chaque client et son numéro de chambre — ainsi que le nombre de nouveaux arrivants, et vous recevez la nouvelle attribution pour chaque client, accompagnée de la liste des chambres libérées. Un nombre d'arrivants négatif est rejeté, car les clients ne peuvent pas « désarriver ». Le calcul est déterministe, sans hasard ni appels externes : une même entrée produit toujours la même réattribution.
Le paradoxe, rendu concret
L'expérience de pensée de David Hilbert imagine un hôtel aux chambres infinies, toutes occupées. À l'arrivée d'un nouveau client, un hôtel ordinaire complet doit le refuser ; pas celui de Hilbert. Le directeur demande simplement au client de la chambre 1 de passer à la 2, à celui de la chambre 2 de passer à la 3, et ainsi de suite — chacun monte d'une place, et la chambre 1 se libère.
Si un car de quarante touristes arrive, tout le monde monte de quarante chambres, libérant les chambres 1 à 40. Le simulateur du paradoxe de l'hôtel de Hilbert applique exactement ce décalage au registre que vous lui fournissez : le numéro de chambre de chaque client augmente du nombre d'arrivants, et les chambres libérées en bas de la numérotation sont renvoyées explicitement, pour que vous voyiez précisément où iraient les nouveaux venus.
La leçon contre-intuitive — un hôtel infini complet a toujours de la place — devient une simple liste vérifiable de déplacements.
Comment le décalage est calculé
L'algorithme est volontairement simple et entièrement déterministe. Vous fournissez une liste de clients actuels, chacun avec un nom et un numéro de chambre entier positif, ainsi que le nombre de nouveaux arrivants. Le simulateur valide le registre — chaque chambre doit être un entier positif et le nombre d'arrivants un entier non négatif — puis ajoute ce nombre à chaque numéro.
Un client en chambre 7 avec trois arrivants se retrouve en chambre 10. Le résultat renvoie, pour chaque client, son ancienne et sa nouvelle chambre, ainsi que la liste complète des chambres libérées : les entiers de 1 jusqu'au nombre d'arrivants. Aucun hasard, aucune horloge, aucun accès réseau dans le calcul : des appels répétés avec la même entrée renvoient des résultats identiques à l'octet près.
Où il s'inscrit
Cette capacité est conçue pour l'enseignement, les démonstrations et les vérifications rapides. Les enseignants l'utilisent pour transformer un paradoxe abstrait en quelque chose que les élèves peuvent manipuler : modifiez le nombre d'arrivants, observez chaque attribution se mettre à jour, et confirmez que les chambres libérées correspondent toujours aux nouveaux venus.
C'est aussi un exemple ludique de fonction de réattribution pure — l'opération « décaler chaque clé d'une constante » apparaît dans la répartition de charge, les tampons circulaires et le rehachage, et ce point d'accès la démontre sans aucune configuration.
Cas d’usage
Enseigner le paradoxe de façon interactive
Montrez aux élèves exactement vers quelle chambre chaque client se déplace lorsqu'un, dix ou mille nouveaux arrivants se présentent dans un hôtel complet.
Démontrer une fonction de décalage déterministe
Illustrez le schéma « décaler chaque clé d'une constante » utilisé dans le rehachage et la répartition de charge, avec un exemple mémorable.
Générer des données d'énigmes et de quiz
Produisez des attributions de chambres cohérentes avant et après décalage pour des énigmes mathématiques, sans calcul manuel.
Questions fréquentes
Combien cela coûte-t-il ?
Son exécution est également gratuite dans votre navigateur sur cette page, avec le même code.
Pourquoi un nombre d'arrivants négatif est-il rejeté ?
Parce que le paradoxe ne fonctionne que dans un sens : un hôtel infini complet peut toujours absorber plus de clients, mais les clients ne peuvent pas désarriver.
La simulation comporte-t-elle une part d'aléatoire ?
Non. Elle est entièrement déterministe — ni hasard, ni horloge, ni réseau. La même entrée renvoie toujours les mêmes attributions.
Quelles sont les limites d'entrée ?
Chaque numéro de chambre doit être un entier positif.
Modélise-t-elle un hôtel réellement infini ?
Elle simule l'étape finie du paradoxe : décaler un registre donné d'un nombre d'arrivants donné. L'infini est la morale de l'histoire — le décalage fonctionne quelle que soit la taille de l'hôtel.
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/hilberts-hotel-paradox \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"guests":[{"guest":"Ada","room":1},{"guest":"Alan","room":2},{"guest":"Grace","room":3}],"new_arrivals":2}'const res = await fetch("https://api.kit.forhosting.com/math/hilberts-hotel-paradox", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"guests": [
{
"guest": "Ada",
"room": 1
},
{
"guest": "Alan",
"room": 2
},
{
"guest": "Grace",
"room": 3
}
],
"new_arrivals": 2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/hilberts-hotel-paradox",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"guests": [
{
"guest": "Ada",
"room": 1
},
{
"guest": "Alan",
"room": 2
},
{
"guest": "Grace",
"room": 3
}
],
"new_arrivals": 2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/hilberts-hotel-paradox", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"guests":[{"guest":"Ada","room":1},{"guest":"Alan","room":2},{"guest":"Grace","room":3}],"new_arrivals":2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"guests":[{"guest":"Ada","room":1},{"guest":"Alan","room":2},{"guest":"Grace","room":3}],"new_arrivals":2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/hilberts-hotel-paradox", 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
{
"guests": [
{
"guest": "Ada",
"room": 1
},
{
"guest": "Alan",
"room": 2
},
{
"guest": "Grace",
"room": 3
}
],
"new_arrivals": 2
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.hilberts_hotel_paradox",
"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.
Limites
max_guests | 10000 |
max_arrivals | 1000000 |
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
Cette API simule exactement ce déplacement.
Comment le décalage est calculé
Un nombre négatif est rejeté avec une erreur invalid_input et n'est jamais facturé, car le paradoxe ne fonctionne que dans un sens — on peut toujours faire entrer plus de clients, mais on ne peut pas les désarriver.
Où il s'inscrit
Il fonctionne gratuitement dans votre navigateur sur cette page avec le même code que l'API : vous ne payez que lorsque vous l'automatisez, à $0.002 par requête. Les limites d'entrée gardent le registre raisonnable — jusqu'à dix mille clients et un million d'arrivants par appel — bien au-delà des besoins d'une classe ou d'une démo, tout en garantissant des réponses instantanées.
Questions techniques
Que contient le champ freed_rooms ?
Les numéros de chambres libérées par le décalage : les entiers de 1 jusqu'au nombre d'arrivants. Ce sont les chambres qu'occuperaient les nouveaux clients.