Esto es similar a Hacer un acrónimo , pero hay varias diferencias clave, incluido el método de obtención del acrónimo, y este desafío incluye una salida flexible.
Tarea
Dada una cadena (se permite la lista de caracteres / cadenas de longitud 1) que contiene solo ASCII imprimible, muestra todas las letras mayúsculas en la entrada que están precedidas por un espacio o un guión, o son el primer carácter en la entrada. La cadena vacía es un comportamiento indefinido.
Casos de prueba:
La salida puede estar en el formato de "TEST"
, ["T","E","S","T"]
o lo que más funciona para usted.
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
Este es el código de golf , por lo que la respuesta más corta en bytes gana.
[email protected]
.Respuestas:
V , 7 bytes
Pruébalo en línea!
Aquí hay un hexdump para probar el conteo de bytes:
Explicación:
Este es corta todo gracias a una maravilla de V de compresión de expresiones regulares .
fuente
-
se permiten espacios y espacios .R ,
6663 bytesPruébalo en línea!
-3 bytes gracias a Scarabee
Una función anónima; devuelve el acrónimo como un vector
c("N","A","T","O")
que se imprime implícitamente.Por una vez, esto no es tan malo en R! se divide en
-
o(space)
, toma el primer elemento de cada uno de ellos y luego devuelve los que sean mayúsculas (LETTERS
es una R incorporada con las letras mayúsculas), en orden.fuente
function(s)(s=substr(strsplit(s,' |-')[[1]],1,1))[s%in%LETTERS]
Python 2 ,
5956 bytes-3 bytes gracias a Lynn
Pruébalo en línea!
fuente
'@'<b<'['
, muy buena solución +1'@'<b<'['>a in' -'
ahorra 3 bytes.Javascript 21 bytes
Toma una entrada de cadena y genera una serie de cadenas que contienen los caracteres de acrónimo
Explicación
Es solo una coincidencia global de expresiones regulares para el límite de palabras seguido de una letra mayúscula.
fuente
Retina ,
2117 bytesPruébalo en línea!
Explicación
Emite las coincidencias de la expresión regular
(?<=^| |-)[A-Z]
en la entrada, una por línea (!
).fuente
Dyalog APL,
2923 bytesCaso de prueba de bonificación: Un lenguaje de programación (APL).
Devuelve una matriz de caracteres (se muestra como espacio separado en TIO).
Pruébalo en línea!
Publicación anterior, 29 bytes
Pruébalo en línea!
¿Cómo?
'(\w)\w+'⎕R
- Reemplace cada grupo de caracteres alfabéticos'\1'
- con su primer personaje~⍨
- eliminar cada char(⎕AV~⎕A)
- eso no es una mayúscula ASCIIfuente
Python, 53 bytes
Pruébalo en línea!
Una expresión regular simple con anticipación por espacio o guión. En lugar de hacer coincidir el inicio, anteponga un espacio.
fuente
C #,
8478 bytesGuardado 6 bytes gracias a @jkelm .
Pruébalo en línea!
Versión completa / formateada:
fuente
using System.Linq
en el recuento de bytes siusing System.Collections.Generic
está exento? ¿Hay algún consenso sobre cuálesusing
son contables?using System.Linq;
es necesario para el código Linq en mi respuesta. Sin embargo,IEnumerbale<char>
no es parte de la respuesta y esa es la parte del código que debeusing System.Collections.Generic;
compilarse.Julia 0.6.0 (57 bytes)
Explicación: Este es mi primer código de golf. Muy claro. Divide las palabras, imprime la primera letra superior de cada una.
Probablemente sea mejor hacerlo mejor utilizando expresiones regulares, pero soy nuevo en esto
fuente
05AB1E , 11 bytes
Pruébalo en línea!
fuente
C # (.NET Core) , 108 bytes
Pruébalo en línea!
fuente
if
a ternario puede ahorrarle bytes. Esto comienza en el índice en2
lugar de1
, simplemente cambieint i=1
aint i=0
para solucionarlo. Aparte de eso, no creo que haya mucho más que puedas hacer aquí.Jalea ,
1110 bytes-1 byte gracias a Erik the Outgolfer (se
Ḳ
divide en espacios> _ <)Un enlace monádico que toma y devuelve listas de personajes.
Como programa completo acepta una cadena e imprime el resultado.
Pruébalo en línea! o ver un conjunto de pruebas .
¿Cómo?
fuente
Ḳ
lugar deṣ⁶
?Perl 5 , 25 bytes
Código de 24 bytes + 1 para
-n
.Molesto que
grep -P
admite mirar hacia atrás de longitud variable pero Perl no :(.-1 byte gracias a @Dada !
Pruébalo en línea! - Incluye
-l
ejecutar todas las pruebas a la vez.fuente
s///
o$_=
negar elprint
...s///
para resolver esto, pero no es obvio ... Estoy en el trabajo, ¡tal vez lo intente más tarde!MATL , 19 bytes
Pruébalo en línea!
fuente
Brachylog ,
252322 bytesPruébalo en línea!
(-2 bytes gracias a @Fatalize.)
fuente
Ṣ
lugar de" "
guardar dos bytesJapt ,
191614 bytes-2 bytes gracias a Shaggy
Pruébalo en línea!
fuente
"(^| |-)%A"
a/^| |-)\A/
ahorrar un bytemf\A
->mÌ
para guardar 2 bytes.Swift 5 , 110 bytes
-5 gracias a Cœur
Explicación detallada
import Foundation
- Importa el móduloFoundation
que es vital parazip()
, la pieza principal de este código.func f(s:[String]){...}
- Crea una función con un parámetros
, que es una lista de cadenas, que representa los caracteres de la entrada.for i in zip(s,[" "]+s){...}
- Itera coni
el zip de la entrada y la entrada con un espacio agregado al principio, lo cual es muy útil para obtener el carácter anterior en la Cadena.if
- Comprueba si:i.0==i.0.uppercased()
- El caracter actual es mayúscula,&&"- ".contains(i.1)
- y Si el personaje anterior es un espacio o un guión.Si se cumplen las condiciones anteriores, entonces:
print(i.0)
- El carácter se imprime porque es parte del acrónimo.fuente
import UIKit
lugar deimport Foundation
.PowerShell , 43 bytes
Pruébalo en línea!
Desenrollado:
fuente
Python 3 , 67 bytes
Pruébalo en línea!
fuente
Python 3 ,
7370 bytesPruébalo en línea!
Explicación
lambda n:
- Crea una función lambda anónima con un parámetro Stringn
.n[x]
- Obtiene el carácter den
en el índicex
.for x in range(len(n))
- Repite desde0
hasta la longitud den
, nombrando la variablex
.if
- Cheques:'@'<n[x]<'['
- Si el personaje es mayúscula,and(' '+n)[x]in' -'
- Y si está precedido por un espacio o un guión en la cadena formada por un espacio yn
.fuente
i supper
y no tengo idea de por qué?.isupper()
, no tengo idea de lo que lees: pJavaScript (SpiderMonkey) , 62 bytes
Pruébalo en línea!
fuente
QuadS , 17 bytes
Pruébalo en línea!
fuente
Pyth,
1516 bytesBanco de pruebas
fuente
Pyth, 12 bytes
Prueba de suite aquí.
fuente
Bash (grep),
2928 bytesUn puerto de mi respuesta de Python, pero debido a que
pgrep
admite búsquedas de longitud variable, es notablemente más corto (incluso teniendo en cuenta la sobrecarga de Python). Pegue los casos de prueba en un archivo llamadoa
, la salida es de 1 carácter por línea.-1 Gracias a Neil
fuente
^| |-
podría ser una prueba más corta?RProgN 2 , 18 bytes
Explicado
Pruébalo en línea!
fuente
PHP, 62 bytes
Ejecutar como tubería
-nR
o probarlo en línea .otras soluciones:
fuente
C ++, 168 bytes
Salida realizada a través del parámetro
fuente
#include<string>
y asumir que el argumentos
es astd::string
?Lua ,
7975 bytes¡Intentalo!
Pegué una impresión () antes del final final en la versión de prueba porque de lo contrario es un desastre. Este programa cumple perfectamente con los requisitos de E / S y coincidencia, pero sin esa nueva línea adicional es bastante difícil de leer.
La entrada se da en forma de una tabla de números: cadena, número que aumenta en 1 cada vez y comienza en 1.
Explicación:
Para bucles a través de un juego de cada cadena de entrada. La búsqueda de gmatch es la siguiente:
[% - | ] - Agrupar, buscar un - o un espacio
% u: busca un carácter en mayúscula
Luego, para cada partido, lo imprime menos el guión o espacio anterior
Editar: Golfó 4 bytes eliminando la declaración de 'a' y agregando el espacio a la entrada dentro del bucle for, así como cambiando la entrada secundaria a solo 2 en lugar de 2,2 (que producen resultados equivalentes)
fuente
Pyth , 12 bytes
Creado un año después de la respuesta inicial.
Pruébalo en línea!
Pyth , 21 bytes
Respuesta inicial
Pruébalo en línea!
fuente
-|
es un byte menos que[ -]