Я придумал ряд цифр на днях и решил проверить, что это за номер OEIS. К моему большому удивлению, последовательность, по-видимому, отсутствует в базе данных OEIS, поэтому я решил назвать эту последовательность после себя (обратите внимание, что кто-то, кто намного умнее меня, возможно, уже придумал это, и если кто-то найдет Фактическое название этой последовательности, пожалуйста, прокомментируйте, и я изменю название вопроса). Так как я не мог найти где - нибудь последовательность, я решил назвать его в честь себя, следовательно , «Грифон номера». РЕДАКТИРОВАТЬ: Спасибо @Surb за внимание к тому факту, что эта последовательность равна последовательности OEIS A053696 - 1.
Число Gryphon - это число вида , где и являются целыми числами, большими или равными двум, а последовательность Gryphon представляет собой набор всех чисел Gryphon в порядке возрастания. Если существует несколько способов формирования числа Gryphon (первый пример - , который равен и ), число учитывается только один раз в последовательности. Первые несколько чисел Gryphon: .
Твое задание:
Напишите программу или функцию, которая получает целое число качестве входных данных и выводит номер го грифона.
Входные данные:
Целое число от 0 до 10000 (включительно). Вы можете рассматривать последовательность как 0-индексированную или 1-индексированную, в зависимости от того, что вы предпочитаете. Пожалуйста, укажите, какую систему индексации вы используете в своем ответе, чтобы избежать путаницы.
Выход:
Номер Грифон, соответствующий вход.
Тестовые случаи:
Пожалуйста, обратите внимание, что это предполагает, что последовательность 0-индексирована. Если ваша программа использует последовательность с 1 индексом, не забудьте увеличить все введенные числа.
Input: Output:
0 ---> 6
3 ---> 20
4 ---> 30
10 ---> 84
99 ---> 4692
9999 --> 87525380
Подсчет очков:
Это код-гольф , поэтому выигрывает самая низкая оценка в байтах.
Ответы:
Желе , 9 байт
Полная программа, которая читает (1-индексированное) целое число из STDIN и печатает результат.
Попробуйте онлайн!
Как?
Число Gryphon - это число, которое может быть выражено на основе меньше, чем она сама, так что все цифры являются единицами, кроме наименее значимого, что является нулем. Например:
Эта программа берет
n
, затем запускаетv=0
и проверяет это свойство и увеличиваетv
его до тех пор, пока не найдетn
такие числа, а затем выводит окончательное значение.Чтобы проверить базу−1 . (Обратите внимание, что
b
число, оно вычитает по одному из каждой цифры, конвертирует из базовогоv
и затем проверяет, равен ли результатb
меньше, чемv
)источник
MATL ,
1613 байт1 на основе.
Попробуйте онлайн!
объяснение
Рассмотрим ввод
n = 3
в качестве примера.Матрица, полученная на шаге (*), содержит, возможно, повторяющиеся числа грифонов. В частности,
n
в первом ряду он содержит разные числа грифонов. Это не обязательно самыеn
маленькие цифры Gryphon. Однако левая нижняя запись2+2^+···+2^n
превышает правую верхнюю записьn+n^2
, и, таким образом, все числа в последнем ряду превышают числа в первом ряду. Это подразумевает, что расширение матрицы вправо или вниз не приведет к тому, что число грифонов будет меньше, чем самые низкиеn
числа в матрице. Следовательно, матрица гарантированно содержитn
наименьшие числа грифонов. Следовательно, егоn
вторым самым низким уникальным элементом является решение.источник
Haskell , 53 байта
Попробуйте онлайн!
Мы генерируем бесконечный список всехn ≥6 такой, что поиск методом грубой силы показывает, что это так.
Ответом является индексная функция с нулевым индексом в этом списке, обозначаемая в Haskell как
(list!!)
.Почему
a^y+n==n*a+a
правильно?Из формулы для суммирования геометрической прогрессии :
имеем:( α , ρ , ν) = ( а , а , х ) : n = ∑я =1Иксaя= а ( 1 - аИкс)1 - а= а - ах +11 - а,
Переставляя уравнение, мы получаемn ( 1 - a ) = a - aх + 1 .
Переставив это еще дальше, мы получимax+1+n=na+a .
Подстановкаy=x+1 в поиске методом грубой силы дает окончательное выражение
a^y+n=n*a+a
.n
Достаточно ли поиска ?источник
Python 3.8 (Pre-release),
9892897871 bytesTry it online!
0-indexed. Integer division must be used here because f(10000) overflows floats.
Generates all Gryphon numbers where2≤a≤n+2 and 2≤x≤n+2 , sorts them, and selects the n th element.
-6 bytes thanks to Jonathan Allan
-3 bytes thanks to ArBo. I almost did as he suggested myself, but tried to use
{*(...)}
which didn't save space anyway-11 bytes thanks to mathmandan
-7 bytes thanks to ArBo
Mathematical Proof of Validity
Using 0-indexing for the sake of this proof, even though mathematical convention is 1-indexed.
источник
f=
is unnecessary, andlambda n,r=range:
will save 4 more (like so)set()
and replace it by a set comprehension to get to 89f=
from the TIO link by putting it in the header, as in the TIO of my 89-byterJ,
3532 bytes-3 bytes thanks to FrownyFrog
Try it online!
Explanation is same as original. Simply uses explicit form to save bytes be removing the multiple
@
.original answer, tacit, with explanation: 35 bytes
Try it online!
Similar to Luis Mendo's approach, we create a "power table" (like a times table) with top row
2 3 ... n
and left column1 2 ... n
resulting in:^~/ >:
creates the table, and1+i.@+&2
creates the1... n
sequences, and we add 2 (+&2
) to the input to ensure we always have enough elements to create a table even for 0 or 1 inputs.After we have the table above the solution is trivial. We just scan sum the rows
+/\
, and then remove the first row, flatten, take unique, and sort/:~@~.@,@}.
. Finally{
uses the original input to index into that result, producing the answer.источник
Gaia, 18 bytes
Try it online!
1-based index.
This is a rather sad answer with a long nose:
)┅:
It probably wishes it could be golfed down further.Copies the algorithm given by Luis Mendo's answer
источник
R,
6562 bytes-1 byte thanks to Giuseppe.
Try it online!
1-indexed.
Generates a matrix of all values of the formai , takes the cumulative sum, removes the first row (0s) and the second row (entries corresponding to x=1 ), then takes the unique sorted values.
Note that
sort(unique(...))
would not work, asunique
would give unique rows of the matrix, and not unique entries. Usingunique(sort(...))
works becausesort
converts to vector.источник
t
anddiffinv
is 64 bytesdiffinv
. I golfed down another 2 bytes by replacing[-1:-2,]
with[3:n,]
.JavaScript (ES7), 76 bytes
1-indexed.
Try it online!
JavaScript (ES7), 89 bytes
1-indexed.
Try it online!
источник
Wolfram Language (Mathematica), 51 bytes
Try it online!
1-indexed
-8 bytes from @attinat
источник
Charcoal, 36 bytes
Try it online! Link is to verbose version of code. 1-indexed. Uses Luis Mendo's algorithm. Explanation:
Inputn .
Create ann -by-n grid of Gryphon numbers and push each one to the predefined list.
Calculate the Gryphon number using the fact that∑x1ai=ax+1−aa−1 .
Remove the lowestn−1 Gryphon numbers.
Print the lowest remaining Gryphon number.
источник
Japt , 23 байта
Дорогой Джебус! Либо я действительно забыл, как играть в гольф, либо выпивка наконец берет свое!
Не прямой путь решения Джонатана, но очень вдохновленный его наблюдением.
Попытайся
источник
05AB1E , 12 байтов
0 индексированные
Попробуйте онлайн или проверьте первыйN предметы .
Объяснение:
источник