Contexte
Il est tard vendredi après-midi et vous et vos amis décidez d'aller au pub plus tard dans la soirée, mais avant de vous rendre au pub, vous devriez prendre quelques boissons. Cependant, les choses dégénèrent rapidement; votre ami Shaddock Pamplemousse a remporté la loterie plus tôt cette semaine et a décidé d'apporter des caisses sur des caisses avec différentes boissons. La sécurité au pub est très stricte et si vous consommez trop avant d'essayer d'entrer dans les locaux, vous n'êtes pas autorisé à l'intérieur. Vous êtes tous des programmeurs, alors vous pensez que les choses vont bien se passer de toute façon.
Défi
Vous devez programmer un compteur d'alcool qui délivre la vérité / fausse si vous êtes au-dessus / en dessous de la limite de pub raisonnable. Avant de descendre au pub, vous entrez la quantité et le type de boisson que vous avez consommés au cours de la soirée à stdin
laquelle votre programme de mesure se lit. S'il sort vrai, vous êtes au-dessus de la limite de pub et restez à la maison. Si cela produit de la fausse, vous êtes prêt à partir.
Contribution
Un entier supérieur à celui 0
qui représente votre poids corporel en kilogrammes suivi d'une nouvelle ligne. Cette entrée est suivie d'une série de montants et de boissons à un chiffre sur le formulaire suivant:
<amount><amount type>o<beverage type>
Pour une bouteille de bière, cela ressemblera à:
1Bob
Chaque entrée est séparée par un espace.
Spécification d'entrée
Chaque boisson a une unité qui correspond à l'impact causé par elle. Si vous consommez plus d'unités que votre poids divisé par deux, le pub n'est plus une option.
(Cela peut refléter ou non la réalité)
Les boissons suivantes sont valides et les unités alcooliques correspondantes de la boisson:
Bière:
b
,1
unitéBoisson énergisante:
e
,0
unitésSauce chaude:
h
,2
unités (fortes choses)Juice (en fruits organiques , etc.):
j
,0
unitésChambres:
r
,6
unitésTequila:
t
,7
unitésVodka:
v
,6
unitésVin:
w
,3
unités
Il existe différents types de montants:
Bouteille:
B
Caisse:
C
Verre:
G
Tonnelet:
K
Siroter:
S
Chaque type de quantité a un multiplicateur qui multiplie les unités alcooliques de la boisson qu'il contient:
Bouteille:
3
Caisse:
25
Verre:
2
Tonnelet:
50
Siroter:
0.2
Sortie
Votre programme doit sortie truthy / falsy à stdout
si la quantité consommée est au- dessus / en dessous de votre poids corporel divisé par 2. Si la quantité consommée est égale à votre poids divisé par 2, vous devriez falsy de sortie.
Échantillons d'entrée et de sortie possibles
Contribution
70
1Bob 3Soj
Sortie
False
Contribution
2
1Cov
Sortie
1
Contribution
50
1Cob
Sortie
0
Contribution
100
4Gow 1Koe 1Bov 1Gow 2Sot
Sortie
True
Le programme le plus court en octets gagne!
la source
o
soit un caractère de format, bien que vous ne l'ayez pas dit spécifiquement. Vous devriez clarifier cela (comme celao
se réfère également à l'huile d'olive.) 2. Que produisons-nous si nous sommes exactement à la limite? ou ça n'a pas d'importance?43Gow
?Réponses:
CJam, 53 octets
Essayez-le en ligne dans l' interpréteur CJam .
Comment ça marche
la source
Python 3, 131
Nous jouons maintenant avec des serpents!
Enregistré 18 octets grâce à shebang.
Enregistré 4 octets supplémentaires grâce à DSM.
Beaucoup d'octets enregistrés grâce à tzaman.
Un grand merci à tzaman pour son astuce géniale d'abuser du
.find()
retour-1
s'il ne trouve pas de valeur.Actuellement, cela suppose que ce format de boisson est exactement la façon dont il est indiqué dans le défi, par exemple, seulement 1 chiffre de chaque boisson.
la source
m
et remplacez lem[p[-1]]
bit avec[3,25,2,50,.2]['BCGKS'.find(p[-1])]
, et la même chose avecd
. Je suis descendu à 168 avec ces modifications de votre code.Minkolang 0,11 , 59 octets
Essayez-le ici.
Explication
la source
CJam, 54 octets
Peu compliqué et probablement sous-optimal, mais je pense que cela fonctionne bien. Essayez-le en ligne .
Explication
Notez que le tableau numérique a 2 à la fin, ce qui signifie que
Gho
, qui manquent dans la première chaîne, sont mappés à 2.la source
CJam, 77
la source
VBA, 251 octets
Format lisible
Bien sûr, cela peut être joué au golf. ma manipulation de chaînes
Mid(Right())
semble excessivement verbeuse, mais l'exécution du tableau laStrReverse
rend plus longue. Si nous supposons que vous ne buvez que 0 à 9 boissons à la fois, nous pouvons économiser une poignée d'octetsPrendre l'entrée comme une chaîne avec un poids séparé par un espace car la
VBA
dose ne prend pas en charge l'entrée multi-lignesla source
Rubis, 153 octets
Je dois me débarrasser des gsubs en quelque sorte
la source
JavaScript, 131
134139octetsCeci est un programme complet et essentiellement une adaptation de ma réponse PHP :
Il lit deux valeurs en utilisant
prompt
etalert
s le résultat comme[true|false]
.Modifications
||0
au lieu de déclarer les boissons avec des0
unités. Merci à user81655 .prompt
dans une variable et en raccourcissant l'initialisation. Merci à Stefnotch .la source
,e:0,j:0}[b[++i]]
pour}[b[++i]]|0
.0
valeurs. Eh bien, je n'y ai pas pensé. J'ai dû utiliser à la||
place de l'opérateur au niveau du bit. Encore 5 octets de moins. Merci.for(s=i=0,a=prompt(),b=prompt();
peut être changé en:for(c=prompt,b=c(a=c(s=i=0));
bash (+ bc + GNU sed),
200196194 octetsla source
Javascript, 159 octets
Étant donné que Javascript nécessite une bibliothèque pour accéder à STDIN, ce code n'est qu'une fonction qui accepte l'intégralité de l'entrée, c'est-à-dire
b("100\n4Gow 1Koe 1Bov 1Gow 2Sot")
la source
prompt()
est généralement acceptée comme une alternative valable àSTDIN
en JavaScript .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 octets
la source
PHP, 163
169octetsSorties
1
ou rien, fonctionne pour tous les cas de test.Je me demande encore ce qu'est cette sauce piquante , ayant 2 unités .
Modifications
0
de0.2
.la source
Tonnelet , 165 octets (SBCS)
Essayez-le en ligne!
J'ai l'impression qu'une réponse Keg n'a jamais été aussi appropriée! Cela pourrait probablement être joué au golf, mais je ne pense pas que ce soit possible.
Expliqué
la source