Comme vous le savez probablement, il y a eu plusieurs belles Jimmy défis récemment fleurissent. Dans ces défis, vous avez été mis au défi avec les compétences acrobatiques de notre ami bien-aimé. Maintenant, nous avons un défi différent pour vous. Aujourd'hui, vous identifierez différents types de Jimmys!
Explication
Il existe trois variétés de Jimmys: nain, acrobate et bodybuilder.
This is dwarf Jimmy: o
This is acrobat Jimmy: /o\
This is bodybuilder Jimmy: /-o-\
Ces Jimmys sont tous de grands amis et ils aiment se tenir sur la même ligne les uns que les autres. Votre tâche est, étant donné une scène Jimmy comme ça:
o /o\ o /-o-\/-o-\ o /o\
Affiche le nombre de nains, acrobates et culturistes sur la ligne, respectivement.
Le défi
Prenez une entrée sous n'importe quelle forme raisonnable en tant que scène Jimmy, comme indiqué dans l'exemple ci-dessus.
La chaîne d'entrée doit être une ligne et contient facultativement les trois variétés de Jimmys et des espaces facultatifs.
La chaîne ne contiendra pas nécessairement toutes les variétés ou espaces Jimmy.
La chaîne ne contiendra aucun caractère absent
o/\ -
.Toute combinaison de variétés Jimmy est possible. Cela signifie que le même type ou un type différent de Jimmy peut être côte à côte. Vous devez en tenir compte.
Les espaces blancs de début et de fin sont facultatifs et nullement requis - votre programme doit prendre en compte une chaîne avec ou sans espaces blancs de début et / ou de fin.
La chaîne ne doit contenir que des Jimmys et des espaces valides. Par exemple,
---///---
n'est pas autorisé car il ne s'agit pas d'une séquence Jimmy valide.
Sortie trois nombres: le nombre de nains, acrobates et culturistes dans la scène (dans l'ordre respectif).
Il peut s'agir d'une sortie vers la console sous forme d'entiers séparés par des espaces, ou il peut s'agir d'une valeur de retour d'une fonction comme une sorte de conteneur (c'est-à-dire un type de tableau).
La sortie, dans n'importe quel format, doit être ordonnée comme mentionné dans la puce supérieure au-dessus de cette règle.
Des règles et des lacunes standard s'appliquent.
Cas de test
/-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 vous souhaitez plus de cas de test, utilisez cet outil pour générer plus de cas de test aléatoires.
Notation
C'est le code-golf , donc le score le plus bas en octets l'emporte.
Vous pouvez afficher le classement de cet article en développant le widget / extrait ci-dessous. Pour que votre message soit inclus dans le classement, vous avez besoin d'un en-tête ( # header text
) avec les informations suivantes:
Le nom de la langue (terminez-le par une virgule
,
ou un tiret-
), suivi de ...Le nombre d'octets, comme le dernier nombre à apparaître dans votre en-tête.
Par exemple, JavaScript (ES6), 72 bytes
est valide, mais Fortran, 143 bytes (8-bit)
n'est pas valide car le nombre d'octets n'est pas le dernier nombre dans l'en-tête (votre réponse sera reconnue comme 8 octets - n'en profitez pas).
<!-- 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
serait bienoo
.Réponses:
Gelée , (12?) 13 octets
Un lien monadique acceptant une liste de caractères qui donne une liste d'entiers,
[ dwarves, acrobats, and body-builders]
(enregistrez l'Ṛ
octet si nous pouvons spécifier notre sortie)Essayez-le en ligne!
Comment?
Tous les Jimmys montrent un
o
; tous les non-nains montrent un/
; tous les culturistes en montrent deux-
. Comptez-les, divisez par deux le nombre de-
, et effectuez une soustraction pour trouver le nombre de Jimmy:la source
Python 3.8 (pré-version) , 51 octets
Essayez-le en ligne!
la source
('o')
se faire appeler sansc
?s.count
àc
, puis la renvoie.Python 2 , 50 octets
Essayez-le en ligne!
-10 octets en convertissant l'expression lambda en un programme complet grâce à @xnor (supprime la chose imbriquée double-lambda et utilise l'affectation à la place)
la source
PowerShell ,
5955 octetsEssayez-le en ligne!
Déroulé:
la source
J ,
3625 octets-11 octets grâce à Cole!
Essayez-le en ligne!
Solution originale
J , 36 octets
Essayez-le en ligne!
Explication:
Un exemple de session J :
la source
Excel en CSV, 130 octets
Insérez l'entrée dans l'espace avant le premier
,
, enregistrez sous .csv, ouvrez dans Excel. Sorties Nains, Acrobates et bodybuildersB1
,B2
etB3
respectivement.Excel, 244 octets
la source
APL (Dyalog Unicode) , 20 octets SBCS
Essayez-le en ligne!
la source
Kotlin
131130129121117 117979688 octetsEssayez-le en ligne!
Edit - Wew, je l'ai sous 100! Je doute que je puisse le rétrécir davantage, mais seul le temps nous le dira ...
Modifier - Parlé trop tôt, a supprimé un octet de plus en utilisant une liste au lieu d'une chaîne
Edit - moins 8 octets grâce à AsoLeo suggérant d'utiliser une fonction d'extension
la source
fun String.j(b:Int=count{'-'==it}/2,a:Int=count{'/'==it})=listOf(count{'o'==it}-a,a-b,b)
88 octets.Rétine ,
3935 octetsEdit: -4 octets grâce à @FryAmTheEggMan
Essayez-le en ligne!
Explication:
Une étape de remplacement simple. Il trouve toutes les correspondances de l'expression régulière
^((o)|(/o.)|(/-o-.)| )*
(ce qui devrait entraîner une correspondance - la chaîne entière) et la remplace par le nombre de captures des groupes 2, 3 et 4. Voici l'expression régulière décomposée:Nous devons commencer par
^
ou la fin de l'entrée est également considérée comme une correspondance. Dans la syntaxe de substitution de Retina, fait$n
référence au nième groupe de capture et le modificateur#
compte le nombre de correspondances qu'il a effectuées.la source
JavaScript, 55 octets
Recherche la chaîne en utilisant une mise en correspondance de motif d'expression rationnelle
o
,o-
ouo-\
; incrémente le nombre correspondant dans un tableau, en utilisant la longueur de chaque correspondance pour déterminer l'indice.Essayez-le en ligne!
la source
Clojure , 78 octets
Essayez-le en ligne!
la source
Wolfram Language (Mathematica) , 63 octets
Essayez-le en ligne!
55 octets si l'exigence d'ordre inutile est supprimée ...
la source
Python 3 ,
69666056 octets-4 octets grâce à @Maarten Fabré
Essayez-le en ligne!
la source
g=input().count
immédiatementR , 63 octets
Utilise l'appariement Regex pour trouver et compter les Jimmys.
Essayez-le en ligne!
la source
K (oK) , 25 octets
Essayez-le en ligne!
la source
Perl 5
-p
, 41 octetsEssayez-le en ligne!
Compte le nombre de fois
o
apparaît sans être suivi par\
ou-
pour trouver les nains et les supprime de la chaîne. Compte ensuite le nombre de fois où il/o
apparaît pour trouver les acrobates et les supprime de la chaîne. Compte ensuite le nombre deo
restants pour déterminer les culturistes. Insère des espaces entre les nombres et génère implicitement le résultat.la source
1*
undef
) à la place de0
.Rubis , 50 octets
Essayez-le en ligne!
la source
SNOBOL4 (CSNOBOL4) , 135 octets
Essayez-le en ligne!
Supprime
-o
,/o
eto
de la chaîne et incrémente les compteurs appropriés à chaque fois. Laisse derrière lui un grand nombre de bras et les jambes (/-\
,\
et rien).la source
Forth (gforth) , 118 octets
Essayez-le en ligne!
Explication
/
,-
et deso
personnages-
caractères divisé par 2/
caractères moins le nombre de culturisteso
caractères moins le nombre d'Acrobat et de culturistesExplication du code
la source
05AB1E , 13 octets
Celui-ci pourrait être de 12 octets en supprimant
R
si un ordre de sortie de[bodybuilder, acrobat, dwarf]
aurait été autorisé.Essayez-le en ligne ou vérifiez tous les cas de test .
Alternative mineure à octets égaux:
Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source
C (gcc) ,
999896 octets-1 octet grâce au plafond
Essayez-le en ligne!
la source