Utwórz program, który zlicza całkowitą liczbę liter wspólnych dla dwóch nazw i znajduje iloczyn ich długości, aby działał jako „tester miłości”.
Warunki: możesz nie otrzymać odpowiedzi 1: 1 (3 z 3 itd.).
Wejście
Dwie nazwy z STDIN lub najbliższa alternatywa.
Wynik
Oblicz x
jako całkowitą liczbę liter wspólnych między dwoma nazwami, ignorując wielkość liter. Oblicz y
jako iloczyn długości nazw. Następnie wyjście, do STDOUT lub najbliższej alternatywy, to
Name1 and Name2 have x out of y chances of love.
Przykłady
Wejście:
Wesley
Polly
Wynik:
Wesley and Polly have 2 out of 30 chances of love.
Wesley i Polly mają 2 litery wspólne, y
a l
iloczyn ich długości wynosi 6 * 5 = 30.
Wejście:
Bill
Jill
Wynik:
Bill and Jill have 3 out of 16 chances of love.
Bonusy
- Odejmij 30 bajtów, aby użyć ułamków uproszczonych, tzn.
x out of y
Jest w formie całkowicie zredukowanej.
Tabela liderów:
Ranking będzie ustalany na podstawie języków. Kod golfowy kończy się 17 października o 22:20 czasu pacyficznego (Kalifornia)
Nagrody Rep
- Otrzymasz 10 powtórzeń (upvote) za bycie w pierwszej piątce (z wyjątkiem pierwszego miejsca).
- Otrzymasz 15 powtórzeń (zaakceptowane zgłoszenie) za bycie pierwszym miejscem.
- Możesz także otrzymać nagrodę główną od innej osoby.
Oto fragment kodu, który pozwala wygenerować zarówno zwykłą tabelę wyników, jak i przegląd zwycięzców według języka. **
Aby upewnić się, że twoja odpowiedź się pojawi, zacznij od nagłówka, korzystając z następującego szablonu Markdown:
# Language Name, N bytes
gdzie N
jest rozmiar twojego zgłoszenia. Jeśli poprawić swój wynik, to może zachować stare porachunki w nagłówku, uderzając je przez. Na przykład:
# Ruby, <s>104</s> <s>101</s> 96 bytes
** Ułóż fragment kodu z Sign That Word autorstwa Kslkgh
Gratulacje dla następujących osób:
- Zwycięzca Dennis (Pyth)
- Dennis (CJam)
- NBZ (APL)
- molarmanful (JavaScript ES6)
- Alex A. (Julia)
Aaron\nAhmad
? Czysamename\nsamename
?a
ib
jakaś litera, to czy liczą się one jakomin(a,b)
powtórzenia?Odpowiedzi:
Pyth, 40 bajtów
Kod ma 70 bajtów długości i kwalifikuje się do premii -30 bajtów .
Wypróbuj online.
źródło
Dyalog APL ,
9491-30 = 61 bajtówZwykle gra w golfa APL powoduje, że kod jest bardziej kompaktowy - ale nie bardziej złożony - niż zwykle, ale w tym przypadku zapisuję znaki w brzydki sposób:
,⍪'out of' 'chances of'
utwórz tablicę liczb 2 × 2 (po lewej) i tekst (po prawej)×/≢¨⍵
iloczyn długości32|⎕UCS¨⍵
zharmonizuj wartości LUW wielkimi i małymi literami tak≢⊃∩/
, aby przecięcie dwóch zestawów⊢÷∨/
podzieliło sumę, a iloczyn z ich GCD,' love.',⍨∊
tworzy prostą listę i dołącza miłość.⍵,⍪'and' 'have'
utwórz tabelę nazw 2 × 2 (po lewej) i teksty (po prawej)∊' ',¨
wstaw spację do każdej komórki tabeli, a następnie ułóż na prostej liście1↓
początkową zbędną spacjęDzięki ngn za -3 bajty.
źródło
'Wesley' 'Polly'
. Jeśli uważasz, że byłoby to bardziej sprawiedliwe, możesz dołączyć⎕
(U + 2395) do samego końca linii (po}
) i dostosować wynik do 65.JavaScript ES6, 123 bajty
Tyle o „miłości” ... Mógłbym naprawdę zrobić z mniejszą liczbą bajtów.
Uruchom fragment kodu w przeglądarce Firefox.
Pokaż fragment kodu
źródło
Julia, 129 bajtów
Kod ma 159 bajtów, ale kwalifikuje się do premii -30.
Prawdopodobnie można to skrócić, nie wykorzystując bonusu, ale chciałem pochwalić się rozsądnym typem Julii. :)
Nie golfowany:
Rational()
Funkcji tworzy obiekt typuRational
, który ma polanum
iden
, odpowiednio do licznika i mianownika odpowiednio. Zaletą korzystania z tego typu jest to, że Julia robi dla nas redukcję; sami nie musimy się martwić o zmniejszenie frakcji.źródło
CJam, 55 bajtów
Kod ma 85 bajtów długości i kwalifikuje się do premii -30 bajtów .
Wypróbuj online w interpretatorze CJam .
Jak to działa
źródło
Dyalog APL, 84-30 = 54 bajty
∊' and ' ' have' 'out of' 'chances of love.',¨⍨⊢,{+/⌊⌿+⌿↑1↑¨⍨-32|⍉⎕ucs↑⍵}(,÷∨)(×/≢¨)
To pociąg zainspirowany odpowiedzią Adama .
×/≢¨
iloczyn długości{+/⌊⌿+⌿↑1↑¨⍨-32|⍉⎕ucs↑⍵}
szanse na miłość(,÷v)
konkatenacja podzielona przez GCD; pomiędzy powyższymi dwoma wyrażeniami zmniejsza to ułamek⊢,
dodaj nazwy,¨⍨
tasuje łańcuchy po lewej stronie z wartościami po prawej∊
spłaszczyćSzczegółowo obliczenia „Szanse miłości”:
{+/⌊⌿+⌿↑1↑¨⍨-32|⍉⎕ucs↑⍵} ↑⍵ arrange the names in a 2×N matrix, pad with spaces ⎕ucs take ascii codes ⍉ transpose the matrix as N×2 32| modulo 32 to case-fold 1↑¨⍨- for each X create a vector 0 0...0 1 of length X ↑ arrange into a 3d array, pad with 0s +⌿ 1st axis sum, obtain freqs per letter and per name ⌊⌿ 1st axis min, obt. nr of common occurrences per letter +/ sum
test , test2
źródło
Java 8, 192 bajty
Dawny:
źródło
Rubin, 153 bajty
Dłużej niż się spodziewałem. Nie wiem, czy dotyczy to premii 30 bajtów.
źródło
Python 2.7, 161 bajtów
Przetestuj tutaj: http://ideone.com/jeoVgV
A oto wersja, która upraszcza ułamek:
Niestety ten wynik to 219-30 = 189 ...
źródło