N'est-ce pas gênant lorsque vous prenez une photo, mais l'arrière-plan nuit à la substance réelle de l'image? Je dirais que oui. J'ai besoin de savoir combien je dois recadrer pour me débarrasser de ce problème! Mais - comme d'habitude - je suis assez paresseux, j'ai donc besoin de quelqu'un pour faire ça pour moi ...
Tâche et règles
Étant donné une matrice binaire représentant l'image, affichez les dimensions (largeur et hauteur) de la plus petite sous-matrice qui contient tous les s de la matrice d'origine. Une sous-matrice est un bloc d'entrées adjacentes de la matrice d'origine. De manière équivalente, il s'agit d'une nouvelle matrice formée en chevauchant un sous-ensemble de lignes adjacentes et un sous-ensemble de colonnes adjacentes de l'original.
- Il est également permis de prendre la largeur et la hauteur de la matrice en entrée.
- L'entrée est garantie de contenir au moins un .
- Vous pouvez prendre des entrées et fournir des sorties par n'importe quelle méthode standard , tout en prenant note que ces failles sont interdites par défaut. Il s'agit de code-golf , essayez donc de terminer la tâche dans le moins d'octets possible dans la langue de votre choix.
Exemple
Cas de test
Entrée | Production [[0,1,0,0,0,1,0]] -> (5,1) ou (1,5) [[0,0,0,0,0], [0,1,0,1,0], [0,0,1,0,0]] -> (3,2) ou (2,3) [[1,1,1,1], [0,0,0,0], [0,0,0,0], [1,0,0,0]] -> (4,4) [[0,0,0,0,0,0], [0,1,0,1,0,1], [0,0,0,0,0,0]] -> (5,1) ou (1,5) [[0,0,0,0,0], [0,1,0,1,0], [0,0,1,0,0], [0,1,0,1,0], [ 0,0,0,0,0]] -> (3,3) [[0,0,0,0,0,0], [0,1,0,1,0,0], [0,1,1,0,1,1], [0,0,1, 0,1,0], [0,0,0,0,0,0]] -> (5,3) ou (3,5)
code-golf
array-manipulation
matrix
binary-matrix
M. Xcoder
la source
la source
Réponses:
MATL , 5 octets
Essayez-le en ligne! Ou vérifiez tous les cas de test .
Explication
la source
APL (Dyalog Unicode) , 10 octets SBCS
Fonction de préfixe tacite anonyme.
Essayez-le en ligne!
⍸
indices de 1s.(
…)
Appliquer à cela la fonction tacite suivante:⌊/
le minimum ( coordonnée y la plus basse et coordonnée x la plus basse )⌈/-
le maximum moins que (cela nous donne la gamme)1+
un plus que (pour être inclus)la source
Octave ,
57 5645 octetsVoici
find
le gros du travail: ilfinds
s'agit des indices de ligne et de colonne des entrées non nulles. Il suffit ensuite de trouver la différence entre le maximum et le minimum (plus un) pour chacun de ceux-ci séparément.Merci @beaker et @AndrasDeak pour -1 octet, et @LuisMendo pour -11 octets!
Essayez-le en ligne!
la source
Python 2 ,
9286 octetsEssayez-le en ligne!
la source
Gelée , 7 octets
Essayez-le en ligne!
Comment ça fonctionne
la source
Python 2 ,
6355 octets-8 avec l'aide de Vincent (prenez la matrice d'entrée comme un tableau Numpy)
Une fonction anonyme acceptant un réseau Numpy 2-d des entiers (en
{0,1}
) , qui renvoie une liste de nombres entiers,[width,height]
.Essayez-le en ligne!
Version non Numpy en 63 octets (acceptant une liste de listes d'entiers en
{0,1}
):Essayez-le en ligne!
Comment?
Compte tenu d' une matrice,
a
,for
chaque (v
) de la transposition,zip(*a)
eta
lui - même , nous trouvons la hauteur requise (compte tenu de la Transpose est la largeur).Le mappage à
max
traversv
produit une liste de zéros et de uns, indiquant si chaque ligne dev
contient des zéros . La représentation sous forme de chaîne de cette liste se trouve à l'aide de backticks (`...`
), cela donne une chaîne avec un interligne[
, puis les zéros et les délimités par,
(virgule + espace). Nous découpons cette chaîne à partir de l'index un par étapes de trois en utilisant[1::3]
une chaîne contenant uniquement les zéros et les uns, ce qui nous permet d'utiliser la fonction de chaînestrip
pour supprimer les zéros externes (strip('0')
).Par exemple:
la source
Retina 0.8.2 , 83 octets
Essayez-le en ligne! Explication:
Supprimez les lignes nulles de début et de fin.
Supprimez tous les
0
s sur les lignes au-dessus du dernier. Supprimez tous les1
deux, mais changez le chiffre en dessous sur la ligne suivante en1
dans ce cas. Ce bit ou les lignes ensemble.Comptez le nombre de lignes comme le nombre de sauts de ligne plus 1 et le nombre de colonnes comme le nombre de chiffres entre le premier et le dernier 1.
la source
J , 31 octets
Essayez-le en ligne!
Explication:
la source
q / kdb +, 16 octets
la source
Mathematica, 34 octets
Fonction pure. Prend une liste imbriquée d'entiers en entrée et renvoie une liste de deux entiers (la hauteur suivie de la largeur) en sortie. Le caractère Unicode est U + F3C7 pour
\[Transpose]
.la source
R ,
4846 octetsEssayez-le en ligne!
-2 octets enregistrés par Giuseppe.
la source
05AB1E ,
119 octets-2 octets grâce à @ Mr.Xcoder .
Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source
ζ‚Oε0Û0Üg
enregistre 2 octets.Gelée , 9 octets
Essayez-le en ligne!
la source
Haskell , 76 octets
Essayez-le en ligne!
la source
Japt,
1615 octetsEssayez-le ou exécutez tous les cas de test
Explication
la source
Rubis , 60 octets
Essayez-le en ligne!
la source