Cały dzisiejszy dzień spędziłem na turnieju Super Smash Bros. i zacząłem myśleć o niektórych terminologiach, których używamy przy opisywaniu zestawów. Są to trzy rodzaje zestawów, które widzę w turniejach:
- Best of 3 (Bo3)
- Rozgrywane są trzy gry. Zwycięzcą seta jest gracz, który wygrał większość gier.
- Jeśli pojedynczy gracz wygra dwie gry z zestawu, natychmiast zostaje ogłoszony zwycięzcą, ponieważ przeciwnik nie byłby w stanie go dogonić.
- Best of 5 (Bo5)
- Gra się w pięć gier. Zwycięzcą seta jest gracz, który wygrał większość gier.
- Jeśli pojedynczy gracz wygra trzy gry z zestawu, natychmiast zostaje ogłoszony zwycięzcą, ponieważ przeciwnik nie byłby w stanie go dogonić.
- Pierwszy do 5 (Ft5)
- Okej, wcześniej trochę oszukiwałem. Tego rodzaju zestaw nie jest częścią turnieju, ale często można zobaczyć, jak dzieje się na miejscu. Jest to tradycyjny zestaw, w który zagrasz, jeśli rzucisz wyzwanie innemu graczowi, a pieniądze są na linii.
- To tak proste, jak się wydaje: gracze wielokrotnie grają w gry, dopóki jeden z nich nie wygra pięciu, a ten gracz zostanie ogłoszony zwycięzcą.
Oczywiście Bo3 i Bo5 są bardzo podobne, różnią się jedynie liczbą rozegranych gier. Ale Ft5 jest wyraźnie inny ... prawda? Nie całkiem! Bez względu na to, jak spadnie zestaw Bo3, zwycięzca wygra dokładnie dwie gry. Zwycięzca zestawu Bo5 wygra dokładnie 3 gry. Dlaczego nie nazwać ich Ft2 lub Ft3? Ta sama logika zastosowana w odwrotnej kolejności pokazuje, że Ft5 jest dokładnie taki sam jak Bo9.
Celem tego wyzwania jest określenie synonimu ustawionego formatu.
Specyfikacja
Twój program lub funkcja pobierze pojedynczy ciąg znaków z wejścia . Pierwsze dwa znaki to Bo
lub Ft
, a po nich będzie liczba. Program / funkcja wyświetli ciąg z przeciwnym prefiksem i liczbą taką, że ciągi wejściowe i wyjściowe oznaczają to samo.
Każdy ciąg zaczynający się od Bo
kończy się nieparzystą liczbą.
Możesz założyć, że liczba w ciągu wejściowym nigdy nie będzie większa niż 200. Możesz również założyć, że nigdy nie otrzymasz danych wejściowych, dla których poprawne dane wyjściowe zawierałyby liczbę większą niż 200. Podobnie, liczby wejściowe i prawidłowe dane wyjściowe zawsze być większe niż 0.
Przykłady
Bo3 -> Ft2
Ft2 -> Bo3
Bo5 -> Ft3
Ft3 -> Bo5
Bo9 -> Ft5
Ft5 -> Bo9
Bo51 -> Ft26
Ft26 -> Bo51
Bo199 -> Ft100
Ft100 -> Bo199
Odpowiedzi:
Pyth, 23 bajty
Zestaw testowy.
Jak to działa:
Po pierwsze, aby znaleźć
Bo
lubFt
, program odfiltrowuje znaki na wejściu zBoFt
, przy pomocy-"BoFt"z
.Jest to natychmiast drukowane za pomocą
p
.p
również zwraca swój wkład. Łańcuch ten jest konwertowany na liczbę interpretującą bajty jako podstawę 256. Wynik to 17007, jeśli łańcuch byłBo
, i 18036, jeśli łańcuch byłFt
.Następnie oblicza oba możliwe wyniki,
num * 2 - 1
a(num + 1)/2
i kładzie to na liście 2 wejścia. Następnie program indeksuje się do tej listy o powyższym numerze, 17007 lub 18036. Z powodu modułowego indeksowania Pytha, wybiera odpowiedni numer. Wynik jest następnie drukowany automatycznie.Ponieważ
p
wydruki nie mają końca nowej linii, ale druk niejawny ma końcową linię nowej linii, dwa kolejne wydruki mają dokładnie odpowiedni format.źródło
Python 2, 59
W krótkich wyzwaniach, w których funkcje są dozwolone, zwięzłość
lambda
zwykle wygrywa, nawet jeśli kod musi się powtarzać z powodu niemożności przypisania zmiennych.Sprawdzamy, w jakim przypadku mamy porównanie ciągów
s>'C'
. Następnie uzyskaj odpowiedni prefiks za pomocą sztuczki wycinania listy'FBto'[s>'C'::2]
.Aby uzyskać liczbę, musimy ocenić znaki poza sekundą i zrobić jedną z nich
*2+1
lub/2-1
do niej. Robimy to, przyjmując jedno z tych dwóch wyrażeń jako ciągi znaków, ponownie wybrane przez podział listy, ocenę wyniku i przekształcenie tej liczby w ciąg.Edycja: Zapisano jeden znak (59):
Nawet nie pytaj ...
źródło
lambda a:(lambda b:b*b)(a+3)
. Nie jest to jednak szczególnie krótkie.Metaprogramowanie szablonów C ++ 11, 305 bajtów
Edycja: Wyłączyłem kolejne 100 bajtów
Czy dostaję jakieś upośledzenie za wybór języka? : p
Przykłady:
źródło
CJam, 29 bajtów
Wypróbuj online
Nie ma tu nic bardzo skomplikowanego. Obliczanie dwóch możliwych wyników i wybieranie jednego z dwóch na podstawie pierwszej litery w danych wejściowych. Zaktualizuje się, jeśli wymyślę coś lepszego.
Wyjaśnienie:
źródło
CJam, 27 bajtów
Wykorzystuje to fakt, że
'B' ^ 'F' == 4
i'o' ^ 't' == 27
.Wypróbuj online w interpretatorze CJam .
źródło
JavaScript (ES6),
5047 znakówBardzo proste rozwiązanie: (Dzięki podziemnej kolei jednotorowej za usunięcie jednego bajtu!)
Nie golfowany:
Tym razem moja odpowiedź była tylko ~ 2x dłuższa niż najlepsza odpowiedź Pyth!
źródło
y/2+.5
z-~y/2
zapisać bajt.Haskell, 69 bajtów
Racjonalnie proste.
źródło
Pyth - 31 bajtów
Całkiem proste, wykorzystuje zip i modułowe indeksowanie, aby uzyskać przełącznik. Rzeczywiste obliczenia są naprawdę łatwe.
Zestaw testowy .
źródło
Julia, 63 bajty
Nie golfowany:
źródło
Matlab, 95 bajtów
Przykłady:
źródło
PowerShell, 111
Słabość PowerShell i wymagane nawiasy są jego upadkiem. Nawet Gra w golfa The
.Substring(0,2)
aby[0..1]-join''
tylko oszczędza 2 bajty każda, a inna para bajtów zapisywane z domniemanychElse
dziękiexit
poleceniu. No cóż. Dobre odświeżenie separujących łańcuchów.Kod:
Stosowanie:
Wyjaśnienie
źródło
Perl 5, 38 bajtów (37 + 1 dla
-p
)Zastosowanie : zapisz jako 54768.pl i uruchom jako:
lub interaktywnie:
źródło
-p
implikuje-n
. Nie potrzebujesz obu.FSharp -
153143 bajtyAktualizacje
if ... then ...
źródło
Ruby, 82 bajtów
Wywoływany z argumentem, aby zrzucić kilka bajtów.
Pierwszy post, sugestie mile widziane. :)
EDYCJA: Pozbyłem się 12 bajtów, zmieniając moją matematykę. Ponieważ liczby Bo są nieparzyste, zawsze będą miały dziesiętną wartość po podzieleniu przez 2, co oznacza, że mogę po prostu obciąć i dodać 1 zamiast używać
ceil
do zaokrąglania w górę.źródło
puts
.PHP,
857975 bajtówUżycie:
Wywołaj skrypt z argumentem:
php -d error_reporting=0 script.php Bo5
źródło
Nie absurdalnie krótki jak inni, ale to mój pierwszy post:
JS, 143 bajty
Wersja bez golfa:
źródło
var
słowa kluczowego, oraz 3) instrukcje można rozdzielić średnikiem lub znakiem nowej linii, więc nie potrzebujesz obu. Aby uzyskać bardziej ogólne wskazówki, zobacz Wskazówki dotyczące gry w golfa w JavaScript .R, 144 bajty
Nowość w golfie kodowym, R i tej witrynie. Więc oto idzie:
źródło
C #, 110 bajtów
źródło