Eres el vaquero más rudo, duro y frío al oeste del Mississippi. Sin embargo, un tipo extraño en un sitio web de nerd loco decidió que sería genial dejarte caer en paisajes y peleas al azar. No importa, aún ganarás. Sin embargo, para ayudarlo a ganar esos duros tiroteos sobre los que escribirá, es útil saber cuántas balas tiene el cobarde que acecha en el paisaje.
¿Qué tal si ayudas a este pobre chico? Dado un paisaje ASCII, encuentra el arma dentro y dile cuántas balas están cargadas en él. Esta es la pistola:
(X)
(X\ /X)
(XVX)
\X/
Cada uno X
en la imagen de arriba es un espacio potencial para una bala. La ranura contendrá un espacio o uno de 0,O,o
(puede no ser consistente, el vaquero puede haber cargado diferentes tipos de balas en su arma).
Siempre habrá exactamente una pistola, que coincida con la descripción anterior, en el paisaje. Sin embargo, tenga en cuenta que los espacios alrededor y dentro de la pistola pueden contener cualquier cosa.
Entrada
Se le dará una cadena que contiene ASCII imprimible (por lo tanto, no pestañas) y nuevas líneas para separar las líneas. También puede tomar una lista de cadenas, si lo desea. Todas las cadenas se rellenarán con espacios, por lo que todas tendrán la misma longitud. La entrada tendrá al menos 4 filas de alto y 7 columnas de ancho.
Siempre habrá exactamente una pistola en el paisaje.
Salida
Sacará cuántas balas ( 0, O, o
) hay en la pistola, por lo que su salida siempre estará entre 0
y 6
.
Casos de prueba
(0) ( )
(o\ /o( \ / )
(oVo) ( V )
\o/ \ /
0
----------------------------
////////////////////////////
////////////////////////////
/////////////(o)////////////
///////////(0\// )//////////
////////////( Vo)///////////
/////////////\ /////////////
////////////////////////////
----------------------------
3
()()()()()()()()()()()()()()()()\)/)()()()()()()()()()()()()
()()()()()()()()()()()()()()()()(V)()()()()()()()()()()()()(
()()()()()()()(\0/)()()()()()()()()()()()()()()()()()()()()(
()()()()()()()()()()()()()()()()()()()()()()()( )()()()()()(
()()()()()()(o)()()()()()()()(00)()()()()()(( \(/0)()()()()(
()()()()()()()()()()()()()()()()()()()()()()(( V )()()()()()
()()()()()()()()()()()()()()()()()()()()()()()\O/()()()()()(
2
------(0)---
||||(0\|/0)
-----(0V0)--
||||||\0/
-------_------
|||||||-|
------|-|
|||||||-|
------|-|
6
00ooOO(0)/\\/V
( )
( \\/ )
( V )
\\ /
00OOoo()()()())))
0
(\) (0)
(0\\/0) ( \0/ )
(0V0) ( V )
\\0/ \ /
1 (left gun is invalid because of the `\` in the bullet slot)
-00(0)00\0
-(O\0/o)\
- (OVo)o\0
-o \ /oo/
5
Este es el código de golf , por lo que la respuesta más corta en bytes gana.
0
cuadro dentro del límite del arma pero fuera del arma.Respuestas:
Caracoles , 71 bytes
Pruébalo en línea.
fuente
Programming language for 2-dimensional pattern matching.
debes estar contento de haber hecho este desafío entonces: PMathematica, 170 bytes
Toma una gran variedad de cadenas / caracteres. Devuelve el número de viñetas.
fuente
JavaScript,
215211209 bytes¡Gracias a Shaggy por -4 bytes!
Básicamente, trata de hacer coincidir los
n
caracteres de una pistola después de un salto de línea,n
desde0
hasta la longitud de la cadena.fuente
Z
dentro del literal, la primera vez que lo use y deshaciéndose del{}
.Python 2,
219224227 bytesEDITAR: se corrigió un error que me costó 5 bytes: (... se encontraron 3 bytes adicionales
r''
que no eran necesarios. ¡Y luego Grrr! No contaba los\
caracteres en mi código correctamente, así que agregué 6 ...Toma una cadena con líneas nuevas; vuelve a ejecutar la cantidad de balas encontradas.
Básicamente, aplica una expresión regular que busca el patrón de arma con 0, 1, ... lineLength caracteres de la almohadilla al comienzo de las líneas.
fuente
C (gcc) ,
357351 bytesPruébalo en línea! (golfizado) (expandido)
(357 golfizado) (357 expandido)Me preguntaba qué tan mala sería una solución en un idioma sin una coincidencia de patrones incorporada. Salió mucho más pequeño de lo que temía.
Básicamente, este enfoque divide el arma en una serie de partes individuales que espera ver en ubicaciones específicas en relación con un índice específico. Si todas las partes se encuentran donde se espera, ¡es un arma! La prueba de balas incrementa un contador global para realizar un seguimiento de cuántas balas había en ella, que imprimimos cuando encontramos la única arma en el paisaje.
Nota 1: Rellené los casos de prueba con espacios para asegurar anchos de fila consistentes.
Nota 2: Agregue 10 bytes si no le gusta la asignación en lugar del truco de devolución . Para mayor claridad, utilicé declaraciones de devolución reales en el código expandido.
fuente