Итак, вчера был 2-й рождественский день, и мы с бабушкой и дедушкой играли в «sjoelen», как ее называют в Нидерландах. Ко мне подошел внутренний программист, но как только я получил ответ, я его потерял. Я хочу, чтобы ты переделал это.
Правила:
У вас есть деревянная доска, sjoelbak , с 4 коробками, каждая со своим номером. Когда schijf (объект, похожий на шайбу) входит в одну из коробок, вы получаете очки над этой коробкой.
Когда во всех 4-х коробках есть schijf , вы не получаете 10, но вы получаете 20 очков.
Пример:
Слева направо: 3 5 4 3
Каждая коробка имеет не менее 3 шивенов (множественное число по Шифу ), так что 20 * 3 = 60 баллов.
Результирующие значения: 0 2 1 0
0 * 2 + 2 * 3 + 1 * 4 + 0 * 1 = 10 баллов.
Что составляет в общей сложности 60 + 10 = 70 баллов.
Ввод:
количество schijven слева направо, то есть "4 5 4 5", [4,5,4,5], "4 \ n5 \ n4 \ n5", что угодно.
Вывод:
количество очков, т.е. 84, как вывод, переменная, возврат или вершина стека, как вам угодно.
Как и в каждом коде гольф, вы не можете использовать внешние скрипты и код с наименьшим количеством байтов выигрывает.
PS: Как вы уже могли заметить, я голландец. Не стесняйтесь редактировать возможные грамматические ошибки.
источник
Ответы:
CJam,
23 2120 байтЯ мог бы сыграть пару байтов от этого.
Ввод как
Вывод - оценка
Как это работает
Алгоритм
[1 2 3 4]
.1 + 2 + 3 + 4 = 10
я просто добавляю минимальный общий schijven к каждому, чтобы получить эффект бонусного10
счета.1
, затем я умножаю второй2
и добавляю его к первому. В следующей итерации я получаю текущую сумму и счет3
schijven. И так далее.Попробуйте онлайн здесь
источник
Пит, 240 (30 * 8) кодов, 138, содержащих фактический код
Кодел 10, для лучшей видимости
Тестовые примеры:
Дисплей потока:
Использование моих собственных сокращений для облегчения работы и компактного отображения. Он показывает общий ход программы, а не точное расположение кодов.
Полное объяснение:
Сохраните изображение и попробуйте его в этом онлайн-переводчике Piet:
PietDev онлайн переводчик Piet
источник
APL (Dyalog Classic) ,
161312 байт-3 благодаря @ Adám
Попробуйте онлайн!
⌽+⌊/
обратный (arg) + мин (arg)1⌽
поверните 1 влево+\
частичные суммы+/
суммаисточник
Mathematica,
38322320 байт(С помощью swish )
Используйте, прикрепив ввод до конца:
Альтернативный (36 байт):
источник
Tr[(# + Min@#) {2, 3, 4, 1}] &
20*Min@#
, вы можете избавиться от него, заменив минус на плюс, потому что удобно2+3+4+1==10
.R,
4140 символовИспользование:
В последнем примере,
a
является вектор3 5 4 3
,a-b
является0 2 1 0
, который мы многократно с вектор ,2 3 4 1
таким образом , давая ,0 6 4 0
который мы добавим с5*b
давая15 21 19 15
(5*b
перерабатывается для каждого члена добавленного вектора, следовательно , эффективно добавляя4*5*b
), который мы , наконец , подвести, таким образом давая70
.источник
b=min(a<-scan());sum(5*b+(a-b)*c(2:4,1))
JavaScript (ES6),
9347 байтИспользование:
s(1, 2, 3, 4)
Как это работает: функция ищет наименьшее число в аргументах, умножает его на
10
(не с20
) и добавляет остаток от оценки. Нет необходимости умножать на20
и вычитать части из счета, чтобы продолжить вычисление.Спасибо edc65 за улучшение обмена!
Un-golfed:
источник
S=(a,b,c,d)=>10*Math.min(a,b,c,d)+a*2+b*3+c*4+d
Пиф , 15
Ввод следует вводить через STDIN через запятую, например
При этом используется тот же прием, что и во многих других решениях, - добавление минимума к каждому элементу для учета бонуса. Минимум
hSQ
в приведенном выше коде. Чтобы учесть умножение на 2, 3, 4 и 1, я отображаю d над списком [0,1,2,3] и умножаю (dl) -й элемент ввода на d + 1. Таким образом, -1-й элемент умножается на 1, ноль на 2, первый на 3, а второй на 4. Затем я суммирую.источник
J,
2322 знакаПример:
Попробуй это здесь.
(23 длинного явное определение функции:
v=:3 :'+/+/\.3|.y+<./y'
)источник
+/2 3 4 1*(+<./)
?2 3 4 1+/ .×]+<./
?Страус v0.1.0 ,
4841 символов (слишком длинный)Это просто то же самое, что и старая версия ниже, за исключением того, что вместо
@
вращения целого стека)\+
(вместо правильных) используется.Старая версия:
На самом деле я обнаружил две ошибки в своем недавно реализованном языке, аннотированные в описании ниже. (Язык в настоящее время очень, очень похож на Golfscript, поэтому, если вы знаете Golfscript, его должно быть довольно легко читать.
Ожидает ввод в виде массива на STDIN, потому что я ручка и забыла реализовать ввод / вывод в v0.1.0.
Решение реальной проблемы в Страусе приятно, потому что оно показывает мне, сколько еще нужно добавить к языку: D
источник
Python 2, 43 байта
Вдохновленный ответом @ user2487951.
источник
Jagl Alpha 1,2 - 20 байт
Ввод в формате stdin
(3 4 5 6)
, вывод в стеке:Жду ответа от оригинального постера о выходном формате. Поскольку input указан как «что угодно» , я предполагаю, что мой ввод может быть массивом в верхней части стека.Теперь принимает входные данные на стандартный ввод.Объяснение:
источник
Хаскелл, 40
вместо удаления минимального числа из остальных и добавления дополнительных
20
s, это добавляет дополнительное10
для минимального числа.источник
..4*c+d..
Матлаб, 27
Мне потребовалось время, чтобы понять, что это одиночная игра. С помощью анонимной функции
который вызывается с вектором строки
источник
f=
на 2 байта меньше.ans
Вместо этого функция сохраняется в переменной.[2:4,1]
будет сбрить 2 байта, если входной сигнал является вектором столбца.Java, 84 байта
У меня есть идея, что дальше можно играть в гольф, но пока это все.
Вызов с
A(new int[]{3,5,4,3})
выходом возвращается как int (потому чтоSystem.out.println()
будет удвоить байты)Ungolfed
источник
GolfScript, 22 байта
Читает ввод из стандартного ввода в формате
[3 5 4 3]
. Записывает вывод в стандартный вывод. (Если разрешено использование входных данных в качестве массива в стеке, ведущий~
может быть опущен в общей сложности 21 байт.)При этом используется несколько иная стратегия, чем в решениях CJam / Pyth / etc: сначала я строю массив из 2 копий первого входного значения, 3 второго, 4 третьего и одного четвертого. Затем я сортирую этот массив, вытаскиваю наименьший элемент, умножаю его на 11 и суммирую с другими элементами.
источник
Python 2, 51
Скучный, но короткий:
Более питонический:
источник
Юлия,
4835 персонажейfunction p(m);sum([2 3 4 1].*m)+10minimum(m);end
в компактной форме задания:
Пример:
источник
Javascript, 97 байт
источник
Javascript, ES6, 57
Я хотел посмотреть, как получится рекурсия, и хотя это определенно не самый короткий ответ, я чувствовал, что все получилось хорошо.
a*b*c*d
: Он принимает входные значения и находит произведение всех их, и оценивает его как логическое выражение для встроенного оператора if. Это вернет false, если одно или несколько значений равно 0, и true для любого другого значения.20+f(--a,--b,--c,--d)
: Если он возвращает true, функция возвращает 20 (для набора по Шийвену ) плюс рекурсивный вызов функции для всех значений минус одно (Для удаления этого набора по Шийвену ). Таким образом, он будет рекурсивно проходить по циклу, пока хотя бы один из блоков не станет пустым.a*2+b*3+c*4+d
После того, как хотя бы одно поле будет пустым, будет запущена остальная часть встроенного оператора if. Он просто возвращает баллы за оставшийся счижвен в коробках.Таким образом, в конце все 20 наборов точек Шийвена , а оставшиеся точки суммируются и возвращаются из функции, что дает ответ.
источник
Haskell 42 символа
источник
f l@[a,b,c,d]=10*minimum l+2*a+3*b+4*c+d
HPPPL (язык программирования HP Prime),
5857 байтЗнак * между 10 и мин не обязателен, поэтому я удалил его.
HPPPL - это язык программирования для калькулятора цветных графиков HP Prime / CAS.
Пример работы:
Если это не обязательно программа, то она реализуется в
4039 байтов однострочника:источник
Staq, 72 символа
Пример выполнения:
Staq имеет два стека: один активный, другой пассивный. Команда
|
переключает активный стек в пассивный и наоборот.Все, что находится между фигурными скобками, определяет функцию, первая буква после открывающей скобки - это имя функции, остальная часть до закрывающей скобки - это сама функция. Возможны переопределение функций, рекурсии и вложенных функций.
{aii}
бы определить функцию а , что бы приращение вершины стека дважды. Каждый следующий экземплярa
в коде будет заменен наii
.Комментарии внутри программ Staq:
&
добавляет ноль на вершине стека,[
указывает указателю перейти к соответствующему,]
если вершина стека равна нулю,x
удаляет самое верхнее значение в стеке. Таким образом, комментарии могут быть записаны в код в виде&[here is a comment]x
Объяснение (также исполняемое):
https://esolangs.org/wiki/Staq
Программа использует один стек (изначально активный), чтобы вычислить 2a + 3b + 4c + d, и второй стек (первоначально пассивный), чтобы вычислить в 10 раз меньшее из входных значений. Затем оба результата суммируются и отображаются.
источник
PowerShell для Windows ,
4847 байт-1 байт благодаря маззи
Попробуйте онлайн!
источник
Powershell for Windows
когда мы используемsort
псевдоним? см мета