Como você provavelmente sabe, houve vários desafios adoráveis do Jimmy recentemente surgindo. Nesses desafios, você foi desafiado com as habilidades acrobáticas de nosso amado amigo. Agora, temos um desafio diferente para você. Hoje você estará identificando diferentes tipos de Jimmys!
Explicação
Existem três variedades de Jimmys: anão, acrobata e fisiculturista.
This is dwarf Jimmy: o
This is acrobat Jimmy: /o\
This is bodybuilder Jimmy: /-o-\
Esses Jimmys são todos grandes amigos e gostam de permanecer na mesma linha que os outros. Sua tarefa é, dada uma cena do Jimmy assim:
o /o\ o /-o-\/-o-\ o /o\
Gera a quantidade de anões, acrobatas e fisiculturistas na linha, respectivamente.
O desafio
Tome entrada de qualquer forma razoável como uma cena de Jimmy, como mostrado no exemplo acima.
A sequência de entrada deve ser uma linha e, opcionalmente, contém as três variedades de Jimmys e o espaço em branco opcional.
A sequência não conterá necessariamente todas as variedades ou espaços em branco de Jimmy.
A sequência não conterá nenhum caractere que não esteja
o/\ -
.Qualquer combinação de variedades Jimmy é possível. Isso significa que o mesmo ou diferente tipo de Jimmy pode estar próximo um do outro. Você deve responder por isso.
Os espaços em branco à esquerda e à direita são opcionais e de forma alguma são necessários - seu programa deve contabilizar uma sequência com ou sem espaços em branco à esquerda e / ou à direita.
A sequência deve conter apenas Jimmys e espaços em branco válidos. Por exemplo,
---///---
não é permitido porque não é uma sequência Jimmy válida.
Saída três números: A contagem de anões, acrobatas e fisiculturistas na cena (na ordem respectiva).
Pode ser uma saída para o console como números inteiros separados por espaço, ou pode ser um valor de retorno de uma função como algum tipo de contêiner (ou seja, um tipo de matriz).
A saída, em qualquer formato, deve ser solicitada conforme mencionado no marcador acima desta regra.
Aplicam-se regras e brechas padrão.
Casos de teste
/-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
Se você quiser mais casos de teste, use esta ferramenta para gerar mais casos de teste aleatórios.
Pontuação
Isso é código-golfe , então a pontuação mais baixa em bytes vence.
Você pode visualizar o cabeçalho desta postagem expandindo o widget / snippet abaixo. Para que sua postagem seja incluída na classificação, você precisa de um cabeçalho ( # header text
) com as seguintes informações:
O nome do idioma (termine com vírgula
,
ou hífen-
), seguido por ...A contagem de bytes, como o último número a aparecer no seu cabeçalho.
Por exemplo, JavaScript (ES6), 72 bytes
é válido, mas Fortran, 143 bytes (8-bit)
é inválido porque a contagem de bytes não é o último número no cabeçalho (sua resposta será reconhecida como 8 bytes - não tire proveito disso).
<!-- 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
seria bomoo
.Respostas:
Gelatina , (12?) 13 bytes
Um link monádico que aceita uma lista de caracteres que gera uma lista de números inteiros
[ dwarves, acrobats, and body-builders]
(salve oṚ
byte se pudermos especificar nossa saída)Experimente online!
Quão?
Todos os Jimmys mostram um
o
; todos os não-anões mostram a/
; todos os construtores de corpo mostram dois-
. Conte-os, reduza pela metade a contagem de-
e execute a subtração para encontrar a contagem de Jimmy:fonte
Python 3.8 (pré-lançamento) , 51 bytes
Experimente online!
fonte
('o')
chamadas sem ac
?s.count
parac
e, em seguida, retorna.Python 2 , 50 bytes
Experimente online!
-10 bytes convertendo a expressão lambda em um programa completo graças ao @xnor (remove a coisa aninhada lambda dupla e usa a atribuição)
fonte
PowerShell ,
5955 bytesExperimente online!
Desenrolado:
fonte
J ,
3625 bytes-11 bytes graças a cole!
Experimente online!
Solução original
J , 36 bytes
Experimente online!
Explicação:
Uma sessão J de amostra :
fonte
Excel como CSV, 130 bytes
Insira a entrada no espaço antes da primeira
,
, salve como .csv, abra no Excel. Produz anões, acrobatas e culturistas emB1
,B2
eB3
respectivamente.Excel, 244 bytes
fonte
APL (Dyalog Unicode) , SBCS de 20 bytes
Experimente online!
fonte
Kotlin
131130129121117979688 bytesExperimente online!
Edit - Wew, tem menos de 100! Duvido que possa encolher mais, mas só o tempo dirá ...
Editar - falou muito cedo, eliminou mais um byte usando uma lista em vez de uma sequência
Editar - menos 8 bytes, graças ao AsoLeo, sugerindo o uso de uma função de extensão
fonte
fun String.j(b:Int=count{'-'==it}/2,a:Int=count{'/'==it})=listOf(count{'o'==it}-a,a-b,b)
88 bytes.Retina ,
3935 bytesEdit: -4 bytes graças a @FryAmTheEggMan
Experimente online!
Explicação:
Um simples estágio de substituição. Ele encontra todas as correspondências da regex
^((o)|(/o.)|(/-o-.)| )*
(que deve resultar em uma correspondência - a cadeia inteira) e a substitui pelo número de capturas dos grupos 2, 3 e 4. Aqui está a regex dividida:Temos que começar
^
ou o final da entrada também conta como uma correspondência. Na sintaxe de substituição da Retina, faz$n
referência ao enésimo grupo de capturas e o modificador#
conta quantas correspondências foram feitas.fonte
JavaScript, 55 bytes
Pesquisa a string usando uma correspondência padrão regex
o
,o-
ouo-\
; incrementa a contagem correspondente em uma matriz, usando o comprimento de cada correspondência para determinar o índice.Experimente online!
fonte
Clojure , 78 bytes
Experimente online!
fonte
Wolfram Language (Mathematica) , 63 bytes
Experimente online!
55 bytes se o requisito de ordem inútil for descartado ...
fonte
Python 3 ,
69666056 bytes-4 bytes graças a @Maarten Fabré
Experimente online!
fonte
g=input().count
imediatamenteR , 63 bytes
Usa a correspondência de Regex para encontrar e contar os Jimmys.
Experimente online!
fonte
K (oK) , 25 bytes
Experimente online!
fonte
Perl 5
-p
, 41 bytesExperimente online!
Conta o número de vezes que
o
aparece sem ser seguido por\
ou-
para encontrar os anões e os remove da corda. Em seguida, conta o número de vezes que/o
aparece para encontrar os acrobatas e os remove da string. Em seguida, conta o número deo
restantes para determinar os construtores de corpo. Insere espaços entre os números e gera implicitamente o resultado.fonte
1*
undef
) em vez de0
.Ruby , 50 bytes
Experimente online!
fonte
SNOBOL4 (CSNOBOL4) , 135 bytes
Experimente online!
Remove
-o
,/o
eo
da corda e incrementos os contadores apropriados de cada vez. Deixa para trás um monte de braços e pernas (/-\
,\
e nada).fonte
Quarto (gforth) , 118 bytes
Experimente online!
Explicação
/
,-
eo
personagens-
caracteres dividido por 2/
caracteres menos o número de fisiculturistaso
caracteres menos o número de Acrobat e BodybuildersCódigo Explicação
fonte
05AB1E , 13 bytes
Esse pode ter 12 bytes , removendo o
R
se uma ordem de saída de[bodybuilder, acrobat, dwarf]
for permitida.Experimente online ou verifique todos os casos de teste .
Alternativa menor de bytes iguais:
Experimente online ou verifique todos os casos de teste .
Explicação:
fonte
C (gcc) ,
999896 bytes-1 byte graças ao ceilingcat
Experimente online!
fonte