Этот вопрос был переработан, пожалуйста, перечитайте его.
Ultrafactorials
Ультрафакториалы - это последовательность чисел, которые можно сгенерировать с помощью следующей функции:
a(n) = n! ^ n!
Результирующие значения растут очень быстро. Примечание: это запись A046882 в OEIS. Также связаны гиперфакториалы, все еще довольно огромная, но немного меньшая последовательность: A002109
Твое задание
Ваша задача - реализовать эти цифры на вашем языке. Ваша программа рассчитает сумму всех ультрафакториалов от 0 до включительно n
.
вход
Ваша программа может принимать только один вход: число, которое напоминает последний a (n) ультрафакториал, добавляемый к сумме. Вход гарантированно будет положительным или 0.
Выход
Ваш вывод зависит только от вас, если где-то есть видимая сумма чисел.
правила
- Вы можете принять все целые числа, следовательно, целочисленный ввод, и использовать целочисленные циклы подсчета для получения некоторых результатов.
Контрольные примеры
Input: -1
Output: Any kind of error (because -1! is undefined), or no handling at all
Input: 0
Output: 1
Input: 1
Output: 2
Input: 2
Output: 6
Input: 3
Output: 46662
Вызов
Это код-гольф , поэтому выигрывает ответ с наименьшей длиной в байтах!
double
поддерживает тип данных языка (например, )?Ответы:
05AB1E , 5 байтов
Код:
Объяснение:
Использует кодировку CP-1252 . Попробуйте онлайн!
источник
L!DmO
также работает, если вы хотите снять бит "кодировки CP-1252".Mathematica, 19 байт
Извиняюсь за предельно понятный код;)
источник
Желе, 6 байт
Попробуйте онлайн!
источник
‘
, поэтомуR!*`S‘
сохраняется байт (я пошел за‘Ḷ!*`S
).R -
3430 байтвекторизация это хорошо
редактирование: сохранено 4 байта благодаря @MickyT
источник
x=factorial(0:scan());sum(x^x)
J,
1512 байтСохранено 3 байта благодаря милям!
объяснение
Контрольные примеры
источник
1#.i.^~@!@,]
сбривает еще несколько байтов.1#.
выполняет суммирование. Если это еще не совет, обязательно добавьте его!Perl 6 ,
413837 байт( Попробуйте онлайн. )
Объяснение:
for 0 .. $_
: Для каждого целого числа от 0 до ввода,[*](1 .. $_) xx 2
: рассчитать факториал дважды,[**] ...
: и возвести в степень два идентичных факториала.[+] ...
: Затем суммируйте все результаты цикла.Спасибо b2gills за 1 байт.
источник
([*] …)
можно записать как[*](…)
сохранение байтаЧеддер ,
4437 байтСпасибо козам за операторский! Я думаю, что было бы неплохо добавить факториал
Попробуйте онлайн
Ungolfed
объяснение
Примечание: немного устаревший, исправит
источник
MATL , 7 байт
Попробуйте онлайн!
объяснение
источник
PHP, 49 байт
INF
дляn>5
на 64-битной системе.для больших чисел, 70 байт
требует PHP для компиляции с
--with-gmp
источник
Рубин,
6466 байтДобавлены два символа для исправления ошибки «один за другим» (позже мы рассмотрим сокращение вызовов инъекции).
источник
a=(0..i)
вместоa=(1..i)
?+1
- лучшее решение.Pyth -
98 байтТестовый пакет .
источник
Haskell,
6756 байтОбратите внимание, что это представление было сделано до того, как были удалены правила, запрещающие встроенные функции.
Например:
источник
Python 2,
7372 байтаисточник
PARI / GP , 19 байт
источник
R, 42
35байтТеперь, когда я правильно прочитал вопрос, я добавил сумму.
Это требует наличия библиотеки gmp (арифметики с множественной точностью). Это позволяет обрабатывать большие числа. В противном случае что-либо более 5 возвращается
INF
.Это реализовано как безымянная функция, чтобы избежать того
as.character
, что потребуется для вывода в STDOUT черезcat
Пример запуска
f (9) работает довольно хорошо, но заполняет несколько страниц. Несколько сотен или около того и 2 017 528 цифр. f (10) убивает сеанс на моей машине.
источник
factorialZ(0:x)
. Есть ли конкретная причина не использоватьbase::factorial()
функцию?gmp::factorialZ
для обработки больших чисел.JavaScript (ES7), 38 байт
источник
Пайк, 11 байт
Попробуй это здесь!
Забавный факт: Pyke не имеет встроенного факториала, потому что
SB
всего 2 байта!источник
Haskell, 43 байта
Пример использования:
a 3
->46662
.b
вычисляет один ультрафакториал иa
суммирует все ультрафакториалы от0
доn
.источник
JavaScript (ES7), 44 байта
источник
Python 2, 82 байта
источник
range(input())
это, чтобы удалить несколько байтовЧудо , 33 байта
Использование:
объяснение
Создать инклюзивный диапазон от 0 до ввода.
Сопоставьте диапазон с функцией, которая: 1) вычисляет факториал товара, 2) сохраняет результат
f
и 3) вычисляетf^f
.Сумма.
источник
TI-Basic, 13 байтов
PS Вы можете заменить
sum(seq(
на,Σ(
если у вас более новая операционная система (без изменения размера).источник
Язык GameMaker, 97 байт
Основная функция (52 байта)
Функция f (45 байт)
источник
Ruby 2, 41 байт
источник
s
при передаче его в качестве начальногоt
значения для уменьшения / ввода.->n{((t=s=1)..n).map{|i|t+=(s*=i)**s};t}
или->n{t=s=1;(1..n).map{|i|t+=(s*=i)**s};t}
Dyalog APL, 10 байт
Как?
⍳
диапазон ввода0,
предшествует 0!*!
подать заявлениеx! ^ x!
+/
суммаисточник
*
и!
являются скалярными функциями, поэтому используйте массивы:+/*⍨!0,⍳⎕
или,(+/!*!)0,⍳
если вы действительно хотите поезд.Mathematica, 19 байт
Анонимная функция. Принимает число в качестве ввода и возвращает число в качестве вывода.
источник
Брахилог , 12 байт
Попробуйте онлайн!
объяснение
источник
C #, 79 байт с консольным выводом
C #, 64 байта в качестве возврата
источник
На самом деле
1110 байтКак это работает
источник
Ракетка 54 байта
Ungolfed:
Тестирование:
Выход:
источник