Contribution:
Un tableau 2D contenant deux valeurs distinctes (facultatives). Je vais utiliser 0 et 1 pour expliquer les règles. Le format d'entrée est bien sûr flexible.
Défi:
Les zéros sont de l'eau et les uns sont des îles. Afin d'assurer la solitude, votre tâche consiste à entourer toutes les îles d'eau en insérant des rangées et des colonnes de zéros. Vous ne voulez pas gaspiller l'eau, vous devez donc minimiser la quantité d'eau ajoutée. Dans le cas où plusieurs solutions nécessitent la même quantité d'eau ajoutée, vous devez ajouter des colonnes d'eau, pas des rangées. Je vais le montrer dans les cas de test.
Production:
Le nouveau tableau 2D modifié. Le format de sortie est bien sûr flexible.
Cas de test:
L'entrée et la sortie sont séparées par des tirets. Les zéros ajoutés sont affichés en caractères gras. Utilisez l'une des réponses ici si vous souhaitez convertir les cas de test dans des formats plus pratiques.
1
---
1
1 1
---
1 0 1
1 1
1 1
---
1 0 1
0 0 0
1 0 1
1 0
0 1
---
1 0 0
0 0 1
Notez que nous avons ajouté une colonne de zéros, pas une ligne de zéros. En effet, le nombre de zéros nécessaires est égal et les colonnes doivent être préférées.
1 0 0 0 1
0 1 0 1 0
0 0 1 0 0
0 1 0 1 0
---
1 0 0 0 1
0 0 0 0 0
0 1 0 1 0
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 1 0 1 0
Notez que nous avons ajouté des lignes, pas des colonnes, car cela nécessite le moins de zéros supplémentaires.
0 0 1 0 0
0 1 1 1 0
---
0 0 0 1 0 0 0
0 0 0 0 0 0 0
0 1 0 1 0 1 0
Cela nécessitait à la fois des colonnes et une ligne.
0 0 1 0 0
0 1 0 1 0
---
0 0 0 1 0 0 0
0 1 0 0 0 1 0
Mieux vaut ajouter deux colonnes qu'une ligne, car cela nécessite moins d'eau.
0 0
1 0
0 1
1 0
0 0
---
0 0
1 0
0 0
0 1
0 0
1 0
0 0
Mieux vaut ajouter deux lignes qu'une colonne, car il nécessite moins d'eau.
la source
Réponses:
Gelée , 37 octets
Essayez-le en ligne!
Fonction renvoyant un tableau 2D d'entiers. Notez que naturellement, dans Jelly, la liste singleton s'affiche comme sa valeur et
G
est donc utilisée pour formater la sortie.Le programme s'exécute en temps exponentiel, mais jusqu'à présent, je ne pouvais penser à aucun algorithme de temps polynomial. Utilisations
Ƥ
sur la fonction dyadique, cette fonctionnalité est postérieure au défi.la source
Python 2 ,
374346340339323317 octetsEssayez-le en ligne!
la source
[:]
peut être supprimé sans affecter la sortie.