Le jeu vidéo Minecraft consiste à placer et à supprimer différents types de blocs dans le réseau entier 3D qui compose le monde virtuel. Chaque point de réseau peut contenir exactement un bloc ou être vide (un bloc " aérien " officiellement). Dans ce défi, nous ne nous occuperons que d'un seul plan 2D horizontal du monde 3D, et d'un type de bloc: les coffres .
Les coffres permettent aux joueurs de stocker des objets. Lorsque deux coffres sont orthogonalement adjacents dans le même plan horizontal, leurs textures s'unissent et un coffre double avec deux fois la forme se forme. Rien de plus grand qu'un double coffre ne peut être fait; il n'y a pas de coffres triples ni de coffres quadruples.
Un bloc thoracique ne peut être placé dans un point de réseau vide que si ses quatre points adjacents orthogonalement sont tous vides, ou si exactement l'un contient un bloc thoracique qui ne fait pas déjà partie d'un double coffre. Ces règles de placement garantissent qu'il ne peut jamais y avoir d'ambiguïté sur les blocs de poitrine qui se lient pour former des doubles coffres.
Par exemple, supposons qu'il .s'agit d'un espace vide et d' Cun coffre: (Les chiffres sont également des espaces vides et uniquement à des fins d'identification.)
.......C..
.1.C2.C3..
........5C
.CC4..CC..
..........
- Un coffre peut être placé à l'emplacement 1 car ses 4 voisins sont vides.
- Un coffre peut être placé au point 2 car le coffre voisin ne fait pas (encore) partie d'un coffre double.
- Un coffre ne peut pas être mis en place 3 car il y aurait ambiguïté sur la façon dont le double coffre se forme.
- Un coffre ne peut pas être placé au point 4 car le coffre voisin fait déjà partie d'un coffre double.
- Un coffre peut être placé à l'endroit 5. Le double coffre voisin en diagonale n'affecte rien.
En supposant que la zone au-delà de la grille est vide, changer chaque .dans la grille en *si un coffre pourrait y être placé entraîne ceci:
******.C**
***C**C.**
*..***..*C
.CC.*.CC.*
*..***..**
*Bien sûr, tous les espaces ne peuvent pas être occupés par des coffres en même temps, mais si vous n'aviez qu'un seul coffre, il pourrait être placé dans l'un d'eux.
Défi
Ecrire un programme ou une fonction qui prend une .et Cgrille et change tous .à un *si un coffre pourrait être placé là, l' impression ou de retourner la grille résultante.
L'entrée peut provenir de stdin ou d'un fichier ou comme argument de chaîne pour une fonction.
Vous pouvez supposer que l'entrée est bien formée - c'est-à-dire une grille de texte parfaitement rectangulaire, d'au moins 1 caractère de large et de haut, contenant uniquement
.etCvous pouvez éventuellement supposer qu'il y a un retour à la ligne après la dernière ligne (et il peut y en avoir un dans la sortie ).Vous pouvez supposer que la disposition des coffres dans l'entrée est conforme aux règles ci-dessus. Il n'y aura jamais d'ambiguïtés sur les coffres qui forment des coffres doubles.
Si vous le souhaitez, vous pouvez utiliser tous les trois distincts ASCII imprimables caractères à la place
.,Cet*. Vous ne pouvez pas utiliser autre chose à la place des nouvelles lignes.Tous les coffres sont des coffres normaux. Coffres non piégés ou coffres ender .
Notation
La soumission avec le moins d'octets est gagnante.
Pour un défi lié à Minecraft qui est un peu plus difficile, essayez la détection de portail Nether .