Cel
W związku z tym, że World Series jest tuż za rogiem, potrzebuję programu, który może odczytać wyniki box i powiedzieć mi, co to jest inning. Jest to nieco skomplikowane, ponieważ baseball stosuje dziwną metodę rejestrowania wyniku. Nie zapisują wyniku drużyny przeciwnej za zmianę, dopóki nie strzelą (i nadal trwają) lub nie ukończą ataku. Zatem 0 na tablicy wyników zawsze oznacza skończonego ataka. Na przykład:
Example A:
Inning| 1| 2| 3| 4| 5| 6| 7| 8| 9|
Them| 0| 0| 0| 0| 0| 2| | | |
Us| 0| 0| 2| 0| 0| 0| | | |
Example B:
Inning| 1| 2| 3| 4| 5| 6| 7| 8| 9|
Them| 0| 0| 0| 0| 0| 2| | | |
Us| 0| 0| 2| 0| 0| 1| | | |
Example C:
Inning| 1| 2| 3| 4| 5| 6| 7| 8| 9|
Them| 0| 0| 0| 0| 0| 2| | | |
Us| 0| 0| 2| 0| 0| | | | |
#Them is the Away Team, Us is the Home Team (who are the guys you root for)
- Przykład A: Wiemy, że jesteśmy na szczycie siódmej pozycji, ponieważ Us ma zapisane 0 na dole szóstej, a góra siódmej jest pusta.
- Przykład B: Może to być dół 6. lub góra 7..
- Przykład C: Może to być góra lub dół szóstej.
Twoim zadaniem jest zwrócenie, jakie to mogą być zmiany.
Wejście
Dwie listy liczb całkowitych nieujemnych. Zakłada się, że listy będą postrzępione, a lista gości drużyny będzie tego samego rozmiaru lub o jeden element większa w porównaniu z drużyną gospodarzy. Możesz wziąć wyniki w dowolnej kolejności, ale podać odpowiedź, jeśli nie używasz wartości domyślnej. Tzn. Drużyna gości, a następnie drużyna gospodarzy (domyślnie), lub drużyna gospodarzy, a następnie drużyna gości (odwrócone). Można je również uzupełnić danymi zastępczymi, jeśli chcesz, w odpowiedzi podaj, jeśli to zrobisz.
Wynik
Ciąg lub coś równoważnego, który identyfikuje numer inningu i czy jest to góra czy dół. Np 7B 8T
, B7 T8
, ['7B','8T']
to wszystko jest w porządku. Jeśli są dwie odpowiedzi, musisz wypisać obie. Format jest jednak dość elastyczny.
Zasady
- Dane wejściowe zawsze będą prawidłowe
- Gry mogą przejść w nieokreślone dodatkowe inningi. Twój program powinien obsługiwać do 255 inningów.
- Standardowe luki są zabronione
- To jest golf golfowy, więc wygrywa najkrótszy kod
Przypadki testowe
#Input:
[[],
[]]
#Output: 1T
#Input:
[[0],
[]]
#Output: 1B
#Input:
[[0,0,0,1],
[0,0,0,0]]
#Output: 5T
#Input:
[[0,0,0,1],
[0,0,0,1]]
#Output: 4B, 5T
#Input:
[[0,0,0,1,0,0,1,0,0,1],
[0,0,0,0,1,0,0,1,0,1]]
#Output: 10B, 11T
#Input:
[[0,0,0,1],
[0,0,0]]
#Output: 4T, 4B
#Input:
[[0,0,0,0],
[0,0,0]]
#Output: 4B
Odpowiedzi:
C (gcc) , 50 bajtów
Pobiera dane wejściowe jako wskaźnik do listy z przeplotem (tj
{them#1, us#1, them#2,...}
.).Zwraca jedną opcję przez modyfikację, a drugą przez wartość zwracaną.
Wartości ujemne wskazują dolną część zmiany, wartości dodatnie wskazują górną część zmiany. Zera są „puste”. Bezwzględna wartość wyjściowa to numer zmiany.
-4,5
Oznacza więc, że możliwości są na górze piątej i na dole czwartej, oraz1,0
wskazuje, że jedyną możliwością jest szczyt pierwszej.Zwracana wartość makra może być wykorzystana do ustalenia, czy istnieje jeden czy dwa możliwe inningi; wartością zwracaną jest,
0
jeśli nie ma innej inningu. W przeciwnym razie jest to numer zmiany.Zero bajtów kodu źródłowego. Użyj następujących flag jako flagi preprocesora:
Wypróbuj online!
Degolf
źródło
Perl 6 ,
52 4845 bajtów-3 bajty dzięki restrukturyzacji z nwellnhof!
Wypróbuj online!
Anonimowy blok kodu, który pobiera dane wejściowe jako dwie listy, górną i dolną. Dane wyjściowe to lista krotek, w której pierwszym elementem jest liczba inningu, a drugim elementem jest Prawda lub Fałsz, odpowiadające Dół lub Góra.
Wyjaśnienie:
źródło
R ,
10396 bajtówWypróbuj online!
@digEmAll zapisanych 7 bajtów!
Pobiera na wejściu dwie
listywektorów i wysyła jedną lub dwie liczby całkowite reprezentujące możliwe inningi. Dodatnie liczby całkowite są na górze zmiany, a ujemne liczby całkowite są na dole zmiany.W R dodatnie liczby całkowite są prawdziwe, więc mogę użyć różnicy długości jako pierwszego argumentu
if()
.źródło
[[
jakoif
zamiennik, ponieważ używasz go[
w kodzie.<
i^
. Myślę, że[
był to ten, który wykorzystałem w przykładzie, który pamiętam.'if'
(oraz usunąć{}
i przenieść naf=
zewnątrz): 96 bajtówJavaScript (Node.js) , 75 bajtów
Wypróbuj online!
źródło
Galaretka , 11 bajtów
Wypróbuj online!
Pierwszy element: indeks kolumny oparty na 0.
Drugi element:
0
u góry,1
u dołu.Dane wyjściowe to lista jednej lub dwóch par, jak określono powyżej (przygotowana, aby lepiej ją pokazać). Inningi wyjściowe są w odwrotnej kolejności.
źródło
Python 2 ,
135129126125123119 bajtówWypróbuj online!
-1 dzięki dzięki @ovs
-4 dzięki jeszcze raz @ovs
źródło
if d else"11BT"[c<1::2]
dla -3if d
Widzę (nie powinienem tego przegapić!), Aleelse"11BT"[c<1::2]
nie wydaje mi się krótszy, chyba że coś mi umknie.if d
.if d
możesz zrobićif b
, to nie musisz przechowywaćlen(b)
w zmiennej.d
do[d<c]
. Nie mogę tego obejść. Jakieś pomysły?Python 2 , 65 bajtów
Wypróbuj online!
Drukuje dwie linie, najpierw dolną możliwość zmiany, a następnie górną, jako listę singletonów. Jeśli jedno z nich nie jest możliwe, lista jest pusta.
źródło
Czysty ,
8475 bajtówWypróbuj online!
Definiuje funkcję
@ :: [Int] [Int] -> (Int, Int)
i niektórych pomocników.Daje wynik w postaci, w
(Top, Bottom)
której zero oznacza zerową możliwość.źródło