Original: https://james-iry.blogspot.co.at/2009/05/brief-incomplete-and-mostly-wrong.html
Alain Colmerauer diseñó el lenguaje de programación lógica Prolog. Su objetivo era crear un lenguaje de programación que fuera tan inteligente como un niño de dos años. Con el fin de demostrar que había logrado su objetivo, presentó un programa Prolog que responde "No" con recursos para todas las consultas.
¡Pregúntame lo que sea!
? -(Por supuesto que no lo hizo). Su tarea es crear un programa que sea más inteligente que el programa de Alain Colmerauer. Esto no tiene que estar en Prolog.
Detalles específicos
Si la entrada termina con
?
y tiene al menos uno,
, devuelva el texto desde el último,
hasta antes del último?
.De lo contrario, si la entrada termina con
?
returnNo
.De lo contrario, vuelve
Yes
.
Reglas
- No hay lagunas estándar.
- La entrada / salida se tomará a través de nuestros métodos de entrada / salida estándar.
- Su programa tiene que tomar al menos 1 consulta.
- Debe generar la consulta procesada.
- Los
Yes
yNo
son sensibles a mayúsculas y minúsculas en los ejemplos. - Se le garantiza que si la entrada incluye a
?
, la entrada solo tendrá uno?
y siempre será el último carácter. - La entrada siempre será una frase / oración. Esta frase / frase no sólo contendrá los caracteres
,
y?
, por ejemplo,
,?
y,?
no son entradas válidas. (Aunque las presentaciones podrían implementarlo de todos modos, ya que la frase / oración es una cadena vacía en estos casos). - Además, la entrada nunca terminará con
,?
. - Si hay espacios en blanco inmediatamente después del último
,
o inmediatamente antes del?
, deben incluirse en la salida.
Ejemplos
Hmm. -> Yes
Alright, -> Yes
Ask me anything! -> Yes
Ask me a question, please! -> Yes
Are you okay? -> No
No? -> No
Hey,does this program work? -> does this program work
Quotes in the following test cases should not be outputted.
They are used as a delimiter here.
Okay, so this does work ? -> " so this does work "
Please, add, a, test, case, containing, multiple, commas? -> " commas"
Puntuación
Este es el código de golf , por lo que la respuesta más corta en bytes gana.
?
, solo habrá uno y siempre será el último carácter?You are guaranteed that if the input includes a ?, the input will only have one ? and it will always be the last character.
Por lo tanto, estos casos de prueba son innecesarios.ends with ,?
una entrada válida?Respuestas:
05AB1E ,
2019 bytes-1 byte gracias a @Grimy .
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
Vea esta sugerencia mía 05AB1E (sección ¿Cómo usar el diccionario? ) Para comprender por qué
”€–”
es"Not"
y”…Ü
es"Yes"
.fuente
Python 3 , 62 bytes
Pruébalo en línea!
La expresión se
~(','in s)*('?'in s)
evalúa como0
(es decir'Yes'
) si la cadena no contiene a'?'
, de lo contrario-1
(es decir'No'
) si la cadena no contiene a','
, y de lo contrario-2
(es decir, la última sección de la cadena separada por comas excluyendo el último carácter).fuente
JavaScript (ES6),
5352 bytesPruébalo en línea!
Comentado
fuente
Carbón ,
2322 bytesPruébalo en línea! El enlace es a la versión detallada del código. Editar: Guardado 1 byte gracias a @KevinCruijssen. Explicación:
¿La cadena contiene algún
?
s?¿Contiene alguna
,
s?Divide la cadena en
,
sy toma la última.Eliminar el
?
y generar el resultado.Si no hay
,
s entonces salidaNo
.Si no hay
?
s entonces salidaYes
.fuente
Print(Join(Split(Pop(Split(q, ",")), "?"), w)
aPrint(Minus(Pop(Split(q, ",")), "?");
Minus
hizo eso. Además, me sentía complacido conmigo mismo por salvar dos separadores.Perl 5 +
-plF/,|\?/
, 25 bytesPruébalo en línea!
fuente
Pyth , 25 bytes
Pruébalo en línea!
fuente
Zsh , 51 bytes
Pruébalo en línea!
Se puede guardar un byte si
ends with,?
y similares no son válidosfuente
Stax , 16 bytes
Ejecutar y depurarlo
fuente
Retina ,
3228 bytes-4 bytes con consejos de @Neil .
Pruébalo en línea.
Explicación:
fuente
K
escenario de Retina 1 tiene un condicional incorporado? No lo hice Probablemente podría ahorrarle unos pocos bytes.K
y condicional&
para ser completamente honesto. Sé cómo usarK
una expresión regular para que coincida así , pero ¿cómo lo combino con el condicional para imitar un if-else ternario para elYes
/No
?&
, que es lo que me sorprendió, y puedes combinar una cadena, o mejor aún, un personaje, ya que sabes que cualquiera?
debe estar al final.Fórmula IBM / Lotus Notes, 79 bytes
No hay TIO para la fórmula, así que ...
fuente
Python 3 ,
9887 bytes-9 bytes gracias a ElPedro
Pruébalo en línea!
Esto ha sido superado por otras respuestas, pero estoy probando un poco más el golf en Python. ¡Se agradece el consejo!
fuente
if
declaraciones en línea a una indexación de lista y luego acortar las condiciones para usarin
, luego desechar todo porque está demasiado cerca de un respuesta existenteif x.count(",")
conif~x.find(",")
, guardando un byte.str.find
evalúa-1
si no se encuentra la cadena. Si complementa esto con el operador unario, da como resultado0
si y solo si la subcadena no está presente. Alternativamente, puede reemplazarloif","in x
por 4 bytes menos.PHP , 58 bytes
Pruébalo en línea!
fuente
Rojo , 78 bytes
Pruébalo en línea!
fuente
Perl 6 , 40 bytes
Pruébalo en línea!
fuente
Gema , 34 personajes
Ejecución de muestra:
Pruébalo en línea! / ¡ Pruebe todos los casos de prueba en línea!
fuente
Japt , 23 bytes
Intentalo
fuente
C # (compilador interactivo de Visual C #) , 72 bytes
Guardado 2 bytes gracias a @someone
Pruébalo en línea!
fuente
SkipLast(1) -> Trim('?')
para -??? bytes por lo que veo (todos mis intentos de calcular la diferencia dan como resultado números diferentes)Python 2 ,
666362 bytesPruébalo en línea!
-3 después de detectar la aclaración actualizada "la entrada solo tendrá una? Y siempre será el último carácter".
-1 con agradecimiento a @ChasBrown
Básicamente un puerto de mi respuesta de Lotus Notes . Curiosamente, la aclaración mencionada anteriormente no ayuda a la respuesta de Notes porque
@Ends
es 4 bytes más barata que@Contains
. Ahora si solo hubiera una@In
función ...fuente
rfind
.Jalea , 20 bytes
Pruébalo en línea!
fuente
C ++ (gcc) ,
120118 bytesMacro tipo función:
Pruébalo en línea!
-2 bytes gracias a @ceilingcat
fuente