Le paradoxe de Banach – Tarski stipule que, étant donné une balle dans un espace tridimensionnel, vous pouvez décomposer la balle en un nombre fini de sous-ensembles de points. Ces ensembles de points disjoints peuvent ensuite être réassemblés pour produire deux copies de la balle initiale. Vous auriez alors, théoriquement, deux boules identiques.
Le processus de réassemblage consiste à déplacer uniquement les sous-ensembles de points susmentionnés et à les faire pivoter, sans modifier leur forme spatiale. Cela peut être fait avec seulement cinq sous-ensembles disjoints.
Les ensembles disjoints n'ont par définition aucun élément commun. Où Aet Bsont deux sous-ensembles de points de la balle initiale, les éléments communs entre Aet Bsont un ensemble vide. Ceci est illustré dans l'équation suivante.

Pour les ensembles disjoints ci-dessous, les membres communs forment un ensemble vide.

Le défi
Écrivez un programme qui peut prendre une "boule" ASCII en entrée et sortir une "boule" en double.
Contribution
Voici un exemple de boule d'entrée:
##########
###@%$*.&.%%!###
##!$,%&?,?*?.*@!##
##&**!,$%$@@?@*@&&##
#@&$?@!%$*%,.?@?.@&@,#
#,..,.$&*?!$$@%%,**&&#
##.!?@*.%?!*&$!%&?##
##!&?$?&.!,?!&!%##
###,@$*&@*,%*###
##########
Chaque sphère est décrite par le signe dièse ( #) et rempli avec l' une des thèses caractères: .,?*&$@!%. Chaque entrée sera de 22x10 caractères (largeur par hauteur).
Création d'un doublon
Tout d'abord, chaque point à l'intérieur de la balle reçoit un point numéroté en fonction de son index dans .,?*&$@!%. Voici l'exemple ci-dessus, une fois numéroté:
##########
###7964151998###
##86295323431478##
##5448269677374755##
#75637896492137317572#
#21121654386679924455#
##1837419384568953##
##85363518238589##
###2764574294###
##########
Ensuite, chaque point est décalé d'un (neuf contre un):
##########
###8175262119###
##97316434542589##
##6559371788485866##
#86748917513248428683#
#32232765497781135566#
##2948521495679164##
##96474629349691##
###3875685315###
##########
Enfin, chaque nouvelle valeur de point est reconvertie en son caractère correspondant:
##########
###!.@&,$,..%###
##%@?.$*?*&*,&!%##
##$&&%?@.@!!*!&!$$##
#!$@*!%.@&.?,*!*,!$!?#
#?,,?,@$&*%@@!..?&&$$#
##,%*!&,.*%&$@%.$*##
##%$*@*$,%?*%$%.##
###?!@&$!&?.&###
##########
Production
Ces deux boules sont ensuite sorties côte à côte, sous cette forme (séparées par quatre espaces aux équateurs):
########## ##########
###@%$*.&.%%!### ###!.@&,$,..%###
##!$,%&?,?*?.*@!## ##%@?.$*?*&*,&!%##
##&**!,$%$@@?@*@&&## ##$&&%?@.@!!*!&!$$##
#@&$?@!%$*%,.?@?.@&@,# #!$@*!%.@&.?,*!*,!$!?#
#,..,.$&*?!$$@%%,**&&# #?,,?,@$&*%@@!..?&&$$#
##.!?@*.%?!*&$!%&?## ##,%*!&,.*%&$@%.$*##
##!&?$?&.!,?!&!%## ##%$*@*$,%?*%$%.##
###,@$*&@*,%*### ###?!@&$!&?.&###
########## ##########
Remarque: Le décalage des valeurs des points et des caractères ultérieurs est symbolique des rotations effectuées pour réassembler les sous-ensembles de points (regroupements de caractères).