Comme vous le savez tous, Zaphod Beeblebrox a dérobé le Coeur-en-Or. Grâce à son générateur d'improbabilité infinie, ce vaisseau devrait lui permettre d'atterrir sur Magrathea afin de séjourner dans son complexe hôtelier paradisiaque. Dans sa quête de recherche du bonheur infini improbable, il souhaite pouvoir bénéficier de la suite la plus luxueuse. Pour cela il doit se procurer son code d'accès.
Zaphod pense que ce code peut être obtenu en analysant des genres de cartes perforées contenues dans une serviette (pas de panique, le mot serviette désigne ici une sacoche ! ) qu'Arthur et Ford ont subtilisée à des Vogons.
Les cartes sont disponibles au téléchargement.
Ces cartes perforées étaient autrefois utilisées pour enregistrer des codes sources en langage C qui permettaient d'obtenir la clef des chambres d'hôtel.
Par bonheur, deux cartes encodant les 91 caractères utilisés dans les codes sources étaient aussi présentes dans la serviette.
La première des deux cartes encode les 80 caractères suivant (le premier est 0 et le dernier
est _) :
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,;:!.^&#"'([{}])|_

Le seconde carte encode les 11 caractères suivant (les trois derniers sont
>,  (espace) et \n (newline)) :
\+-*/=%<> \n

Chaque colonne correspond à un caractère. Par exemple, sur la première carte,
e est codé sur la 15e colonne. Les cases présentant des poinçons verts
correspondent à des 1 en binaire, les cases non poinçonnées à des 0.
Sur la colonne 15, les lignes 1, 2 et 3 sont poinçonnées. Le e s'exprime
donc en binaire par (00001110)2 (la ligne 0 est le bit de poids faible) 
ce qui correspond à (14)10 en décimal, qui est le code de e dans l'alphabet utilisé.
Chacune des autres cartes de l'archive disponible au téléchargement correspond à une ligne de code écrite en langage C, terminée par un caractère newline ` ', et dont les caractères sont encodés dans l'ordre à partir de la colonne 1. Par exemple, la carte suivante encode la ligne :
#include<stdio.h>

En effet, nous trouvons sur la première colonne, le code binaire
(01000101)2 = (69)10 qui correspond au
70e caractère : #.
Sur la deuxième colonne, nous avons le code
binaire (00010010)2 = (18)10 qui
correspond au 19e caractère : i. Colonne 18,
nous avons bien la valeur 90 qui correspond au 
passage à la ligne.
Comme les nombreux voyages intergalactiques sont pour le moins mouvementés et que l'on ne sait jamais qui l'on va rencontrer, un code indiqué en colonne 42 permet d'une part, d'ordonner les cartes afin de pouvoir écrire les lignes de code dans le bon ordre et d'autre part, de sécuriser le code.
En effet, cette colonne contient un code binaire correspondant à un nombre. Ce nombre permet de savoir si la carte est valide et doit être prise en compte ou pas.
La carte est valide si ce nombre est divisible par la somme de ses chiffres lorsqu'on l'écrit en base 4 et par la somme de ses chiffres lorsqu'on l'écrit en base 2. Par exemple, dans la carte précédente, la colonne 42 présente le code binaire (11100100)2 = (228)10 = (3210)4.
228 est divisible par 1+1+1+0+0+1+0+0=4 et aussi par 3+2+1+0=6, c'est donc un nombre valide.
La colonne 42 ne sert qu'à ça, et ne constitue pas un caractère de la chaîne de caractères encodée dans la carte (si la ligne de code contient plus de 42 colonnes, la colonne 42 ne fait pas partie de la ligne de programme).
Une fois que l'on a identifié toutes les cartes valides, il suffit de les classer dans l'ordre croissant des nombres de la colonne 42 et de décoder chaque carte pour obtenir le code source.
Le code de la suite convoitée par Zaphod, solution de ce défi, est le 42e nombre donné par l'exécutable issu de ce code source.
