Étant donné une image, affichez la [largeur en pixels d'une section verticale complète] 1 (si elle existe). Si aucune section verticale n'existe, sortie 0
.
L'entrée peut être fournie sous forme de fichier local ou de tableau imbriqué. Si vous choisissez de prendre l'entrée comme un tableau imbriqué, les pixels blancs doivent être représentés par une valeur véridique tandis que les pixels non blancs doivent être représentés par une valeur falsey.
1. le nombre de colonnes contiguës entièrement blanches
Vous pouvez supposer que
aucune image ne dépassera 1000 pixels carrés
il n'y aura pas plus d'une section verticale complète par image
Exemples
Contributions:
Les sorties:
50
57
0
0
Voici les deux premiers exemples, surlignés (en jaune) pour montrer leurs sections:
code-golf
image-processing
Zach Gates
la source
la source
Réponses:
Gelée, 2 octets
Essayez-le ici!
Si j'encode une image comme ceci:
Dans un tableau imbriqué comme celui-ci:
Prend ensuite
P
le produit élément par élément de tous les vecteurs de ligne etS
additionne tous ceux du résultat, donnant la longueur de la tranche verticale. (Cela ne fonctionne que parce qu'il est garanti qu'il n'y aura qu'une seule tranche contiguë.) Dans notre cas, la réponse est3
.la source
ps
fonctionne aussi en MATL!1
s, ce qui signifie que le résultat deP
sera[0,0,0...0]
, dont leS
um est0
, comme prévu.Xps
, cependant, si l'image peut être une seule ligne (ou demander à l'OP s'il y a une taille minimale)APL, 4 octets
Try it here.
Ceci est ma première réponse APL!
Merci à @ jimmy23013 et @NBZ pour avoir économisé des octets!
la source
(+/×/⍉)
ne fonctionne pas.(+/×⌿)
et c'est 1 octet plus court.+/×⌿
f←+/×⌿
f picture
Bash + utilitaires communs, 17
Si vous n'utilisez pas
grep
pour le traitement d' image , vous vous trompez ;-).Cela utilise l'
rs
utilitaire pour effectuer la transposition.rs
est intégré dans OSX , mais devra être installé dans la plupart des linux avec quelque chose commesudo apt-get install rs
.Les colonnes d'entrée sont TABséparées et les lignes sont séparées par des sauts de ligne:
Si vous le souhaitez, vous pouvez prétraiter les images d'entrée d'exemple dans ce format avec imagemagick et (GNU) sed. Par exemple:
la source
Perl,
2122 octetsVersion fixe
Comprend +2 pour
-lp
(-l
peut être omis et serait toujours une solution valide, mais c'est moche sans la nouvelle ligne finale)Donnez des séquences de 1 et de 0 sur 0 ou plusieurs lignes sur STDIN. Vous pouvez ajouter des espaces ou des virgules ou quoi que ce soit entre les chiffres si vous le souhaitez tant que l'utilisation est cohérente sur toutes les lignes.
Cela fonctionne comme indiqué, mais remplacez
\xce
par la valeur d'octet littérale pour obtenir le score revendiquéS'il y a plusieurs sections verticales, cela renvoie la somme de toutes les largeurs de section. Si vous voulez la largeur d' une section verticale, utilisez
Ancienne version
À l'origine, j'ai mal compris le défi et mis en œuvre un programme qui donne vrai ou faux en fonction de l'existence d'une ligne verticale. Le code et l'explication sont ici pour cette ancienne version
Si seulement je pouvais ajouter 1 = ~ à gauche pour une symétrie presque parfaite ... Je suppose que le plus proche serait
Explication
la source
Python 2, 30 octets
Il existe une solution étonnamment élégante utilisant plusieurs de mes fonctions intégrées préférées enchaînées.
Utilisation de l'image de test de @Lynn:
la source
Pyth, 5
Essayez-le ici
Cela utilise l'algorithme de Lynn, mais j'ai décidé de le poster juste pour montrer comment jouer au golf des opérations vectorielles en Pyth. L'astuce consiste ici à enchaîner les assistants de syntaxe "sucre"
V
et àF
appliquer le pli comme une opération vectorielle. L'opérateur qui est plié est bien sûr la multiplication, puis le résultat est additionné pour obtenir la réponse finale.la source
JavaScript (ES6),
544543 octetsBasé sur la réponse de @ Lynn's Jelly, bien que depuis joué au golf en utilisant
every
ousome
au lieu dereduce
. La première version code noir = 0 tandis que la seconde code noir = 1.Edit: enregistré 2 octets supplémentaires grâce à @ edc65.
la source
map
J ,
56 octetsPrend la matrice booléenne comme argument.
Ceci est ma première réponse J! (a eu tort pendant 1½ ans…)
*/
produit en colonne+/
somme[:
cap (sert d'espace réservé car+/
ne doit pas prendre un argument de gauche)Essayez-le en ligne!
la source
CJam, 7 octets
Essayez-le en ligne!
la source
Mathematica 24
Prend un tableau sous la forme suivante:
Et dans ce cas, les sorties:
la source
Length[Total@#~Cases~0]&
mais le même nombre d'octets𝔼𝕊𝕄𝕚𝕟, 7 caractères / 9 octets
Try it here (Firefox only).
C'est le grand algorithme de @ Lynn, mais je l'ai trouvé indépendamment. (Je pensais qu'il y avait une fonction intégrée pour cela quelque part, toujours à la recherche: P)
Explication
МƟï
transpose le tableau d'entrée,ⓜ⨴$
transforme chaque vecteur intérieur en son produit et⨭
additionne le tableau résultant.la source
Japt ,
64 octetsPrend les entrées sous forme de tableau de lignes,
1
blanc et0
noir.Essaye-le
Explication
la source
y x_×
pour 5. En fait,e
fonctionne aussi bien×
, doncy xe
pour 4 :-)