Contando gemas
Antecedentes
¡Mi joyero se cayó! Hay demasiadas gemas de diferentes formas en el suelo. Y su tarea es contar el número de un cierto tipo de gema.
I / O
- Su código debe tener dos entradas
SyG, que podría ser una cadena con líneas nuevas, una matriz de líneas, una matriz bidimensional de caracteres, un archivo de texto o en cualquier formato razonable (si es así, indíquelo claramente). - Estas dos cadenas solo contendrán
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(de0x21a0x7Een la tabla ASCII), espacio y nuevas líneas (forma binaria dependiendo de su plataforma). - En cada cadena, las líneas tienen la misma longitud.
Ses la gema que queremos contar. Hay dos circunstancias- Cerrado y no contiene ningún área cerrada anidada. (en el ejemplo 1/2)
- No contiene ningún área cerrada. (en el ejemplo 3/4)
- Los espacios circundantes no se consideran parte de la gema.
GEs la forma de gemas en el suelo.- Es aceptable que su código requiera una entrada adicional para especificar las dimensiones de
SyG - Es aceptable que su código tome valores ASCII como entradas, en lugar de los propios caracteres. Sin embargo, usted debe no sustituir caracteres con números enteros simples (0,1,2,3). Su programa debe poder procesar caracteres o valores ASCII.
Ejemplo 1 (Carácter como entrada)
Entrada S:
+-+
| +-+
| | |
| | |
| +-+
+-+
Entrada G:
+-+ +-+
| +-+ +-+ |
| | | | | |
| | | | | |
| +-+ +-+ |
+-+ +-+
+-+
+---+ | +-+
| | | | |
| | | | |
| | | +-++
| | +-+| +-+
+---+ | | |
| | |
+-+ | +-+
| +-+ +-+
| |-|
| |-|
| +-+
+-+
Ouptut:
2
Ejemplo 2 (valor ASCII como entrada)
Entrada S:
32 32 32 32 32 32 32 32
32 32 32 32 99 32 99 32
32 32 32 99 32 99 32 99
32 32 32 99 32 32 32 99
32 32 32 99 32 32 32 99
32 32 32 99 32 32 32 99
32 32 32 32 99 32 99 32
32 32 32 32 32 99 32 32
32 32 32 32 32 32 32 32
Entrada G:
32 99 32 99 32 99 32 99 32 32 99 32
99 32 99 32 99 32 99 32 99 99 32 99
99 32 32 32 99 32 32 32 99 32 32 99
99 99 32 32 99 32 32 32 99 32 32 99
99 32 32 32 99 32 32 32 99 32 32 99
32 99 32 99 32 99 32 99 99 32 99 32
32 32 99 32 32 32 99 32 32 99 32 32
Salida:
1
Visualizado S(32 reemplazado con -):
-- -- -- -- -- -- -- --
-- -- -- -- 99 -- 99 --
-- -- -- 99 -- 99 -- 99
-- -- -- 99 -- -- -- 99
-- -- -- 99 -- -- -- 99
-- -- -- 99 -- -- -- 99
-- -- -- -- 99 -- 99 --
-- -- -- -- -- 99 -- --
-- -- -- -- -- -- -- --
Visualizado G:
-- 99 -- 99 -- 99 -- 99 -- -- 99 --
99 -- 99 -- 99 -- 99 -- 99 99 -- 99
99 -- -- -- 99 -- -- -- 99 -- -- 99
99 99 -- -- 99 -- -- -- 99 -- -- 99
99 -- -- -- 99 -- -- -- 99 -- -- 99
-- 99 -- 99 -- 99 -- 99 99 -- 99 --
-- -- 99 -- -- -- 99 -- -- 99 -- --
Ejemplo 3 (no incluido)
Gracias a @ Draco18s
Entrada S
AB
Entrada G
AAB BA CAB
Salida
2
Ejemplo 4 (2D no incluido)
Entrada S
ABCD
GE
F
Entrada G
ABCD
BGGED
CDEFE
F
Salida
1
Observaciones
- Solo dos gemas de una forma exacta se consideran iguales.
- La misma forma en diferentes direcciones no se considera igual.
- Sin embargo, como se describe en el ejemplo de E / S, es posible la superposición. En tales circunstancias, solo se cuentan las completas.
+,-y|en el ejemplo no tienen significados especiales. No indican ninguna esquina o borde de la forma.- Puede suponer que la entrada siempre es válida.
- Puede suponer que dos gemas objetivo nunca comparten exactamente el mismo borde.
- Las lagunas estándar están prohibidas.
- Este es un código de golf, por lo que gana el código más corto.
@LiefdeWen Lo hice visualizado, puede encontrar
—
Keyu Gan
Sen el medio de G.
Creo que se necesitan algunos ejemplos más simples aquí, tales como
—
Draco18s ya no confía en SE
S = "AB", G=" AAB BA CAB", = salida?
@ Draco18s Gracias, lo agregaré.
—
Keyu Gan
Ese simple ejemplo realmente ayudó a comprender el comportamiento deseado. Genial
—
Draco18s ya no confía en SE
Gcontenido dentroS?