La paradoja de Banach-Tarski establece que, dada una pelota en un espacio tridimensional, puede descomponer la pelota en un número finito de subconjuntos de puntos. Estos conjuntos de puntos disjuntos se pueden volver a montar para producir dos copias de la bola inicial. Entonces, teóricamente, tendrías dos bolas idénticas.
El proceso de reensamblaje consiste en mover solo los subconjuntos de puntos antes mencionados y rotarlos, sin cambiar su forma espacial. Esto se puede hacer con tan solo cinco subconjuntos disjuntos.
Los conjuntos disjuntos no tienen elementos comunes por definición. Donde A
y B
son dos subconjuntos de puntos de la bola inicial, los elementos comunes entre A
y B
es un conjunto vacío. Esto se muestra en la siguiente ecuación.
Para los conjuntos disjuntos a continuación, los miembros comunes forman un conjunto vacío.
El reto
Escriba un programa que pueda tomar una "bola" ASCII de entrada y generar una "bola" duplicada.
Entrada
Aquí hay un ejemplo de bola de entrada:
##########
###@%$*.&.%%!###
##!$,%&?,?*?.*@!##
##&**!,$%$@@?@*@&&##
#@&$?@!%$*%,.?@?.@&@,#
#,..,.$&*?!$$@%%,**&&#
##.!?@*.%?!*&$!%&?##
##!&?$?&.!,?!&!%##
###,@$*&@*,%*###
##########
Cada esfera se describe por signos de número ( #
) y se llena con cualquiera de las tesis caracteres: .,?*&$@!%
. Cada entrada tendrá 22x10 caracteres (ancho por alto).
Crear un duplicado
Primero, cada punto dentro de la pelota recibe un punto numerado basado en su índice .,?*&$@!%
. Aquí está el ejemplo anterior, una vez numerado:
##########
###7964151998###
##86295323431478##
##5448269677374755##
#75637896492137317572#
#21121654386679924455#
##1837419384568953##
##85363518238589##
###2764574294###
##########
Luego, cada punto se desplaza uno hacia arriba (nueve va a uno):
##########
###8175262119###
##97316434542589##
##6559371788485866##
#86748917513248428683#
#32232765497781135566#
##2948521495679164##
##96474629349691##
###3875685315###
##########
Finalmente, cada nuevo valor de punto se convierte nuevamente a su carácter correspondiente:
##########
###!.@&,$,..%###
##%@?.$*?*&*,&!%##
##$&&%?@.@!!*!&!$$##
#!$@*!%.@&.?,*!*,!$!?#
#?,,?,@$&*%@@!..?&&$$#
##,%*!&,.*%&$@%.$*##
##%$*@*$,%?*%$%.##
###?!@&$!&?.&###
##########
Salida
Estas dos bolas se emiten de lado a lado, en esta forma (separadas por cuatro espacios en los ecuadores):
########## ##########
###@%$*.&.%%!### ###!.@&,$,..%###
##!$,%&?,?*?.*@!## ##%@?.$*?*&*,&!%##
##&**!,$%$@@?@*@&&## ##$&&%?@.@!!*!&!$$##
#@&$?@!%$*%,.?@?.@&@,# #!$@*!%.@&.?,*!*,!$!?#
#,..,.$&*?!$$@%%,**&&# #?,,?,@$&*%@@!..?&&$$#
##.!?@*.%?!*&$!%&?## ##,%*!&,.*%&$@%.$*##
##!&?$?&.!,?!&!%## ##%$*@*$,%?*%$%.##
###,@$*&@*,%*### ###?!@&$!&?.&###
########## ##########
Nota: Cambiar los valores de los puntos y los caracteres posteriores es simbólico de las rotaciones realizadas para reensamblar los subconjuntos de puntos (agrupaciones de caracteres).