Задний план
Поздний вечер пятницы, и вы и ваши друзья решите зайти в паб позже тем же вечером, но перед тем, как пойти в паб, вы полагаете, что вам следует выпить несколько напитков. Однако все быстро обостряется; Ваш друг Шеддок Памплемус выиграл в лотерею ранее на этой неделе и решил принести ящики на ящики с различными напитками. Безопасность в пабе очень строгая, и если вы чрезмерно потребляете, прежде чем пытаться войти в помещение, вам не разрешают войти внутрь. Вы все программисты - так что вы полагаете, что все равно получится великолепно.
Вызов
Вам нужно запрограммировать счетчик алкоголя, который выдает правду / ложь, если вы выше / ниже разумного лимита паба. Перед тем, как идти в паб, вы вводите количество и тип напитка, которые вы употребляли в течение вечера, до stdin
которого показывается ваша программа измерений. Если он показывает правдивость, вы превышаете лимит паба и остаетесь дома. Если он выдает ложные данные, вы можете идти.
вход
На одно целое число больше, чем 0
вес вашего тела в килограммах, за которым следует символ новой строки. За этим вводом следует серия однозначных количеств и напитков в следующей форме:
<amount><amount type>o<beverage type>
Для одной бутылки пива это будет выглядеть так:
1Bob
Каждый вход разделен пробелом.
Входная спецификация
У каждого напитка есть единица, которая соответствует воздействию, вызванному этим. Если вы потребляете больше единиц, чем ваш вес, деленный на два, паб больше не подходит.
(Это может или не может отражать реальность)
Ниже приведены действующие напитки и соответствующие алкогольные единицы напитка:
Пиво:
b
,1
блокЭнергетический напиток:
e
,0
единицыОстрый соус:
h
,2
единицы (сильный материал)Сок (из органических фруктов и т.д.):
j
,0
блокиРом:
r
,6
единицыТекила:
t
,7
единицыВодка:
v
,6
единицыВино:
w
,3
единицы
Существуют разные типы сумм:
Бутылка:
B
Crate:
C
Стекло:
G
Бочонок:
K
Глоток:
S
Каждый тип суммы имеет множитель, который умножает алкогольные единицы напитка, содержащиеся в нем:
Бутылка:
3
Crate:
25
Стекло:
2
Бочонок:
50
Глоток:
0.2
Выход
Ваша программа должна выводить достоверность / ложность,stdout
если потребляемая сумма выше / ниже веса вашего тела, деленного на 2. Если потребляемая сумма равна вашему весу, деленному на 2, вы должны выводить ложные значения.
Образцы возможного ввода и вывода
вход
70
1Bob 3Soj
Выход
False
вход
2
1Cov
Выход
1
вход
50
1Cob
Выход
0
вход
100
4Gow 1Koe 1Bov 1Gow 2Sot
Выход
True
Самая короткая программа в байтах побеждает!
источник
o
это символ формата, хотя вы не сказали это специально. Вы должны уточнить это (какo
относится и к оливковому маслу). 2. Что мы выводим, если находимся на пределе? или это не имеет значения?43Gow
?Ответы:
CJam, 53 байта
Попробуйте онлайн в интерпретаторе CJam .
Как это работает
источник
Питон 3, 131
Теперь мы играем в гольф со змеями!
Сохранено 18 байтов благодаря Shebang.
Сохранено еще 4 байта благодаря DSM.
Благодаря tzaman сэкономлено много байтов.
Большое спасибо Цаману за его блестящий трюк с злоупотреблением
.find()
возвращением,-1
если он не находит ценности.В настоящее время предполагается, что этот формат напитка точно соответствует заявленному в конкурсе, например, стоимость каждого напитка составляет всего 1 цифру.
источник
m
и заменитеm[p[-1]]
бит с[3,25,2,50,.2]['BCGKS'.find(p[-1])]
, и то же самое сd
. Я получил 168 с этими изменениями в вашем коде.Минколанг 0,11 , 59 байт
Попробуй это здесь.
объяснение
источник
CJam, 54 байта
Немного неудобно и, вероятно, неоптимально, но я думаю, что это работает хорошо. Попробуйте онлайн .
объяснение
Обратите внимание, что числовой массив имеет 2 в конце, это означает, что
Gho
, которые отсутствуют в первой строке, отображаются на 2.источник
CJam, 77
источник
VBA, 251 байт
Читаемый формат
Довольно уверен, что это может быть в гольф. Мое манипулирование строкой
Mid(Right())
кажется чрезмерно многословным, но выполнение массива, тем не менее,StrReverse
делает его длиннее. Если мы предполагаем, что вы пьете только 0-9 от любого конкретного напитка за раз, мы можем сэкономить несколько байтовВозьмите ввод как одну строку с весом, разделенным пробелом как
VBA
доза не поддерживает многострочный вводисточник
Рубин, 153 байта
Мне нужно как-то избавиться от gsubs
источник
JavaScript, 131
134139байтЭто полная программа и в основном адаптация моего ответа PHP :
Он читает два значения, используя
prompt
иalert
получая результат как[true|false]
.Правки
||0
вместо объявления напитков в0
единицах. Спасибо пользователю 81655 .prompt
в переменной и сокращения времени инициализации. Спасибо Стефночу .источник
,e:0,j:0}[b[++i]]
на}[b[++i]]|0
.0
. Ну, я не думал об этом. Пришлось использовать||
вместо побитового оператора. Еще на 5 байт меньше. Спасибо.for(s=i=0,a=prompt(),b=prompt();
можно изменить на:for(c=prompt,b=c(a=c(s=i=0));
bash (+ bc + GNU sed),
200196194 байтаисточник
Javascript, 159 байт
Так как Javascript требует библиотеки для доступа к STDIN, этот код является просто функцией, которая принимает весь ввод, т.е.
b("100\n4Gow 1Koe 1Bov 1Gow 2Sot")
источник
prompt()
обычно считается допустимой альтернативойSTDIN
в 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 байт
источник
PHP, 163
169байтВыходы
1
или ничего, работает для всех тестовых случаев.Мне все еще интересно, что это за острый соус , имея 2 единицы .
Правки
0
из0.2
.источник
Кег , 165 байт (SBCS)
Попробуйте онлайн!
Я чувствую, как будто ответ кеги никогда не был более подходящим! Это, вероятно, может быть в гольф, но я не думаю, что это может.
Разъяснения
источник