Como probablemente sepa, recientemente han aparecido múltiples desafíos encantadores de Jimmy . En estos desafíos, te desafiaron con las habilidades de acrobacia de nuestro querido amigo. Ahora tenemos un desafío diferente para ti. ¡Hoy identificarás diferentes tipos de Jimmys!
Explicación
Hay tres variedades de Jimmys: enano, acróbata y culturista.
This is dwarf Jimmy: o
This is acrobat Jimmy: /o\
This is bodybuilder Jimmy: /-o-\
Todos estos Jimmys son grandes amigos y les gusta estar en la misma línea que los demás. Su tarea es, dada una escena de Jimmy así:
o /o\ o /-o-\/-o-\ o /o\
Salida de la cantidad de enanos, acróbatas y culturistas en la línea, respectivamente.
El reto
Tome la entrada en cualquier forma razonable como una escena Jimmy, como se muestra en un ejemplo anterior.
La cadena de entrada debe ser una línea y opcionalmente contiene las tres variedades de Jimmys y espacios en blanco opcionales.
La cadena no contendrá necesariamente todas las variedades o espacios en blanco de Jimmy.
La cadena no contendrá ningún carácter que no esté en
o/\ -
.Cualquier combinación de variedades Jimmy es posible. Esto significa que el mismo o diferente tipo de Jimmy puede estar uno al lado del otro. Debes dar cuenta de eso.
Los espacios en blanco iniciales y finales son opcionales y de ninguna manera son necesarios: su programa debe tener en cuenta una cadena con o sin espacios en blanco iniciales y / o finales.
La cadena debe contener solo Jimmys y espacios en blanco válidos. Por ejemplo,
---///---
no está permitido porque no es una secuencia Jimmy válida.
Salida de tres números: el recuento de enanos, acróbatas y culturistas en la escena (en el orden respectivo).
Esto puede ser una salida a la consola como enteros separados por espacios, o puede ser un valor de retorno de una función como algún tipo de contenedor (es decir, un tipo de matriz).
La salida, en cualquier formato, debe ordenarse como se menciona en la viñeta superior sobre esta regla.
Se aplican reglas estándar y lagunas.
Casos de prueba
/-o-\ /-o-\ o/o\ /-o-\ /-o-\ /-o-\
OUTPUT: 1 1 5
o o /o\ o o o /o\ /o\
OUTPUT: 5 3 0
/-o-\ /-o-\ /-o-\/-o-\ o /o\/o\ /-o-\o /-o-\ /o\/-o-\
OUTPUT: 2 3 7
/-o-\ o /-o-\ o/o\
OUTPUT: 2 1 2
Si desea más casos de prueba, use esta herramienta para generar más casos de prueba aleatorios.
Tanteo
Este es el código de golf , por lo que gana la puntuación más baja en bytes.
Puede ver la tabla de clasificación para esta publicación expandiendo el widget / fragmento a continuación. Para que su publicación se incluya en las clasificaciones, necesita un encabezado ( # header text
) con la siguiente información:
El nombre del idioma (finalícelo con una coma
,
o guión-
), seguido de ...El recuento de bytes, como el último número que aparece en su encabezado.
Por ejemplo, JavaScript (ES6), 72 bytes
es válido, pero Fortran, 143 bytes (8-bit)
no es válido porque el recuento de bytes no es el último número en el encabezado (su respuesta se reconocerá como 8 bytes; no aproveche esto).
<!-- Run the snippet to see the leaderboard. Report any bugs to @xMikee1 on Github. --> <iframe src="https://ozewski.github.io/ppcg-leaderboard/?id=188391" width="100%" height="100%" style="border:none;">Oops, your browser is too old to view this content! Please upgrade to a newer version of your browser that supports HTML5.</iframe><style>html,body{margin:0;padding:0;height:100%;overflow:hidden}</style>
oo /o\ o o
sería buenooo
.Respuestas:
Jalea , (12?) 13 bytes
Un enlace monádico que acepta una lista de caracteres que produce una lista de enteros
[ dwarves, acrobats, and body-builders]
(guarde elṚ
byte si podemos especificar nuestra salida)Pruébalo en línea!
¿Cómo?
Todos los Jimmys muestran un
o
; todos los no enanos muestran a/
; Todos los culturistas muestran dos-
. Cuente estos, reduzca a la mitad el recuento-
y reste para encontrar los recuentos de Jimmy:fuente
Python 3.8 (prelanzamiento) , 51 bytes
Pruébalo en línea!
fuente
('o')
ser llamado sin unc
?s.count
ac
y luego devuelve.Python 2 , 50 bytes
Pruébalo en línea!
-10 bytes al convertir la expresión lambda en un programa completo gracias a @xnor (elimina la cosa anidada doble lambda y utiliza la asignación en su lugar)
fuente
PowerShell ,
5955 bytesPruébalo en línea!
Desenrollado:
fuente
J ,
3625 bytes-11 bytes gracias a cole!
Pruébalo en línea!
Solución original
J , 36 bytes
Pruébalo en línea!
Explicación:
Una sesión J de muestra :
fuente
Excel como CSV, 130 bytes
Inserte la entrada en el espacio antes del primero
,
, guárdela como .csv y ábrala en Excel Produce enanos, acróbatas y culturistas enB1
,B2
yB3
respectivamente.Excel, 244 bytes
fuente
APL (Dyalog Unicode) , SBCS de 20 bytes
Pruébalo en línea!
fuente
Kotlin
131130129121117979688 bytesPruébalo en línea!
Editar - Wew, ¡tengo menos de 100! Dudo que pueda reducirlo más, pero solo el tiempo lo dirá ...
Editar: habló demasiado pronto, dejó caer un byte más usando una lista en lugar de una cadena
Editar - menos 8 bytes gracias a AsoLeo que sugiere usar una función de extensión
fuente
fun String.j(b:Int=count{'-'==it}/2,a:Int=count{'/'==it})=listOf(count{'o'==it}-a,a-b,b)
88 bytes.Retina ,
3935 bytesEditar: -4 bytes gracias a @FryAmTheEggMan
Pruébalo en línea!
Explicación:
Una simple etapa de reemplazo. Encuentra todas las coincidencias de la expresión regular
^((o)|(/o.)|(/-o-.)| )*
(que debería dar como resultado una coincidencia, la cadena completa) y la reemplaza por el número de capturas de los grupos 2, 3 y 4. Aquí se desglosa la expresión regular:Tenemos que comenzar con
^
o el final de la entrada también cuenta como una coincidencia. En la sintaxis de sustitución de Retina, hace$n
referencia al enésimo grupo de captura y el modificador#
cuenta cuántas coincidencias hizo.fuente
JavaScript, 55 bytes
Busca la cadena utilizando una coincidencia de patrones de expresiones regulares
o
,o-
oo-\
; incrementa el recuento correspondiente en una matriz, utilizando la longitud de cada coincidencia para determinar el índice.Pruébalo en línea!
fuente
Clojure , 78 bytes
Pruébalo en línea!
fuente
Wolfram Language (Mathematica) , 63 bytes
Pruébalo en línea!
55 bytes si se elimina el requisito de orden inútil ...
fuente
Python 3 ,
69666056 bytes-4 bytes gracias a @Maarten Fabré
Pruébalo en línea!
fuente
g=input().count
inmediatoR , 63 bytes
Utiliza la combinación de expresiones regulares para encontrar y contar los Jimmys.
Pruébalo en línea!
fuente
K (oK) , 25 bytes
Pruébalo en línea!
fuente
Perl 5
-p
, 41 bytesPruébalo en línea!
Cuenta el número de veces que
o
aparece sin ser seguido por\
o-
para encontrar a los enanos y los elimina de la cadena. Luego cuenta el número de veces/o
parece encontrar los acróbatas y los elimina de la cadena. Luego cuenta el número deo
restantes para determinar los culturistas. Inserta espacios entre los números y genera implícitamente el resultado.fuente
1*
undef
) en lugar de0
.Rubí , 50 bytes.
Pruébalo en línea!
fuente
SNOBOL4 (CSNOBOL4) , 135 bytes
Pruébalo en línea!
Elimina
-o
,/o
yo
de la cadena e incrementa los contadores apropiados cada vez. Deja tras de sí una gran cantidad de brazos y piernas (/-\
,\
y nada).fuente
Adelante (gforth) , 118 bytes
Pruébalo en línea!
Explicación
/
,-
yo
personajes-
personajes dividido por 2/
caracteres menos el número de culturistaso
caracteres menos el número de Acrobat y culturistasExplicación del Código
fuente
05AB1E , 13 bytes
Este podría ser de 12 bytes eliminando
R
si[bodybuilder, acrobat, dwarf]
se hubiera permitido un orden de salida de .Pruébelo en línea o verifique todos los casos de prueba .
Alternativa menor de igual número de bytes:
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente
C (gcc) ,
999896 bytes-1 byte gracias a ceilingcat
Pruébalo en línea!
fuente