Парадокс Банаха – Тарского гласит, что, имея шар в трехмерном пространстве, вы можете разложить шар на конечное число точечных подмножеств. Эти непересекающиеся наборы точек могут затем быть повторно собраны, чтобы произвести две копии исходного шара. Тогда теоретически у вас будет два одинаковых шара.
Процесс повторной сборки состоит только в перемещении вышеупомянутых точечных подмножеств и их вращении без изменения их пространственной формы. Это можно сделать всего с пятью непересекающимися подмножествами.
Непересекающиеся множества не имеют общих элементов по определению. Где A
и B
- любые два точечных подмножества исходного шара, общие элементы между A
и B
являются пустым множеством. Это показано в следующем уравнении.
Для непересекающихся множеств ниже общие члены образуют пустое множество.
Соревнование
Напишите программу, которая может принимать входной ASCII-код «ball» и выводить дубликат «ball».
вход
Вот пример ввода мяча:
##########
###@%$*.&.%%!###
##!$,%&?,?*?.*@!##
##&**!,$%$@@?@*@&&##
#@&$?@!%$*%,.?@?.@&@,#
#,..,.$&*?!$$@%%,**&&#
##.!?@*.%?!*&$!%&?##
##!&?$?&.!,?!&!%##
###,@$*&@*,%*###
##########
Каждая сфера очерчена знаками фунта ( #
) и заполнена любой из тезисов символов: .,?*&$@!%
. Каждый ввод будет 22x10 символов (ширина по высоте).
Создание дубликата
Во-первых, каждой точке внутри шара присваивается пронумерованная точка на основе индекса в .,?*&$@!%
. Вот приведенный выше пример, когда-то пронумерованный:
##########
###7964151998###
##86295323431478##
##5448269677374755##
#75637896492137317572#
#21121654386679924455#
##1837419384568953##
##85363518238589##
###2764574294###
##########
Затем каждая точка сдвигается на одну единицу (девять переходит в одну):
##########
###8175262119###
##97316434542589##
##6559371788485866##
#86748917513248428683#
#32232765497781135566#
##2948521495679164##
##96474629349691##
###3875685315###
##########
Наконец, каждое новое значение точки преобразуется обратно в соответствующий ему символ:
##########
###!.@&,$,..%###
##%@?.$*?*&*,&!%##
##$&&%?@.@!!*!&!$$##
#!$@*!%.@&.?,*!*,!$!?#
#?,,?,@$&*%@@!..?&&$$#
##,%*!&,.*%&$@%.$*##
##%$*@*$,%?*%$%.##
###?!@&$!&?.&###
##########
Выход
Затем эти два шара выводятся бок о бок в этой форме (разделенной четырьмя пробелами на экваторах):
########## ##########
###@%$*.&.%%!### ###!.@&,$,..%###
##!$,%&?,?*?.*@!## ##%@?.$*?*&*,&!%##
##&**!,$%$@@?@*@&&## ##$&&%?@.@!!*!&!$$##
#@&$?@!%$*%,.?@?.@&@,# #!$@*!%.@&.?,*!*,!$!?#
#,..,.$&*?!$$@%%,**&&# #?,,?,@$&*%@@!..?&&$$#
##.!?@*.%?!*&$!%&?## ##,%*!&,.*%&$@%.$*##
##!&?$?&.!,?!&!%## ##%$*@*$,%?*%$%.##
###,@$*&@*,%*### ###?!@&$!&?.&###
########## ##########
Примечание. Сдвиг значений точек и более поздних символов является символом поворотов, выполняемых для повторной сборки подмножеств точек (группировок символов).