El reto
Escriba una función o un programa que tome una cadena compuesta por uno o más pronombres personales subjetivos , separados por signos + , como argumento. La salida debe ser un pronombre único, que es el resultado de la relación definida en el siguiente párrafo.
Por supuesto, siéntase libre de editar, ya que desea corregir los errores gramaticales que seguramente están presentes;)
Este es un desafío de código de golf, por lo que gana el código más corto.
La relación
El objetivo de esta tarea es traducir en "lenguaje matemático" algo que usamos a diario. ¿Cómo pensamos en "Tú y yo"? Bueno, "nosotros", ¿no? Entonces, si la entrada es You+I
la salida, debería ser la cadena We
. Con más de dos pronombres, debería verse así:
You+He+They
->You
La relación se define como esta tabla:
I You He We You They
I I We We We We We
You You You We You You
He He We You They
We We We We
You You You
They They
El problema de "usted"
Bueno, como puedes ver, no soy un hablante nativo de inglés. En mi idioma (italiano) hay una diferencia entre el plural tú ( voi , en italiano) y el singular tú ( tu ). Cuando pensé en este desafío, no pensé en inglés, por lo que existe el problema de que es imposible reconocerlo si estoy usando una forma plural o singular. Afortunadamente (¿o obviamente?), La entrada / salida no cambia en ambas formas, por lo que puede usar una de ellas y cubrirá ambos casos.
Sobre la entrada
La entrada siempre estará en la forma "Pronombre + Pronombre + Pronombre" ... Los pronombres tendrán la primera letra en mayúscula y el resto en minúscula. Las ventajas no estarán rodeadas de espacios, solo de pronombres. La entrada vacía es posible y el resultado debe ser una salida vacía.
Prima
Una pequeña bonificación del 15% si el programa administrará dos nuevos pronombres: She and It . Son lo mismo que Él, obviamente. Recuerde que esta relación es reflexiva, entonces Ella -> Ella y Ella -> Ella. Por lo tanto, cualquier combinación que incluya solo Ella, Él o Él debería generarlos.
Ejemplos
You+I -> We
You+He+They -> You
I+You+He+They -> We
They -> They
They+You -> You
You+You+I+You -> We
For Bonus
She -> She
She+He -> They
I+It+He -> We
It+You -> You
fuente
I+I=I
", ya que solo puede haber uno "I
" de un hablante dado. ¿Pero no pudo "He+He=They
"? En general, si dice "He
" dos veces en esta construcción, se refiere a dos sujetos masculinos diferentes , no al mismo dos veces.Respuestas:
Retina,
62 61 56 5352 bytesMás golf y explicación viene más tarde.
Los 4 pasos de sustitución hacen lo siguiente:
Pruébelo en línea aquí.
3 bytes guardados gracias a Martin Büttner.
fuente
.
lugar de\+
, ya que ese es el único carácter permitido delante de una letra mayúscula o despuésI
.JavaScript (ES6), 130 bytes
Explicación
Prueba
Mostrar fragmento de código
fuente
Perl 5, 67 bytes
79 bytes realmente, pero hay un bono del 15%.
fuente
Python
159153bytesEDITAR : Gracias @ Pietu1998
Esta es una traducción directa de la respuesta Javascript ES6:
Pruébalo aquí
fuente
s
no necesita ser una variable, y puede eliminar la línea y el espacio extra entre las líneasfor
yr=
. Además, es posible que desee comprobar si esto podría ser más corto como una función.Ruby,
150136131119111 bytesCaracterística adicional: maneja múltiples expresiones en la misma línea de comando.
fuente