Wyzwanie
Napisz funkcję lub program, który jako argument przyjmuje ciąg złożony z jednego lub więcej subiektywnych zaimków osobowych , oddzielonych znakami + . Wynikiem musi być pojedynczy zaimek, który jest wynikiem relacji zdefiniowanej w następnym akapicie.
Oczywiście możesz edytować, ponieważ chcesz poprawić błędy gramatyczne, które z pewnością są obecne;)
To wyzwanie dla golfa, więc wygrywa najkrótszy kod.
Relacja
Celem tego zadania jest przetłumaczenie w języku „matematyki” czegoś, z czego korzystamy na co dzień. Jak myślimy o „Ty i ja”? „My”, prawda? Tak więc, jeśli wejście jest You+I
wyjściem, powinien to być ciąg We
. Przy więcej niż dwóch zaimkach powinno to wyglądać następująco:
You+He+They
->You
Relacja jest zdefiniowana jako następująca tabela:
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
Problem „Ty”
Jak widać, nie jestem rodzimym językiem angielskim. W moim języku (włoskim) istnieje różnica między liczbą mnogą you ( voi , po włosku) a liczbą pojedynczą you ( tu ). Kiedy myślałem o tym wyzwaniu, nie myślałem po angielsku, więc jest problem, którego nie można rozpoznać, jeśli używam liczby mnogiej lub pojedynczej. Na szczęście (lub oczywiście?) Wejście / wyjście nie zmienia się w obu formach, więc możesz użyć jednego z nich i obejmiesz oba przypadki!
O wejściu
Dane wejściowe zawsze będą miały postać „Zaimek + zaimek + zaimek” ... Zaimki będą miały pierwszą literę dużymi literami, a pozostałe małe. Plusy nie będą otoczone spacjami, tylko zaimkami. Możliwe jest puste wejście i wynik musi być pusty.
Premia
Mała premia w wysokości 15%, jeśli program będzie zarządzał dwoma nowymi zaimkami: Ona i To . Są oczywiście takie same jak On. Pamiętaj, że ta relacja jest zwrotna, więc Ona -> Ona i To -> To. Dlatego każda kombinacja, która obejmuje tylko Ona, On lub To, powinna dać je.
Przykłady
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
źródło
I+I=I
”, ponieważI
z danego głośnika może być tylko jeden „ ”. Ale nie mógł „He+He=They
”? Zasadniczo, jeśli powiesz „He
” dwa razy w tej konstrukcji, masz na myśli dwa różne tematy mężczyzn, a nie ten sam dwa razy.Odpowiedzi:
Siatkówka,
62 61 56 5352 bajtyDalsza gra w golfa i wyjaśnienia są dostępne później.
4 kroki podstawienia wykonują następujące czynności:
Wypróbuj online tutaj.
3 bajty zapisane dzięki Martinowi Büttnerowi.
źródło
.
zamiast\+
, ponieważ jest to jedyny znak dozwolony przed wielką literą lub po niejI
.JavaScript (ES6), 130 bajtów
Wyjaśnienie
Test
Pokaż fragment kodu
źródło
Perl 5, 67 bajtów
79 bajtów naprawdę, ale jest 15% bonus.
źródło
Python
159153 bajtówEDYCJA : Dzięki @ Pietu1998
To jest bezpośrednie tłumaczenie odpowiedzi Javascript ES6:
Wypróbuj tutaj
źródło
s
nie musi być zmienną i możesz usunąć dodatkową linię i odstęp między liniamifor
ir=
. Możesz także sprawdzić, czy może to być krótsza funkcja.Rubinowy,
150136131119111 bajtówFunkcja bonusowa: obsługuje wiele wyrażeń w tym samym wierszu poleceń.
źródło