Вдохновленный этим вопросом от наших друзей- конкурентов на Code Review.
Определения
Супер массив представляет собой массив , где каждый новый элемент в массиве больше , чем сумма всех предыдущих элементов. {2, 3, 6, 13}
это супер массив, потому что
3 > 2
6 > 3 + 2 (5)
13 > 6 + 3 + 2 (11)
{2, 3, 5, 11}
это не супер массив, потому что
3 > 2
5 == 3 + 2
11 > 5 + 3 + 2
Массив пупер представляет собой массив , где каждый новый элемент в массиве больше , чем произведение всех предыдущих элементов. {2, 3, 7, 43, 1856}
это супер-массив, но это также двойной массив, так как
3 > 2
7 > 3 * 2 (6)
43 > 7 * 3 * 2 (42)
1856 > 43 * 7 * 3 * 2 (1806)
Соревнование
Напишите функцию или программу, которая принимает массив в качестве входных данных в вашем родном формате списка языков и определяет, насколько супер массив. При желании вы также можете ввести длину массива (для таких языков, как C / C ++). Кроме того , можно предположить , что все номера в списке будут целые числа больше 0. Если это супер массив, вы должны напечатать It's a super array!
Если это супер пупер массив, вы должны напечатать It's a super duper array!
Это возможно также массив быть duper- без супер. Например, {1, 2, 3}
в этом случае вы должны напечатать. It's a duper array!
Если массив не является ни super, ни duper, вы можете вывести ложное значение.
Как обычно, это кодовый гольф, поэтому применяются стандартные лазейки, и выигрывает самый короткий ответ в байтах.
{1, 2, 3}
массива?2 * 1
равнялся3
в моей голове.super[space][space]array
позволено.Ответы:
Желе ,
47454̷4̷ 42 байтаЭто печатает пустую строку (ложь) для массивов, которые не являются ни супер, ни пупер. Попробуйте онлайн!
Как это работает
источник
JavaScript (ES6),
111110 байтСохраненный байт благодаря @ETHproductions !
объяснение
Принимает массив чисел, возвращает строку или число
0
для false.Тест
Показать фрагмент кода
источник
s+=s&&n>s&&n,d*=d&&n>d&&n
s
должен быть сделан таким образом, потому что он должен быть установлен вfalse
ifn>s
, ноd*false
имеет тот же эффект, что и один работает. Благодарность!Джава,
183182 байтаЯ сделал следующие предположения:
""
является ложным значением.Если что-то из этого не так, пожалуйста, скажите мне.
Во всяком случае, я не могу избавиться от ощущения, что я мог переборщить с количеством переменных.
Редактировать: удалось сохранить байт, благодаря функции @UndefinedFunction
источник
boolean s=true
наboolean s=1<2
?MATL , 66 байт
Использует текущий выпуск (10.0.3) , который является более ранним, чем этот вызов.
Ввод от стандартного ввода. Если не супер или пупер, вывод пуст (что неверно).
РЕДАКТИРОВАТЬ (7 апреля 2016 г.) : из-за изменений в версии 16.0.0 языка,
5L
и6L
должны быть заменены на3L
и4L
соответственно. Ссылка на онлайн-компилятор включает эти модификации.Попробуйте онлайн !
объяснение
источник
С ++ 14,
178, ..., 161157 байтНе могу придумать способ сделать его короче.Кажется, всегда есть место для улучшения!Обновление 1 : я полностью за безопасный код, но использование необработанного массива и его размера в качестве аргументов функции на 9 байт короче, чем использование вектора :(
Обновление 2: теперь возвращает пустую строку как ложное значение стоимостью 8 байт.
Обновление 3: назад к 165 байтам, благодаря комментарию CompuChip.
Обновление 4: один комментарий от CompuChip, еще 4 байта.
Обновление 5: использование
auto
вместоstring
другого предложения от CompuChip сбрасывает еще 4 байта кода.Развернутая полная программа с тестовыми примерами:
Выход:
источник
It's a array!
верна ( доказательство ) в соответствии с нашим определением на Мета .if ... >=
сравнение длины : я думаю, чтоe=r>s?e:0
это эквивалентноif(r<=s)e=0
.for(s=p=*a;--n;s+=r,p*=r)r=*++a
работать?i
C, 150 байтов
Каждый вход завершается символом
0
. Основной тест:Бонус, если нам разрешен более компактный формат вывода, мы можем сократить его до 107 байт :
В этом случае
Z
возвращаемся3
для superperper,2
для super,1
для duper и0
ни для кого.источник
Pyth -
5452 байтаЧасть форматирования строки, вероятно, может быть в гольфе, но мне нравится метод супер-пупер тестирования.
Тестовый пакет .
источник
c2"superduper"
можно поиграть в гольф+R"uper""sd"
lang-pyth
не существует.Питон 3, 127
Сохранено 5 байтов благодаря FryAmTheEggman.
Довольно базовое решение сейчас, ничего особенного. Просто запустите итоговую сумму и сумму и проверьте каждый элемент.
Вот контрольные примеры на случай, если кто-то еще захочет побить мой счет.
источник
AWK - 140 байт
Для тех, кто не знает AWK, записи автоматически анализируются в строки на основе переменной,
RS
а строки автоматически анализируются в поля на основе переменнойFS
. Также неназначенными переменными являются "", которые при добавлении в # действуют как 0.BEGIN
Раздел вызывается ровно один раз, перед тем как любые записи / поля анализируются. Остальная часть языка довольно C-подобна с каждым соответствующим блоком кода, применяемым к каждой записи. См. Http://www.gnu.org/software/gawk/manual/gawk.html#Getting-Started для получения дополнительной информации.Пример выполнения, где
'code'
указано выше:echo 1 2 6 | 'code'
Можно также поместить массив в файл с именем Filename и запустить как:
'code' Filename
Если код запускается часто, его можно поместить в исполняемый файл скрипта. Это удалит вложение,
' '
иawk
команда будет помещена вверху файла как:#!/bin/awk -f
источник
It's a array!
для массивов, которые не являются ни супер, ни duper, который является истинной строкой согласно нашему определению на Meta .echo 1 2 6 | <the above code>
PHP,
144...113112 байтОбъяснение:
Без глобальных регистров это было бы (118 байт):
$a
(выход преобразования массива в строкуArray
)$p
1, поэтому повышение стоимости продукта обходится дешевле.источник
$a
. Вам не нужно беспокоиться об уведомлениях и прочем - просто игнорируйте их на этом сайте.$argv[1]
это хорошая альтернатива. Тем не менее, эта проблема очень расплывчата в форматах ввода и вывода. Но вы можете быть наказаны за другие проблемы с этим подходом. И жесткое кодирование ввода на самом деле не приемлемо, хотя есть некоторые исключения, позволяющие это сделать. Я знаю, что чтение ввода очень дорого в PHP, поэтому я задал похожий вопрос на мета об этом .register_globals
, но вместо этого я напишу будущие гольфы как функцию. Почему было отклонено short_closures ?R , 115 байт
Попробуйте онлайн!
Ложное значение:
It's a array!
Ничего особенного, за исключением использованияsapply
в списке функций.источник
Scala, 172 байта
Ungolfed (хотя на самом деле не так много работы, чтобы сделать это):
источник
Haskell, 136 байт
f
является обязательной функцией. Обратите внимание, что пустая сумма равна 0, а пустой продукт равен 1, поэтому не[0]
является ни супер, ни пупер.s
захватывает общую структуру тестирования супер или дупер, принимая произвольный операторo
и произвольный нейтральный элементt
.foldr
Отслеживает кортежей ,(s,b)
гдеs
является результатом цепочки все видели элементы с операторомo
иb
говорит ли, для каждого элемента посмотрел на до сих пор, этот элемент был больше , чем ранее вычисленной сумма / продукт.Результат не очень удачный, и я был бы признателен, если бы кто-то предложил лучшую идею!
Чуть более читаемая версия:
источник
05AB1E ,
5351 байтПопробуйте онлайн или проверьте все контрольные примеры .
Объяснение:
Смотрите здесь для объяснения того, как
.•dwā•
«пупер» и каꄦÈ!
«массив!».источник
Желе , 37 байт
Попробуйте онлайн!
Полная программа.
Я понял
Z…P
идею из старого ответа Денниса.источник