Le défi
Écrivez une fonction ou un programme qui prend une chaîne composée d'un ou plusieurs pronoms personnels subjectifs , séparés par des signes + , comme argument. La sortie doit être un seul pronom, c'est-à-dire le résultat de la relation définie dans le paragraphe suivant.
Bien sûr, n'hésitez pas à éditer comme vous le souhaitez pour corriger les erreurs grammaticales qui sont sûrement présentes;)
C'est un défi de code-golf, donc le code le plus court l'emporte.
La relation
Le but de cette tâche est de traduire en «math-parlent» quelque chose que nous utilisons quotidiennement. Comment pensons-nous à "vous et moi"? Eh bien, "nous", n'est-ce pas? Donc, si l'entrée est You+I
la sortie doit être la chaîne We
. Avec plus de deux pronoms, il devrait ressembler à:
You+He+They
->You
La relation est définie comme ce tableau:
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
Le problème du «vous»
Eh bien, comme vous pouvez le voir, je ne suis pas un anglophone natif. Dans ma langue (l'italien), il y a une différence entre le pluriel you ( voi , en italien) et le singulier you ( tu ). Quand je pensais à ce défi, je ne pensais pas en anglais, donc il y a le problème qu'il est impossible de reconnaître si j'utilise une forme plurielle ou singulière. Heureusement (ou évidemment?), L'entrée / sortie ne change pas sous les deux formes, vous pouvez donc en utiliser une et vous couvrirez les deux cas!
À propos de l'entrée
L'entrée sera toujours sous la forme "Pronom + Pronom + Pronom" ... Les pronoms auront la première lettre en majuscule et le reste en minuscule. Les avantages ne seront pas entourés d'espaces, uniquement de pronoms. Une entrée vide est possible et le résultat doit être une sortie vide.
Prime
Un petit bonus de 15% si le programme va gérer deux nouveaux pronoms: Elle et Elle . Ils sont identiques à Lui, évidemment. N'oubliez pas que cette relation est réflexive, alors Elle -> Elle et Elle -> Elle. Par conséquent, toute combinaison qui ne comprend que She, He ou It doit les afficher.
Exemples
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
la source
I+I=I
", car il ne peut y en avoir qu'un "I
" à partir d'un haut-parleur donné. Mais ne pouvait pas "He+He=They
"? Généralement, si vous dites "He
" deux fois dans cette construction, vous faites référence à deux sujets masculins différents , pas deux fois le même.Réponses:
Rétine,
62 61 56 5352 octetsPlus de golf et des explications viennent plus tard.
Les 4 étapes de substitution procèdent comme suit:
Essayez-le en ligne ici.
3 octets économisés grâce à Martin Büttner.
la source
.
place de\+
, car c'est le seul caractère autorisé devant une majuscule ou aprèsI
.JavaScript (ES6), 130 octets
Explication
Tester
Afficher l'extrait de code
la source
Perl 5, 67 octets
79 octets vraiment, mais il y a un bonus de 15%.
la source
Python
159153octetsEDIT : Merci @ Pietu1998
Il s'agit d'une traduction directe de la réponse Javascript ES6:
Essayez-le ici
la source
s
n'a pas besoin d'être une variable, et vous pouvez supprimer la ligne et l'espace supplémentaires entre les lignesfor
etr=
. En outre, vous voudrez peut-être vérifier si cela peut être plus court en tant que fonction.Ruby,
150136131119111 octetsBonus: gère plusieurs expressions sur la même ligne de commande.
la source