Introducción
Cuando recibes un texto aburrido, solo quieres terminarlo lo más rápido posible. Observemos el siguiente texto:
Ens colligi timenda etc priorem judicem. De quascunque ii at contingere
repugnaret explicetur intellectu. Adjuvetis hoc fortassis suspicari opportune
obversari vix eam? Dei praemia prudens hominum iii constet requiri haberem. Ima
sane nemo modi fuit lus pro dem haud. Vestro age negare tactum hoc cui lor. Ne et
ut quod id soli soni deus. At constare innumera is occurret ea. Nia calebat seu
acquiro fraudem effingo dicimus.
Nota: Este texto tiene nuevas líneas para facilitar la lectura, mientras que los casos de prueba que necesita manejar no tienen caracteres de nueva línea.
Una forma de leer el texto es encontrar preguntas que el escritor ha puesto en el texto. Por ejemplo, hay 1 pregunta en el texto anterior. A saber:
Adjuvetis hoc fortassis suspicari opportune obversari vix eam?
Esto se puede hacer dividiendo el texto en oraciones. Una oración siempre terminará con uno de los siguientes símbolos de puntuación: .?!
(otros no tienen que ser manejados). Otros símbolos que estos son parte de la oración.
La tarea
Dada una línea de texto que consta de solo
- letras (A-Za-z)
- números (0-9)
- espacios
- puntuación (
,.;:?!
) (una oración no puede comenzar con uno de estos).
Envíe las preguntas que están en el texto en cualquier formato razonable. Puede suponer que el texto siempre tendrá al menos 1 pregunta . La salida de arrastre y que conduce espacios antes y después de que se permitió una pregunta.
Importante : al lado de un símbolo de puntuación , nunca habrá otro símbolo de puntuación (por ejemplo, ??
no es válido y no será necesario que lo maneje).
Casos de prueba
En el formato:
Input
Output(s)
Los casos de prueba:
Huh? I haven't heard what you just said. Could you repeat that please?
Huh?
Could you repeat that please?
plz can i haz cheesburgr? i am cat pls.
plz can i haz cheesburgr?
This is a badly formatted question.Can u please help me,or my friends,with formatting this question ?thankyou.
Can u please help me,or my friends,with formatting this question ?
a.b.c.d?
d?
Does this question have a question mark? yes
Does this question have a question mark?
Why example.com resolves to 127.0.0.1 in 99.9 percent of cases?
9 percent of cases?
A? b? c? d!
A?
b?
c?
Este es el código de golf , por lo que gana el envío con el menor número de bytes.
.?!
Otros no deben ser manejados, como lo especifican sus reglas, pero usted ha dicho que otros no tienen que ser manejados.Respuestas:
Retina,
1311 bytesPruébalo en línea!
¡Gracias a @MartinEnder por 2 bytes!
fuente
Python, 46 Bytes
Llamar con:
salida en pruebas:
otra idea, 77 bytes (en python3 necesitarías una lista alrededor del filtro):
Soy nuevo en esto, así que esto podría ser mucho más corto.
-17 (!) Bytes gracias a Martin
-2 bytes haciendo coincidir cualquier cosa que no sea "!", "?" o "." (Acercándome a las soluciones de shell, pero dudo que pueda ahorrar mucho más)
fuente
[\w,:; ]*
desgreñado (porque ese grupo no puede superar un carácter de puntuación de todos modos), y tampoco necesitas anteponer.
tu entrada. También puedes acortar la clase de personaje restante a[^.!?]
.JavaScript,
3524 bytesDevuelve todas las subcadenas que comienzan después de a
.
,?
o!
(o el comienzo del texto) y terminan en a?
.fuente
V , 12 bytes
Pruébalo en línea!
Una respuesta muy directa.
Afortunadamente, manejar nuevas líneas o verificar todos los casos de prueba no agrega ningún byte.
fuente
Jalea , 16 bytes
Pruébalo en línea! o verificar todos los casos de prueba
fuente
Utilidades de Shell,
4338 bytes¡Gracias a rexkogitans por recortar 5 bytes!
Entrada de tubería, como esta:
Si es importante, estoy usando:
tr
5.3.0sed
4.2.1cmd.exe
, enviado con Windows 5.1.2600fuente
tr ? "\n"|sed "s/.*[\.!]//;s/.\+/&?/"
ahorra 5 bytes (dos agregadostr
y 7 guardadossed
, esto se probó en bash)./g
no es necesario, ya que se procesa línea por línea.[]
; mi primer intento de hacer eso se parecía a algo así\(\.|!\)
.Perl 5.10,
2118 bytes (con el indicador -n )Implementación directa de la pregunta.
Pruébalo aquí!
fuente
m
de su expresión regular, y luego podrá eliminar el espacio entresay
y/
Ruby 1.9, 17 bytes
Un programa de 5 bytes que debe invocarse con las siguientes opciones de línea de comando:
fuente
Lote, 174 bytes
Leer una línea de STDIN es un byte más corto que usar
set s=%*
.fuente
PowerShell v4 +, 43 bytes
Realmente sencillo. Toma entradas
$args
y las alimenta como el primer parámetro para una[regex]::Matches(...)
función estática .NET . La expresión regular que estamos combinando es[^?!.]*\?
, es decir, cualquier número de caracteres que no terminan la oración seguidos de un signo de interrogación. La función estática devuelve una matriz de objetos que detalla qué grupo de captura, índice, etc., pero solo queremos el.Value
s, por lo que el retorno se encapsula en parens y llamamos a esa propiedad. Aquí es donde entra en juego el requisito de v4 +, ya que en versiones anteriores tendría que hacer algo como un bucle|%{$_.Value}
u|Select Value
obtener las propiedades adecuadas.Ejemplo sin los padres y
.Value
Ejemplo con los padres y
.Value
fuente
Python 3, 91 bytes
Guarda 1 byte en Python 2:
fuente