Wprowadzenie:
Widziałem, że teraz jest tylko jedno wyzwanie związane z badmintonem . Ponieważ sam gram w badmintona (od 13 lat), pomyślałem, że dodam kilka wyzwań związanych z badmintonem. Oto pierwszy:
Wyzwanie:
Dane wejściowe: dwie liczby całkowite Dane
wyjściowe: Jedno z trzech różnych i unikalnych danych wyjściowych według własnego wyboru. Jeden wskazujący, że dane wejściowe to prawidłowy wynik badmintona ORAZ zestaw zakończył się zwycięzcą; jeden wskazuje, że dane wejściowe są prawidłowym wynikiem w badmintona ORAZ zestaw jest nadal w grze; jeden wskazuje, że dane wejściowe nie są prawidłowym wynikiem w badmintona.
W badmintonie obaj (pary) graczy zaczynają od 0 punktów, a ty zatrzymujesz się, gdy jeden z dwóch (par) graczy osiągnie wynik 21, z różnicą co najmniej 2 punktów, maksymalnie do 30-29.
Są to więc wszystkie możliwe pary wejściowe (w dowolnej kolejności) wskazujące, że jest to poprawny wynik badmintona ORAZ zestaw się zakończył:
[[0,21],[1,21],[2,21],[3,21],[4,21],[5,21],[6,21],[7,21],[8,21],[9,21],[10,21],[11,21],[12,21],[13,21],[14,21],[15,21],[16,21],[17,21],[18,21],[19,21],[20,22],[21,23],[22,24],[23,25],[24,26],[25,27],[26,28],[27,29],[28,30],[29,30]]
I to są wszystkie możliwe pary wejściowe (w dowolnej kolejności) wskazujące, że jest to poprawny wynik badmintona, ALE, że zestaw jest nadal w grze:
[[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15],[0,16],[0,17],[0,18],[0,19],[0,20],[1,1],[1,2],[1,3],[1,4],[1,5],[1,6],[1,7],[1,8],[1,9],[1,10],[1,11],[1,12],[1,13],[1,14],[1,15],[1,16],[1,17],[1,18],[1,19],[1,20],[2,2],[2,3],[2,4],[2,5],[2,6],[2,7],[2,8],[2,9],[2,10],[2,11],[2,12],[2,13],[2,14],[2,15],[2,16],[2,17],[2,18],[2,19],[2,20],[3,3],[3,4],[3,5],[3,6],[3,7],[3,8],[3,9],[3,10],[3,11],[3,12],[3,13],[3,14],[3,15],[3,16],[3,17],[3,18],[3,19],[3,20],[4,4],[4,5],[4,6],[4,7],[4,8],[4,9],[4,10],[4,11],[4,12],[4,13],[4,14],[4,15],[4,16],[4,17],[4,18],[4,19],[4,20],[5,5],[5,6],[5,7],[5,8],[5,9],[5,10],[5,11],[5,12],[5,13],[5,14],[5,15],[5,16],[5,17],[5,18],[5,19],[5,20],[6,6],[6,7],[6,8],[6,9],[6,10],[6,11],[6,12],[6,13],[6,14],[6,15],[6,16],[6,17],[6,18],[6,19],[6,20],[7,7],[7,8],[7,9],[7,10],[7,11],[7,12],[7,13],[7,14],[7,15],[7,16],[7,17],[7,18],[7,19],[7,20],[8,8],[8,9],[8,10],[8,11],[8,12],[8,13],[8,14],[8,15],[8,16],[8,17],[8,18],[8,19],[8,20],[9,9],[9,10],[9,11],[9,12],[9,13],[9,14],[9,15],[9,16],[9,17],[9,18],[9,19],[9,20],[10,10],[10,11],[10,12],[10,13],[10,14],[10,15],[10,16],[10,17],[10,18],[10,19],[10,20],[11,11],[11,12],[11,13],[11,14],[11,15],[11,16],[11,17],[11,18],[11,19],[11,20],[12,12],[12,13],[12,14],[12,15],[12,16],[12,17],[12,18],[12,19],[12,20],[13,13],[13,14],[13,15],[13,16],[13,17],[13,18],[13,19],[13,20],[14,14],[14,15],[14,16],[14,17],[14,18],[14,19],[14,20],[15,15],[15,16],[15,17],[15,18],[15,19],[15,20],[16,16],[16,17],[16,18],[16,19],[16,20],[17,17],[17,18],[17,19],[17,20],[18,18],[18,19],[18,20],[19,19],[19,20],[20,20],[20,21],[21,21],[21,22],[22,22],[22,23],[23,23],[23,24],[24,24],[24,25],[25,25],[25,26],[26,26],[26,27],[27,27],[27,28],[28,28],[28,29],[29,29]]
Każda inna para liczb całkowitych byłaby nieprawidłowym wynikiem badmintona.
Zasady konkursu:
- I / O jest elastyczny, więc:
- Możesz wziąć dane wejściowe jako listę dwóch liczb; dwie oddzielne liczby poprzez STDIN lub parametry funkcji; dwa ciągi; itp.
- Rezultatem będą trzy odrębne i unikalne wartości według własnego wyboru. Mogą być liczbami całkowitymi (czyli
[0,1,2]
,[1,2,3]
,[-1,0,1]
, itd.); mogą być booleanami (tj.[true,false,undefined/null/empty]
); mogą być znakami / łańcuchami (tj.["valid & ended","valid","invalid"]
); itp. - Podaj we / wy użyte w odpowiedzi!
- Dozwolone jest przyjmowanie liczb całkowitych zamówionych w przedsprzedaży od najniższej do najwyższej lub odwrotnie.
- Wejściowe liczby całkowite mogą być ujemne, w którym to przypadku są oczywiście nieprawidłowe.
Główne zasady:
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki gry w golfa zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Do odpowiedzi mają zastosowanie standardowe reguły z domyślnymi regułami We / Wy , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami i typem zwracanych, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem kodu (tj. TIO ).
- Zalecane jest również dodanie wyjaśnienia do odpowiedzi.
Przypadki testowe:
Te przypadki testowe są prawidłowe, a zestaw się zakończył:
0 21
12 21
21 23
28 30
29 30
Te przypadki testowe są prawidłowe, ale zestaw jest nadal w grze:
0 0
0 20
12 12
21 21
21 22
Te przypadki testowe są nieprawidłowe:
-21 19
-19 21
-1 1
12 22
29 31
30 30
42 43
1021 1021
b-61<~a<a>b/22*b-3
), możesz zapisać 3 bajty.lambda a,b:-(a<0)|cmp(2+max(19,a)%30-a/29,b)
JavaScript (ES6),
55 5348 bajtów(a)(b)
Wypróbuj online!
źródło
C # (interaktywny kompilator Visual C #) ,
5352 bajtyNazywany jako
f(max)(min)
. Zwraca 3 za nieprawidłowe, 1 za ukończone, 2 za trwające.Zaoszczędził 1 bajt dzięki Kevinowi Cruijjsenowi
Wypróbuj online!
źródło
Galaretka , 25 bajtów
Wypróbuj online!
Lewy argument: minimum. Właściwy argument: maksymalny.
Nieprawidłowy:
0
. W toku:1
. Zakończona:2
.Wyjaśnienie:
źródło
VDM-SL , 80 bajtów
Ta funkcja przyjmuje wyniki uporządkowane w kolejności rosnącej i zwraca pusty zestaw, jeśli wynik jest nieprawidłowy lub zestaw zawierający informację, czy zestaw jest kompletny (więc {true}, jeśli zestaw jest kompletny i ważny, oraz {false}, jeśli zestaw jest niekompletny i ważny)
Pełny program do uruchomienia może wyglądać następująco:
Wyjaśnienie:
źródło
Java (JDK) ,
5948 bajtówWypróbuj online!
Zwraca an
Object
, czyli odpowiednioInteger
0
dla nieważnych gier iBoolean
strue
orazfalse
dla ważnych trwających gier i dla prawidłowych ukończonych gier. Bierze wynik uporządkowany (i curry), najpierw wyższy wynik.-2 bytes
odwracając kontrolę na koniec meczu.-11 bytes
curry, operatory bitowe i pewne sztuczki z automatycznym przekierowaniem typu return - dzięki @KevinCruijssenNie golfił
źródło
APL (Dyalog Unicode) , 35 bajtów SBCS
Infix milcząca funkcja, w której zakończono na 2, trwającą na 1, nieprawidłową na 0, pozostały mniejsze i większe wyniki.
Wypróbuj online!
Implementuje połączone matematyczne formuły Erika the Outgolfer
i przetłumaczone bezpośrednio na APL (który jest ściśle asocjacyjny, więc unikamy nawiasów):
Można to przeprowadzić w ukrytej funkcji po zastępując dla i dla , symbolizuje w lewo i w prawo argumentów zamiast dwóch zmiennych⊣ x ⊢ y
Teraz jest równoważne dla dowolnej funkcji , więc możemy to uprościć⊣⎕⊢ ⎕ ⎕
które jest naszym rozwiązaniem;
(,≡30 31|,)×(⊢<2+X)×1+⊢>X←29⌊20⌈1+⊣
:⊣
lewy argument; jeden plus to; maksymalnie 20 i więcej; minimum 29 i to; przypisz to do ; czy poprawny argument jest większy (0/1) ?; dodaj jeden; ... wielokrotnie brzmienie że; dwa plus ; jest właściwym argumentem mniejszym niż ten (0/1); … pomnóż przez to następujące; konkatenuje argumenty; reszty po podzieleniu przez te liczby;1+
20⌈
29⌊
X←
X
⊢>
1+
(
)×
2+X
X
⊢<
(
)×
,
30 31|
,≡
czy skonkatenowane argumenty są identyczne z tym (0/1) ?;źródło
Montaż x86, 42 bajtów
Pobiera dane wejściowe
ECX
iEDX
rejestruje. Pamiętaj, żeECX
musi być większa niżEDX
.Dane wyjściowe do
EAX
, gdzie0
oznacza, że gra jest nadal włączona, co1
oznacza zakończenie gry i-1
(inaczejFFFFFFFF
) nieprawidłowy wynik.Lub bardziej czytelny w składni Intel:
Ciekawostka: ta funkcja prawie spełnia zasady konwencji wywołującej C dotyczące rejestrów, które należy zachować, z wyjątkiem tego, że musiałem spychać,
EBX
aby zaoszczędzić trochę bajtów na zużyciu stosu.Opcjonalne (nieuwzględnione w liczbie bajtów)
Dodając następujące 6 bajtów bezpośrednio przed rozpoczęciem powyższego kodu, możesz przekazać
ECX
iEDX
uporządkować:Które są następujące w czytelnej składni Intel:
źródło
Retina 0.8.2 , 92 bajty
Wypróbuj online! Link zawiera przypadki testowe. Pobiera dane wejściowe w kolejności rosnącej. Objaśnienie: Pierwszy etap po prostu konwertuje z dziesiętnego na jednoargumentowy, aby można było poprawnie porównać wyniki. Drugi etap zawiera sześć alternatywnych wzorców, pogrupowanych w trzy grupy, dzięki czemu można wyprowadzić trzy różne wartości, które są
10
wygrane,01
trwałe i00
nielegalne. Wzory to:źródło
APL (Dyalog Unicode) ,
3332 bajty SBCSWypróbuj online!
w: para w kolejności malejącej
out: 2 = w toku, 1 = zakończony, 0 = nieprawidłowy
testy skradzione z odpowiedzi Adáma
źródło
Bash 4+,
97899188 bajtówZałóżmy, że dane wejściowe rosną. Zastosowane koncepcje z odpowiedzi VDM-SL . Wypróbuj online
z==0
- gra w tokuz==1
- gra zakończonaz==2
- nieważna-8 po oczyszczeniu wspornika z
(( & | ))
warunków+2 naprawianie błędu, dzięki Kevin Cruijssen
-3 ulepszenia logiki Kevin Cruijssen
źródło
1
zamiast2
za0 30
. Twoja 97-bajtowa wersja działała poprawnie, więc jeśli nie możesz jej naprawić, zawsze możesz przywrócić. Zaopiniowano tę wersję 97. :)29 30
:( powinien być „zakończony”i>29
powinno to byćj>29
w drugiej trójce, aby to naprawić.