tło
W pobliżu fabryki ogrodzenia wybuchła bomba atomowa! Ponieważ słupy ogrodzeniowe są niezbędne do przetrwania naszej cywilizacji, musimy uratować jak najwięcej. Wysyłamy roboty odporne na promieniowanie w celu przeszukania okolicy, a Twoim zadaniem jest zaprogramowanie ich sztucznego widzenia.
Wejście
Twoje dane wejściowe to prostokątna siatka znaków |-#
, reprezentująca dwa rodzaje części słupka ogrodzeniowego i gruz, podane jako ciąg rozdzielany znakiem nowej linii. Słupki ogrodzeniowe zostały okropnie okaleczone przez eksplozję, a niektóre zostały nawet połączone przez upał. Definiujemy słupek ogrodzeniowy jako poziomy wzór, który zaczyna się i kończy |
i ma jeden lub więcej -
s między nimi (jak |-|
lub |---|
nie ||
), lub pionowy wzór, który zaczyna się i kończy -
i ma jeden lub więcej |
s między nimi (zasadniczo poziomy słup ogrodzeniowy kandydata obrócony o 90 stopni). Rzeczywisty Fencepost jest Fencepost kandydat, który nie udostępnia jakichkolwiek jego części z innego fencepost kandydującego.
Wynik
Twój wynik to liczba rzeczywistych słupków ogrodzeniowych w siatce wejściowej.
Przykład
Rozważ siatkę wejściową
|#|-|#|##
#||--|||#
###|#|--#
###-||--|
-#-|#-|#-
#---#-#-|
#-#-|#--|
W tej siatce znajduje się 5 kandydujących słupków ogrodzeniowych, ale tylko 2 z nich są słupkami ogrodzeniowymi (pogrubionymi czcionkami). Zatem prawidłowe wyjście to 2
.
Zasady
Możesz napisać pełny program lub funkcję. Wygrywa najniższa liczba bajtów, a standardowe luki są niedozwolone.
Dodatkowe przypadki testowe
Wejście:
##--
||##
-#|-
|#|#
Wyjście: 0
(0 kandydujących słupków ogrodzeniowych)
Wejście:
-##|-##--
#|#-|#||-
--|-#|#||
##||||-##
||#|--|-|
-#|-#--|#
|####|#-#
Wyjście: 0
(5 słupków ogrodzeniowych dla kandydatów)
Wejście:
#|--|---|-|#
####|##--||-
-|-##||#|---
-#|#-|-#-|||
#|-##--###|-
---#-||-#-##
#|---|###|-#
-|---#-#|#|#
|#--|####-|-
Wyjście: 4
(8 kandydujących słupków ogrodzeniowych)
Wejście:
-|-||---##|#
---|######-#
####-##|#--|
|||##|#-||||
####-#-||-#|
---#--|#-#--
-|#-####-##-
#||-|-|-###|
|-##||-||-#-
Wyjście: 5
(7 słupków ogrodzeniowych dla kandydatów)
Wejście:
|#-|#|#-###|#-#
----#####|#----
|#--#-##-#|##-|
|#-|#-|--##||--
||#-#---##|||##
#|#-|||-#-#--||
--#|-||#|--|#|#
-#-|###||-#--#|
-#||-|#-##||##|
|--|-|||-##|-#|
Wyjście: 4
(9 słupków ogrodzeniowych dla kandydatów)
Wejście:
||-|-|-##-#-#-|#--#-
-##|-#|-#-##-|#|--|-
||#---###||-|#|##|-#
#||-#-#-|---|#||#|##
-#-###-##-|-#-|-#||#
##-#--#||-----||-|##
-|--#-#-#|---#-#|#-#
###|-|#-#|-|###|#-|#
#||#-#|--|-||#------
||##|-||#-|--#|#-#-#
|#-|-#-|-|--##-#|||#
-|#--#||##---##|-##-
#|-|-|-||-||#-#-|##-
|-#|##|-|#|#|--||#--
Wyjście: 9
(30 słupków ogrodzeniowych dla kandydatów)
|--...--|
wzorach są symbolami wieloznacznymi? Czy to oznacza, że poziome ogrodzenia muszą mieć co najmniej 5 łączników? Notacja trochę mnie zdziwiła.[[-,|,-],[#,#,-],[-,-,|]]
?Odpowiedzi:
Rubinowy, 266
268bajtówAby rozpocząć. Wykorzystuje fakt, że zmienne wskazują obiekty (1-znakowy ciąg dla każdego elementu tablicy 2D), aby wyeliminować nakładające się kandydatury.
Na przykład. jeśli wykonasz
a="s";b=a
, zarównoa
ib
wskaż ten sam ciąg."test"=="test"
zwraca true, ale"test".equal?("test")
zwraca false, ponieważ stworzyliśmy dwa różne obiekty String.Testuj przypadki na ideone .
źródło
map
zamiasteach