Ceci est similaire à la création d'un acronyme , mais il existe plusieurs différences clés, y compris la méthode de récupération de l'acronyme, et ce défi, y compris la sortie flexible.
Tâche
Étant donné une chaîne (la liste des caractères / chaînes de longueur 1 est autorisée) contenant uniquement de l'ASCII imprimable, sortez toutes les lettres majuscules dans l'entrée qui sont soit précédées d'un espace ou d'un tiret, soit le premier caractère de l'entrée. Une chaîne vide est un comportement non défini.
Cas de test:
La sortie peut être au format "TEST"
, ["T","E","S","T"]
ou quel que soit le reste fonctionne pour vous.
Self-contained Underwater Breathing Apparatus
SUBA
a Programming Language
PL
NATO Atlantic TREATY Organization
NATO
DEFCON 2
D
hello, world!
light-Emitting dioDe
E
What Does the Fox Say?
WDFS
3D mov-Ies
I
laugh-Out Lou-D
OLD
Best friends FOREVE-r
BF
--
<space>
-- --a - - --
-- -- - - -- A
A
Step-Hen@Gmail-Mail Mail.CoM m
SHMM
C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
[email protected]
.Réponses:
V , 7 octets
Essayez-le en ligne!
Voici un hexdump pour prouver le nombre d'octets:
Explication:
C'est court tout cela grâce à la merveilleuse V compression regex .
la source
-
sont autorisés.R ,
6663 octetsEssayez-le en ligne!
-3 octets grâce à Scarabee
Une fonction anonyme; renvoie l'acronyme comme un vecteur
c("N","A","T","O")
qui est implicitement imprimé.Pour une fois, ce n'est pas trop mal en R! se divise sur
-
ou(space)
, prend le premier élément de chacun de ceux-ci, puis retourne ceux qui sont en majuscules (LETTERS
est un R intégré avec les majuscules), dans l'ordre.la source
function(s)(s=substr(strsplit(s,' |-')[[1]],1,1))[s%in%LETTERS]
Python 2 ,
5956 octets-3 octets grâce à Lynn
Essayez-le en ligne!
la source
'@'<b<'['
, très belle solution +1'@'<b<'['>a in' -'
enregistre 3 octets.Javascript 21 octets
Prend une entrée de chaîne et génère un tableau de chaînes contenant les caractères acronymes
Explication
C'est juste une correspondance d'expression rationnelle globale pour la limite de mot suivie d'une lettre majuscule.
la source
Rétine ,
2117 octetsEssayez-le en ligne!
Explication
Sort les correspondances de l'expression régulière
(?<=^| |-)[A-Z]
dans l'entrée, une par ligne (!
).la source
Dyalog APL,
2923 octetsCas de test bonus: Un langage de programmation (APL).
Renvoie un tableau de caractères (s'affiche sous forme d'espace séparé sur TIO).
Essayez-le en ligne!
Message plus ancien, 29 octets
Essayez-le en ligne!
Comment?
'(\w)\w+'⎕R
- remplacer chaque groupe de caractères alphabétiques'\1'
- avec son premier caractère~⍨
- supprimer tous les caractères(⎕AV~⎕A)
- ce n'est pas une majuscule ASCIIla source
Python, 53 octets
Essayez-le en ligne!
Une expression régulière simple avec un regard vers l'espace ou un tiret. Plutôt que de faire correspondre le début, ajoutez un espace au début.
la source
C #,
8478 octets6 octets enregistrés grâce à @jkelm .
Essayez-le en ligne!
Version complète / formatée:
la source
using System.Linq
le nombre d'octets si vous êtesusing System.Collections.Generic
exempté? Y a-t-il un consensus sur ceux quiusing
sont dénombrables?using System.Linq;
est nécessaire pour le code Linq dans ma réponse. Cependant,IEnumerbale<char>
ne fait pas partie de la réponse et c'est la partie du code qui doitusing System.Collections.Generic;
être compilée.Julia 0.6.0 (57 octets)
Explication: Ceci est mon premier code-golf. Assez simple. Séparez les mots, imprimez la première lettre supérieure de chacun.
Probablement facile de faire mieux en utilisant regex mais je suis nouveau dans ce domaine
la source
05AB1E , 11 octets
Essayez-le en ligne!
la source
C # (.NET Core) , 108 octets
Essayez-le en ligne!
la source
if
à un ternaire peut vous faire économiser des octets. Cela commence à l' index au2
lieu de1
, il suffit de changerint i=1
pourint i=0
le fixer. À part cela, je ne pense pas que vous puissiez faire beaucoup plus ici.Gelée ,
1110 octets-1 octet grâce à Erik l'Outgolfer (
Ḳ
se divise aux espaces> _ <)Un lien monadique prenant et renvoyant des listes de personnages.
Comme un programme complet accepte une chaîne et imprime le résultat.
Essayez-le en ligne! ou consultez une suite de tests .
Comment?
la source
Ḳ
au lieu deṣ⁶
?Perl 5 , 25 octets
Code 24 octets + 1 pour
-n
.Gênant qui prend en
grep -P
charge la longueur variable, mais Perl ne le fait pas :(.-1 octet grâce à @Dada !
Essayez-le en ligne! - comprend
-l
pour exécuter tous les tests à la fois.la source
s///
ni$_=
annuler leprint
...s///
pour résoudre ce problème mais ce n'est pas évident ... Je suis au boulot, je vais peut-être essayer de nouveau plus tard!MATL , 19 octets
Essayez-le en ligne!
la source
Brachylog ,
252322 octetsEssayez-le en ligne!
(-2 octets grâce à @Fatalize.)
la source
Ṣ
au lieu de" "
pour enregistrer deux octetsJapt ,
191614 octets-2 octets grâce à Shaggy
Essayez-le en ligne!
la source
"(^| |-)%A"
pour/^| |-)\A/
enregistrer un octetmf\A
->mÌ
pour économiser 2 octets.Swift 5 , 110 octets
-5 grâce à Cœur
Explication détaillée
import Foundation
- Importe le moduleFoundation
qui est vital pourzip()
, la pièce principale de ce code.func f(s:[String]){...}
- Crée une fonction avec un paramètres
, c'est-à-dire une liste de chaînes, représentant les caractères de l'entrée.for i in zip(s,[" "]+s){...}
- Itère aveci
le zip de l'entrée et l'entrée avec un espace ajouté au début, ce qui est très utile pour obtenir le caractère précédent dans la chaîne.if
- Vérifie si:i.0==i.0.uppercased()
- Le caractère actuel est en majuscule,&&"- ".contains(i.1)
- et Si le caractère précédent est un espace ou un tiret.Si les conditions ci-dessus sont remplies, alors:
print(i.0)
- Le caractère est imprimé, car il fait partie de l'acronyme.la source
import UIKit
au lieu deimport Foundation
.PowerShell , 43 octets
Essayez-le en ligne!
Déroulé:
la source
Python 3 , 67 octets
Essayez-le en ligne!
la source
Python 3 ,
7370 octetsEssayez-le en ligne!
Explication
lambda n:
- Crée une fonction lambda anonyme avec un paramètre Stringn
.n[x]
- Obtient le caractère den
at indexx
.for x in range(len(n))
- Itère de0
à la longueur den
, en nommant la variablex
.if
- Chèques:'@'<n[x]<'['
- Si le caractère est en majuscule,and(' '+n)[x]in' -'
- Et s'il est précédé d'un espace ou d'un tiret dans la Chaîne formée par un espace etn
.la source
i supper
, et je n'ai aucune idée pourquoi?.isupper()
, je n'ai aucune idée de ce que vous lisez: pJavaScript (SpiderMonkey) , 62 octets
Essayez-le en ligne!
la source
QuadS , 17 octets
Essayez-le en ligne!
la source
Pyth,
1516 octetsSuite de tests
la source
Pyth, 12 octets
Suite de tests ici.
la source
Bash (grep),
2928 octetsUn port de ma réponse en python, mais parce qu'il
pgrep
prend en charge les regards de longueur variable, il est sensiblement plus court (même en tenant compte de la surcharge de python). Collez les cas de test dans un fichier appeléa
, la sortie est de 1 caractère par ligne.-1 Merci à Neil
la source
^| |-
pourrait être un test plus court?RProgN 2 , 18 octets
Expliqué
Essayez-le en ligne!
la source
PHP, 62 octets
Exécutez en tant que pipe avec
-nR
ou essayez-le en ligne .autres solutions:
la source
C ++, 168 octets
Sortie effectuée via le paramètre
la source
#include<string>
et de supposer que l'arguments
est unstd::string
?Lua ,
7975 octetsEssayez!
J'ai collé un print () avant la fin finale dans la version d'essai car sinon c'est un gâchis. Ce programme respecte parfaitement les exigences d'E / S et de correspondance, mais sans cette nouvelle ligne supplémentaire, il est assez difficile à lire.
L'entrée est donnée sous la forme d'un tableau de nombres: chaîne, nombre incrémenté de 1 à chaque fois et commençant à 1.
Explication:
Il permet de boucler un gmatch de chaque chaîne d'entrée. La recherche gmatch est la suivante:
[% - | ] - Groupe, recherchez un - ou un espace
% u - Recherche un caractère majuscule
Ensuite, pour chaque match, il l'imprime moins le tiret ou l'espace précédent
Edit: Golfed 4 octets en supprimant la déclaration de 'a' et en ajoutant l'espace à l'entrée à l'intérieur de la boucle for, ainsi qu'en changeant l'entrée secondaire à seulement 2 au lieu de 2,2 (qui produisent des résultats équivalents)
la source
Pyth , 12 octets
Créé un an après la réponse initiale.
Essayez-le en ligne!
Pyth , 21 octets
Réponse initiale.
Essayez-le en ligne!
la source
-|
est un octet de moins que[ -]