O paradoxo de Banach-Tarski afirma que, dada uma bola no espaço tridimensional, você pode decompor a bola em um número finito de subconjuntos de pontos. Esses conjuntos de pontos separados podem ser remontados para produzir duas cópias da bola inicial. Você teria, teoricamente, duas bolas idênticas.
O processo de remontagem consiste apenas em mover os subconjuntos de pontos mencionados acima e girá-los, sem alterar sua forma espacial. Isso pode ser feito com apenas cinco subconjuntos separados.
Conjuntos disjuntos não têm elementos comuns por definição. Onde A
e B
existem quaisquer subconjuntos de dois pontos da bola inicial, os elementos comuns entre A
e B
é um conjunto vazio. Isso é mostrado na seguinte equação.
Para os conjuntos disjuntos abaixo, os membros comuns formam um conjunto vazio.
O desafio
Escreva um programa que possa receber uma "bola" ASCII de entrada e gerar uma "bola" duplicada.
Entrada
Aqui está um exemplo de bola de entrada:
##########
###@%$*.&.%%!###
##!$,%&?,?*?.*@!##
##&**!,$%$@@?@*@&&##
#@&$?@!%$*%,.?@?.@&@,#
#,..,.$&*?!$$@%%,**&&#
##.!?@*.%?!*&$!%&?##
##!&?$?&.!,?!&!%##
###,@$*&@*,%*###
##########
Cada esfera é delineada por sinais de libra ( #
) e encheu-se com qualquer um dos caracteres teses: .,?*&$@!%
. Cada entrada será de 22 x 10 caracteres (largura por altura).
Criando uma duplicata
Primeiro, cada ponto dentro da bola recebe um ponto numerado com base em seu índice em .,?*&$@!%
. Aqui está o exemplo acima, uma vez numerado:
##########
###7964151998###
##86295323431478##
##5448269677374755##
#75637896492137317572#
#21121654386679924455#
##1837419384568953##
##85363518238589##
###2764574294###
##########
Então, cada ponto é deslocado um (nove vai para um):
##########
###8175262119###
##97316434542589##
##6559371788485866##
#86748917513248428683#
#32232765497781135566#
##2948521495679164##
##96474629349691##
###3875685315###
##########
Finalmente, cada novo valor de ponto é convertido novamente em seu caractere correspondente:
##########
###!.@&,$,..%###
##%@?.$*?*&*,&!%##
##$&&%?@.@!!*!&!$$##
#!$@*!%.@&.?,*!*,!$!?#
#?,,?,@$&*%@@!..?&&$$#
##,%*!&,.*%&$@%.$*##
##%$*@*$,%?*%$%.##
###?!@&$!&?.&###
##########
Resultado
Essas duas bolas são produzidas lado a lado, nesta forma (separadas por quatro espaços nos equadores):
########## ##########
###@%$*.&.%%!### ###!.@&,$,..%###
##!$,%&?,?*?.*@!## ##%@?.$*?*&*,&!%##
##&**!,$%$@@?@*@&&## ##$&&%?@.@!!*!&!$$##
#@&$?@!%$*%,.?@?.@&@,# #!$@*!%.@&.?,*!*,!$!?#
#,..,.$&*?!$$@%%,**&&# #?,,?,@$&*%@@!..?&&$$#
##.!?@*.%?!*&$!%&?## ##,%*!&,.*%&$@%.$*##
##!&?$?&.!,?!&!%## ##%$*@*$,%?*%$%.##
###,@$*&@*,%*### ###?!@&$!&?.&###
########## ##########
Nota: A alteração dos valores dos pontos e dos caracteres posteriores é simbólica das rotações realizadas para remontar os subconjuntos de pontos (agrupamentos de caracteres).