tło
Jest późne piątkowe popołudnie, a ty i twoi przyjaciele decydujecie się pójść do pubu później tego wieczoru, ale przed pójściem do pubu uważasz, że powinieneś wypić kilka napojów. Jednak sprawy szybko się nasilają; twój przyjaciel Shaddock Pamplemousse wygrał na loterii na początku tego tygodnia i postanowił przynieść skrzynki na skrzynki z różnymi napojami. Bezpieczeństwo w pubie jest bardzo surowe, a jeśli nadmiernie się zużyjesz przed próbą wejścia do lokalu, nie możesz wejść do środka. Wszyscy jesteście programistami - więc myślicie, że i tak wszystko się ułoży.
Wyzwanie
Musisz zaprogramować licznik alkoholu, który wyświetla prawda / fałsz, jeśli przekroczysz / osiągniesz rozsądny limit w pubie. Przed zejściem do pubu podajesz ilość i rodzaj napoju, które zjadłeś wieczorem, o stdin
którym czyta Twój program pomiarowy. Jeśli to prawda, jesteś powyżej limitu pubu i zostajesz w domu. Jeśli spowoduje to fałsz, możesz iść.
Wkład
Jedna liczba całkowita większa niż 0
reprezentuje masę ciała w kilogramach, po której następuje nowa linia. Po tym wprowadzeniu następuje seria jednocyfrowych kwot i napojów w następującej formie:
<amount><amount type>o<beverage type>
W przypadku jednej butelki piwa będzie to wyglądać następująco:
1Bob
Każde wejście jest oddzielone spacją.
Specyfikacja wejściowa
Każdy napój ma jednostkę odpowiadającą powodowanemu przez niego uderzeniu. Jeśli spożyjesz więcej jednostek niż twoja waga podzielona przez dwa, pub nie jest już opcją.
(Może to odzwierciedlać rzeczywistość)
Poniżej przedstawiono ważne napoje i odpowiadające im jednostki alkoholowe napoju:
Piwo:
b
,1
jednostkaNapój energetyczny:
e
,0
jednostkiGorący sos:
h
,2
jednostki (silny rzeczy)Sok (z owoców organicznych itp)
j
,0
zespołyPokoi:
r
,6
jednostkiTequila:
t
,7
jednostkiWódka:
v
,6
jednostkiWino:
w
,3
jednostki
Istnieją różne rodzaje kwot:
Butelka:
B
Skrzynia:
C
Szkło:
G
Beczka:
K
Łyk:
S
Każdy rodzaj ilości ma mnożnik, który zwielokrotnia zawarte w nim jednostki alkoholowe napoju:
Butelka:
3
Skrzynia:
25
Szkło:
2
Beczka:
50
Łyk:
0.2
Wydajność
Twój program powinien wyjście truthy / falsy się stdout
, jeżeli kwota spożywana jest powyżej / poniżej masy ciała podzielona przez 2. Jeżeli kwota spożywana jest równe wagi podzielone przez 2, należy falsy wyjściowego.
Próbki możliwych danych wejściowych i wyjściowych
Wkład
70
1Bob 3Soj
Wydajność
False
Wkład
2
1Cov
Wydajność
1
Wkład
50
1Cob
Wydajność
0
Wkład
100
4Gow 1Koe 1Bov 1Gow 2Sot
Wydajność
True
Najkrótszy program w bajtach wygrywa!
źródło
o
jest to znak formatu, chociaż nie zostało to dokładnie powiedziane. Powinieneś to wyjaśnić (jako
również odnosi się do oliwy z oliwek). 2. Co produkujemy, jeśli jesteśmy dokładnie na granicy? czy to nie ma znaczenia?43Gow
?Odpowiedzi:
CJam, 53 bajty
Wypróbuj online w interpretatorze CJam .
Jak to działa
źródło
Python 3, 131
Teraz gramy w węże!
Oszczędność 18 bajtów dzięki shebang.
Zaoszczędź 4 dodatkowe bajty dzięki DSM.
Zaoszczędzono wiele bajtów dzięki tzaman.
Ogromne podziękowania dla tzamana za jego genialną sztuczkę nadużywania
.find()
powrotu,-1
jeśli nie znajdzie on wartości.Obecnie zakłada się, że ten format napoju jest dokładnie taki, jak podano w wyzwaniu, np. Tylko 1 cyfra każdego napoju.
źródło
m
i zamieńm[p[-1]]
bit na[3,25,2,50,.2]['BCGKS'.find(p[-1])]
, i to samo nad
. Doszedłem do 168 z tymi zmianami w twoim kodzie.Minkolang 0.11 , 59 bajtów
Wypróbuj tutaj.
Wyjaśnienie
źródło
CJam, 54 bajty
Trochę dziwnie i prawdopodobnie nieoptymalnie, ale myślę, że to działa dobrze. Wypróbuj online .
Wyjaśnienie
Zauważ, że tablica liczbowa ma na końcu 2, co oznacza, że
Gho
brakujące w pierwszym ciągu znaków zostaną zamapowane na 2.źródło
CJam, 77
źródło
VBA, 251 bajtów
Format czytelny
Całkiem pewnie, że można grać w golfa. moja manipulacja
Mid(Right())
ciągiem wydaje się zbyt męcząca, ale uruchomienie tablicyStrReverse
powoduje, że jest ona dłuższa. Jeśli założymy, że wypijasz tylko 0–9 danego napoju na raz, możemy zaoszczędzić garść bajtówWeź dane jako jeden ciąg z wagą oddzieloną spacją, ponieważ
VBA
dawka nie obsługuje wprowadzania wielu liniiźródło
Rubin, 153 bajty
Muszę jakoś pozbyć się gsubów
źródło
JavaScript, 131
134139bajtówJest to pełny program i zasadniczo adaptacja mojej odpowiedzi PHP :
Odczytuje dwie wartości za pomocą
prompt
ialert
s wynikiem jako[true|false]
.Edycje
||0
zamiast deklarować napoje w0
jednostkach. Dzięki user81655 .prompt
w zmiennej i skracając inicjalizację. Dzięki Stefnotch .źródło
,e:0,j:0}[b[++i]]
na}[b[++i]]|0
.0
wartości. Cóż, nie myślałem o tym. Musiałem użyć||
zamiast operatora bitowego. Nadal 5 bajtów mniej. Dzięki.for(s=i=0,a=prompt(),b=prompt();
można zmienić na:for(c=prompt,b=c(a=c(s=i=0));
bash (+ bc + GNU sed),
200196194 bajtówźródło
JavaScript, 159 bajtów
Ponieważ Javascript wymaga biblioteki, aby uzyskać dostęp do STDIN, ten kod jest tylko funkcją, która akceptuje całość danych wejściowych, tj
b("100\n4Gow 1Koe 1Bov 1Gow 2Sot")
źródło
prompt()
jest powszechnie akceptowane jako alternatywa dla ważnegoSTDIN
w JavaScripcie .b=t=>(a={B:3,C:25,G:2,K:50,S:.2,b:1,h:2,w:3,r:6,v:6,t:7},t.split(/\W/).reduceRight((t,n,r)=>r?n[0]*a[n[1]]*a[n[3]]+t||t:t>n/2,0))
.Python 3, 157 bajtów
źródło
PHP, 163
169bajtówDane wyjściowe
1
lub nic, działa dla wszystkich przypadków testowych.Nadal zastanawiam się, co to za gorący sos , mając 2 jednostki .
Edycje
0
z0.2
.źródło
Keg , 165 bajtów (SBCS)
Wypróbuj online!
Wydaje mi się, że odpowiedź Keg nigdy nie była bardziej odpowiednia! To może być gra w golfa, ale nie sądzę, że może.
Wyjaśnił
źródło