En citant cette question sur SO (alerte spoiler!):
Cette question a été posée dans une interview avec Oracle.
Comment diviseriez-vous un nombre par 3 sans utiliser *, /, +, -,%, opérateurs?
Le numéro peut être signé ou non signé.
La tâche peut être résolue, mais voyez si vous pouvez écrire le code le plus court.
Règles:
- Effectuer la division entière requise (
/3) - Ne pas utiliser les opérateurs non basés sur le texte
*,/,+,-ou%(ou leurs équivalents, par exemple__div__ouadd()). Ceci s'applique également aux opérateurs d'incrémentation et de décrémentation, tels quei++oui--. L'utilisation d'opérateurs pour la concaténation de chaînes et le formatage est correcte. L'utilisation de ces caractères pour différents opérateurs, tels que l'-opérateur unaire pour les nombres négatifs, ou*pour représenter un pointeur en C est également acceptable. - La valeur d'entrée peut être arbitrairement grande (tout ce que votre système peut gérer), à la fois positive et négative
- L'entrée peut être sur STDIN ou ARGV ou entrée d'une autre manière
- Créez le code le plus court possible pour faire ce qui précède