Biorąc pod uwagę obraz, wypisz [szerokość w pikselach pełnej sekcji pionowej] 1 (jeśli taki istnieje). Jeśli nie ma przekroju pionowego, wyjście0
.
Dane wejściowe mogą być dostarczane jako plik lokalny lub tablica zagnieżdżona. Jeśli wybierzesz opcję wprowadzania jako tablicę zagnieżdżoną, białe piksele powinny być reprezentowane przez prawdziwą wartość, podczas gdy niebiałe piksele powinny być reprezentowane przez wartość falsey.
1. liczba sąsiadujących, całkowicie białych kolumn
Możesz to założyć
żaden obraz nie będzie większy niż 1000 pikseli kwadratowych
na obrazie będzie nie więcej niż jedna pełna sekcja pionowa
Przykłady
Wejścia:
Wyjścia:
50
57
0
0
Oto dwa pierwsze przykłady, podświetlone (na żółto), aby pokazać ich sekcje:
code-golf
image-processing
Zach Gates
źródło
źródło
Odpowiedzi:
Galaretka, 2 bajty
Wypróbuj tutaj!
Jeśli koduję taki obraz:
W zagnieżdżoną tablicę:
Następnie
P
pobiera iloczyn elementarny wszystkich wektorów rzędowych iS
sumuje wszystkie z nich, uzyskując długość pionowego wycinka. (Działa to tylko dlatego, że jest gwarancją tylko jeden przylegający plaster). W naszym przypadku, odpowiedź brzmi3
.źródło
ps
działa również w MATL!1
s, co oznacza, że wynikiemP
będzie[0,0,0...0]
, któregoS
um jest0
, zgodnie z oczekiwaniami.Xps
jednak konieczne , jeśli obraz może być pojedynczym wierszem (lub zapytać OP, czy istnieje minimalny rozmiar)APL, 4 bajty
Try it here.
To jest moja pierwsza odpowiedź APL!
Dzięki @ jimmy23013 i @NBZ za oszczędzanie bajtów!
źródło
(+/×/⍉)
nie działa(+/×⌿)
i to o 1 bajt krócej.+/×⌿
f←+/×⌿
f picture
Bash + wspólne narzędzia, 17
Jeśli nie używasz
grep
do przetwarzania obrazu , robisz to źle ;-).Wykorzystuje to
rs
narzędzie do transpozycji.rs
jest zawarty w OSX , ale będzie wymagał instalacji w większości systemów Linux z czymś takimsudo apt-get install rs
.Kolumny wejściowe są TABrozdzielone, a wiersze są oddzielone znakiem nowej linii:
Jeśli chcesz, możesz wstępnie przetworzyć przykładowe obrazy wejściowe do tego formatu za pomocą imagemagick i (GNU) sed. Na przykład:
źródło
Perl,
2122 bajtówNaprawiona wersja
Obejmuje +2 za
-lp
(-l
można pominąć i nadal byłoby poprawnym rozwiązaniem, ale jest brzydkie bez ostatniej linii)Podaj sekwencje 1 i 0 na 0 lub więcej liniach na STDIN. Możesz dodawać spacje, przecinki lub cokolwiek między cyframi, jeśli chcesz tak długo, jak jest to użycie. Spójne na wszystkich liniach.
Działa to jak pokazano, ale zamień
\xce
literalną wartością bajtu, aby uzyskać deklarowany wynikJeśli jest wiele przekrojów pionowych, to zwraca sumę wszystkich szerokości przekroju. Jeśli chcesz szerokość w pionie użytku odcinek
Stara wersja
Pierwotnie źle zrozumiałem wyzwanie i wdrożyłem program, który podaje wartość prawda lub fałsz na podstawie tego, czy w ogóle istnieje linia pionowa. Kod i objaśnienie tutaj dotyczą tej starej wersji
Gdybym tylko mógł dodać 1 = ~ po lewej stronie dla prawie idealnej symetrii ... Przypuszczam, że najbliższa byłaby
Wyjaśnienie
źródło
Python 2, 30 bajtów
Istnieje zaskakująco eleganckie rozwiązanie wykorzystujące wiele moich ulubionych wbudowanych funkcji połączonych razem.
Używając obrazu testowego z @ Lynn:
źródło
Pyth, 5
Wypróbuj tutaj
Wykorzystuje algorytm Lynna, ale postanowiłem go opublikować, aby pokazać, jak grać w golfa w wektorach w Pyth. Sztuką jest tu Łańcuch „cukier” pomocnicy składniowe
V
iF
tak, że klapka jest stosowana jako operacja wektorowych. Operator, który jest złożony, jest oczywiście mnożeniem, a następnie wynik jest sumowany, aby uzyskać ostateczną odpowiedź.źródło
JavaScript (ES6),
544543 bajtówNa podstawie odpowiedzi Jelly @ Lynn, ale ponieważ grał w golfa za pomocą
every
lubsome
zamiastreduce
. Pierwsza wersja koduje kolor czarny = 0, a druga koduje kolor czarny = 1.Edycja: Zapisano 2 kolejne bajty dzięki @ edc65.
źródło
map
J ,
56 bajtówJako argument przyjmuje macierz boolowską.
To jest moja pierwsza odpowiedź J! (mylił się przez 1,5 roku…)
*/
produkt kolumnowy+/
suma[:
cap (służy jako symbol zastępczy, ponieważ+/
nie powinien przyjmować lewego argumentu)Wypróbuj online!
źródło
CJam, 7 bajtów
Wypróbuj online!
źródło
Mathematica 24
Przyjmuje tablicę w następującej formie:
I w tym przypadku wyniki:
źródło
Length[Total@#~Cases~0]&
samych bajtów𝔼𝕊𝕄𝕚𝕟, 7 znaków / 9 bajtów
Try it here (Firefox only).
To świetny algorytm @ Lynn, ale znalazłem go niezależnie. (Myślałem, że gdzieś tam jest wbudowane, wciąż wyglądające: P)
Wyjaśnienie
МƟï
transponuje tablicę wejściową,ⓜ⨴$
zamienia każdy wektor wewnętrzny w jego iloczyn i⨭
sumuje wynikową tablicę.źródło
Japt ,
64 bajtówPobiera dane wejściowe jako tablicę wierszy,
1
będąc białymi i0
czarnym.Sprawdź to
Wyjaśnienie
źródło
y x_×
5. Właściwie toe
działa równie dobrze×
, więcy xe
dla 4 :-)