Показать последовательности OEIS


29

Энциклопедия целочисленных последовательностей (OEIS) представляет собой онлайновую базу данных целочисленных последовательностей. Он содержит около 280000 последовательностей математического интереса.

Примеры последовательностей:

  • натуральные числа ( A000027 )
  • простые числа ( A000040 )
  • Числа Фибоначчи ( A000045 )

Ваша задача - написать программу или функцию, которая отображает столько последовательностей OEIS, сколько вы можете, с исходным кодом не более 100 байтов . Ваша программа должна принять в качестве входных данных идентификатор последовательности (без добавления Aи нулей) и вывести 20 первых чисел в этой последовательности.

Вам не разрешается получать данные непосредственно с веб-сайта OEIS; все последовательности должны быть вычислены вашим кодом.

счет

Оценка - это количество последовательностей OEIS, которое может отобразить программа. Ответчики должны будут перечислить идентификаторы последовательностей, распознаваемых их программой.

пример

Вот правильный ответ в Java 8:

(int a) -> {
    for (int i = 0; i < 20; i++) {
        System.out.println(a==27?i+1:i*i); 
    }
};

Эта программа может отображать натуральные числа (A000027 - ввод 27) и квадраты (A000290 - ввод 290), таким образом, ее оценка равна 2.

Заметка

Пожалуйста, избегайте очистки всего сайта OEIS :-) вы можете скачать имена последовательностей (около 3 мегабайт) или значения последовательностей (около 9 мегабайт). Обратите внимание, что эта загрузка подпадает под действие Лицензионного соглашения с конечным пользователем OEIS .


Можем ли мы написать его так, чтобы он занял первые 0?
TrojanByAccident

2
Ого! Задача на OEIS!
Юнг Хван Мин

1
@TrojanByAccident, если ваша идея заключается в подключении к OEIS, это не разрешено в PPCG
Натан Меррилл

@NathanMerrill Я не был уверен, учитывается ли это в данном случае
TrojanByAccident

Разрешены ли функции?
xnor

Ответы:


25

CJam ( 2182 2780 3034 последовательностей)

{:ZA3#:Cb(40-z_!!:B-\+CbB)/)_mqmo:M+:NK{)[N0{N1$_*-@/M@+1$md@M@-}K*]<W%B{X0@{2$*+\}%}*ZB&=}%\C)<f*}

Это дает правильные ответы для инклюзивных диапазонов

  • [A040000, A040003], [A040005, A040008], [A040011, A040013], A040015, [A040019, A040022], A040024, [A040029, A040033], A040035, A040037, [A040041, A040043], A040048, A040052, [A040055, A040057], A040059, A040063, [A040071, A040074], A040077, A040080, [A040090, A040091], [A040093, A040094], A040097, A040099, [A040109, A040111], A040118, A040120, [A040131, A040135], A040137, A040139, [A040142, A040143], A040151, [A040155, A040157], A040166, A040168, [A040181, A040183],[A040185, A040968]
  • [A041006, A041011], [A041014, A042937]
  • A006983, [A011734, A011745], [A023975, A023976], [A025438, A025439], [A025443, A025444], A025466, A025469, [A034422, A034423], A034427, A034429, A034432, A034435, [A034437, A034439], A034441, A034443, A034445, A034447, [A034449, A034459], [A034461, A034462], [A034464, A034469], A034471, A034473, [A034475, A034477], [A034479, A034487], [A034489, A034490], [A034492, A034493], A034495, [A034497, A034512], [A034514, A034516], [A034518, A034523], [A034525, A034582], A036861, A047752, A052375, A055967, A061858, A065687, A066035, A067159, A067168, A070097, A070202, A070204, [A070205, A070206], A072325, A072769, A076142, A082998, A083344, A085974, A085982, A086007, A086015, A089458, A093392, A094382, A105517,A108322, A111855, A111859, [A111898, A111899], A112802, A122180, A129947, A137579, A159708, [A161277, A161280], A165766, A167263, A178780, A178798, A180472, A180601, A181340, A181735, A184946, A185037, A185203, [A185237, A185238], [A185245, A185246], A185255, A185264, A185284, A191928, A192541, A197629, A198255, A200214, A206499, A210632, A212619, [A217148, A217149], A217151, [A217155, A217156], A228953, A230533, A230686, A235044, A235358, A236265, A236417, A236460, A238403, [A243831, A243836], A248805, A250002, A256974, A260502, A264668, A276183, A277165, A280492,A280815

Эти A040???последовательности соответствуют цепных дробей внерациональных квадратных корней из , sqrt(2)чтобы sqrt(1000)(с зазорами , соответствующими те , которые появляются ранее в OEIS, но удобно , заполненных случайными последовательностями). Эти A041???последовательности соответствуют числитель и знаменатель цепной дроби дробей для внерациональных квадратных корней из , sqrt(6)чтобы sqrt(1000)(с промежутком , соответствующей sqrt(10), в A005667 and A005668). Другие разные последовательности имеют нули для своих первых двадцати значений.

Ответ переносит элементы двух моих предыдущих ответов в GolfScript:

Большое спасибо xnor за короткую замкнутую x -> x + round(sqrt(x))последовательность отображения формы , которая смещает значение в sqrt. Экономия по сравнению с моими предыдущими вычислениями (создание списка не квадратов и выбор по индексу) обеспечила достаточно, чтобы иметь нулевой запас для большинства индексов вне диапазона.


Может быть полезно, чтобы n-й неквадрат определялся как n + round(sqrt(n))?
xnor

@xnor, хороший. Я попытался найти хорошую формулу с, sqrt(n)но мне не пришло в голову округляться до ближайшего, а не вниз. Это дает немедленное трехбайтовое сохранение, которого недостаточно для добавления запасного варианта, но сохраняет надежду.
Питер Тейлор

35

Python 2, 875 последовательностей

print', '.join('%020d'%(10**20/(input()-21004)))

Работает для 875 последовательностей с 21016 (десятичные цифры от 1/12) до 21999 (десятичные цифры от 1/995).

Я нашел этот кусок с помощью сложного алгоритма поиска случайного набора в идентификаторах последовательности вручную. Некоторые последовательности в диапазоне не имеют этого формата и появляются в другом месте (спасибо Mitchell Spector за указание на это). Например, 21021 не является расширением 1/17.

Даже с прерываниями последовательности для 1 / n отображаются как id n+21004. Остальная часть не сдвинута, но недостающие последовательности появляются в другом месте. Например, 1/17 отображается как 7450 .

Я посчитал те, которые соответствуют, используя загруженную копию имен последовательности.

Другой блок дает 848 последовательностей от 16742 до 17664 .

n=input()-16729
for i in range(20):k=n/12;a=int((8*k+1)**.5/2+.5);print(a*i+k-a*(a-1)/2)**(n%12+1)

Все они имеют форму n -> (a*n+b)^c, где 2≤a≤12, 0≤b<a, 1≤c≤12. Код извлекает коэффициенты путем инвертирования треугольных чисел и модулей. Как и прежде, не все последовательности в диапазоне совпадают. Если бы эти два выражения могли уместиться в 100 байтов, это дало бы 1723 последовательности.

Перспективные куски:

  • 1929 сопоставление последовательностей: 41006 через 42397 , числитель и знаменатель дробей продолжения фракции.
  • ~ 3300 соответствующих последовательностей: от 147999 до 151254 : количество прогулок по Z ^ 3, если вы можете найти, как упорядочены списки векторов.

Вот категории для других потенциальных фрагментов, сгруппировав имена последовательностей OEIS, удалив все числа (цифры, знак минус, десятичная точка). Они отсортированы по количеству появлений.

3010    Number of walks within N^ (the first octant of Z^) starting at (,,) and consisting of n steps taken from {(, , ), (, , ), (, , ), (, , ), (, , )}
2302    Number of reduced words of length n in Coxeter group on  generators S_i with relations (S_i)^ = (S_i S_j)^ = I
979     Primes congruent to  mod 
969     Numerators of continued fraction convergents to sqrt()
967     Denominators of continued fraction convergents to sqrt()
966     Continued fraction for sqrt()
932     Decimal expansion of /
894     Duplicate of A
659     Partial sums of A
577     Divisors of 
517     Inverse of th cyclotomic polynomial
488     Expansion of /((x)(x)(x)(x))
480     Decimal expansion of th root of 
471     Number of nX  arrays with each element x equal to the number its horizontal and vertical neighbors equal to ,,,, for x=,,,,
455     First differences of A
448     Decimal expansion of log_ ()
380     Numbers n such that string , occurs in the base  representation of n but not of n+
378     Erroneous version of A
375     Numbers n such that string , occurs in the base  representation of n but not of n
340     Numbers n with property that in base  representation the numbers of 's and 's are  and , respectively

35 последовательностей:

c=input()
for n in range(20):print[(c-1010)**n,(c-8582)*n][c>2e3]

Работает с 8585 (кратно 3) до 8607 (кратно 25) и с 1018 (кратно 8) до 1029 ( кратно 19). Удобно, что все это в одном куске, упорядоченном по id.

Это использует только 65 из 100 разрешенных байтов и еще не полностью в гольфе, поэтому я поищу еще один хороший кусок.


хаха, хороший!
Maltysen

также, короче:lambda n:range(0,(n-8582)*20,n-8582)
Maltysen

@ Maltysen Spec сказал программу, так что я пошел с этим. Я спрошу.
XNOR

2
Хорошая идея, но я не думаю, что диапазон 21016-21999 состоит исключительно из взаимных. Например, A21021 - это 1, 33, 727, 13365, 221431, 3428733, ..., а не десятичные цифры 1/17. Я не проверял, какие последовательности являются взаимными, а какие нет.
Митчелл Спектор

1
@xnor Сколько бы совпадений вы ни получили, вы можете объединить его с моим ответом, чтобы добавить еще 252 к счету: если входное значение не находится в диапазоне 21016-21999, выведите 20 0. (Ни одна из моих 252 последовательностей не лежит в этом диапазоне.)
Митчелл Спектор

29

Bash + coreutils, 252 последовательности

yes 0|head -20

Попробуйте онлайн!

Работает на 252 последовательностях OEIS: A000004, A006983, A011734, A011735, A011736, A011737, A011738, A011739, A011740, A011741, A011742, A011743, A011744, A011745, A023975, A023976, A04625, A04625, A0464, A044440, A0394, A0444, A0444, A0444, A0444, A0444, A0444, A0444, A0444, A0444, A0444, A0444, A0444, A025, A03 A034422, A034423, A034427, A034429, A034432, A034435, A034437, A034438, A034439, A034441, A034443, A034445, A034447, A034449, A034450, A034451, A034452, A034453, A034454, A034455, A034456, A034457, A034458, A034459, A034461, A034462, A034464, A034465, A034466, A034467, A034468, A034469, A034471, A034473, A034475, A034476, A034477, A034479, A034480, A034481, A034482, A034483, A034484, A034485, A034486, A034487, A034489, A034490, A034492, A034493, A034495, A034497, A034498, A034499, A034500, A034501, A034502, A034503, A034504, A034506, A034507, A034508, A034509, A034510, A034511, A4545, A034512, A4545A034518, A034519, A034520, A034521, A034522, A034523, A034525, A034526, A034527, A034528, A034529, A034530, A034531, A034532, A034533, A034534, A034535, A034536, A034545, A034540, A034540, A034540, A034540, A034540, A034540, A034540 А034544, А034545, А034546, А034547, А034548, А034549, А034550, А034551, А034552, А034553, А034554, А034555, А034556, А034557, А034558, А034559, А034560, А034567, А034567, А034567, А034567, А034567, А034567, А034567, А034567, А034561, А034561, А034561, А034561, А034561, А034561, А034561, А034561, А034561, А034561, А034561, А034561, А034561, А034561, А034561, А034561, А034561, А034561, А034561, А034561, А034567 A034569, A034570, A034571, A034572, A034573, A034574, A034575, A034576, A034577, A034578, A034579, A034580, A034581, A034582, A036861, A047752, A052375, A052375, A0, A0, A0, A0, A0, A045, A0 A070204, A070205, A070206, A072325, A072769, A076142, A082998, A083344, A085974, A085982, A086007, A086015, A089458, A093392, A094382, A105517, A59, A18, A18, A18, A18, A10832A111899, A112802, A122180, A129947, A137579, A159708, A161277, A161278, A161279, A161280, A165766, A167263, A178780, A178798, A180472, A180601, A181340, A181318, A181718, A18, A18, A18, A18495, A18495, A18495, A184900 A185255, A185264, A185284, A191928, A192541, A197629, A198255, A200214, A206499, A210632, A212619, A217148, A217149, A217151, A217155, A217156, A221, A236, A2362, A2302, A2302, A2302, A2302, A2302, A230, A2302, A230, A230, A230, A230, A230, A230, A230, A230, A2302, A230, A305, A230, A230, A230, A230, A240 A243831, A243832, A243833, A243834, A243835, A243836, A248805, A250002, A256974, A260502, A264668, A276183, A277165, A280492, A280815A198255, A200214, A206499, A210632, A212619, A217148, A217149, A217151, A217155, A217156, A228953, A230533, A230686, A235044, A235358, A236265, A236417, A236460, A238403, A243831, A243832, A243833, A243834, A243835, A243836, A248805, A250002, A256974, A260502, A264668, A276183, A277165, A280492, A280815A198255, A200214, A206499, A210632, A212619, A217148, A217149, A217151, A217155, A217156, A228953, A230533, A230686, A235044, A235358, A236265, A236417, A236460, A238403, A243831, A243832, A243833, A243834, A243835, A243836, A248805, A250002, A256974, A260502, A264668, A276183, A277165, A280492, A280815


4
Хех, милая идея!
Джонатан Аллан

12

Python (с симпой), 144 146 последовательностей

import sympy
f=lambda a,M=16627:[int(c)for c in str(sympy.log((a<M)*46.5+4+a-M).n(20))if'.'<c][-20:]

Функция fработает для 146 последовательностей от A016578 до A016723 включительно.

Все они выводятся на тест жгут на repl.it .

В 49 последовательности A016578 через A016626 включительно являются десятичные разложения лога (3/2), журнал (5/2), журнал (7/2), ..., журнал (99/2).

В 97 последовательности A016627 через A016723 включительно десятичные разложения бревна (4), журнал (5), журнал (6), ..., журнал (100).

Первые два из 49 начинаются с первого десятичного знака, поскольку значения логарифмов для них меньше 1 , поэтому [-20:]занимает последние 20 десятичных разрядов результата вызова, в ...n(20)который попадает 20 значащих цифр. В if'.'<cотфильтровывает десятичную дробь характера, и int(c)забросы каждый из оставшихся цифр символов в целое число (хотя , возможно , не нужно).


10

Желе, 1127 1975 последовательностей

- в настоящее время это объединяет результаты работы xnor и Mitchell Spector , но все еще имеет место для роста в 78 байтов. Иди дай им кредит!

0x20
_21004µȷ20:DU¢oU
20Ḷ×⁸+µ*þ12
11R‘µẋ`€F$ç"Ḷ€F$;/
_108ị¢

“æÑØ‘×ȷ3¤>J×$S‘µĿ

TryItOnline!

Последовательности 1975 года:

  • 252, которые начинаются с двадцати нулей (поведение для ввода вне [16000,21999]);
  • 848 последовательностей, лежащих в диапазоне от 16742 до 17664, которые соответствуют (a*n+b)**cформуле (поведение для ввода в [16000,17999]); а также
  • 875 последовательностей, лежащих в диапазоне от 21016 до 21999, которые соответствуют десятичному расширению 1/n(поведение для ввода в [18000,21999]).

Как?

0x20 - Link 1, TwentyZeros: no arguments
0    - zero
  20 - twenty
 x   - repeat

_21004µȷ20:DU¢oU - Link 2, DecimalExpansionOfReciprocal: oeisIndexNumber
      µ          - monadic chain separation
       ȷ20       - 1e20
_21004           - subtract 21004 from oeisNumber to get the n value
          :      - integer division, i.e. 1e20 // n
           D     - decimal list
            U    - reverse
             ¢   - call last link (1) as a nilad, i.e. get twenty zeros
              o  - logical or, i.e. pad the right of the reversed list to twenty with zeros
               U - reverse again

20Ḷ×⁸+µ*þ12 - Link 3, BlockOf12abcFormulaResults: a, b
20Ḷ         - lowered range of 20 [0,1,...,19] i.e. the values of n in (a*n+b)**c
    ⁸       - left argument, a
   ×        - multiply
     +      - add b
      µ     - monadic chain separation
        þ12 - outer product with [1,2,...,12] of... i.e. the values of c in (a*n+b)**c
       *    -     exponentiation

11R‘µẋ`€F$ç"Ḷ€F$;/ - link 4, AllabcFormulaResults: no aguments
11R                - range of 11 [1,2,...,11]
   ‘               - increment   [2,3,...12] i.e. the values of a in (a*n+b)**c
    µ              - monadic chain separation
         $         - last two links as a monad
     ẋ`€           - repeat list with repeated arguments for €ach [[2,2],[3,3,3],...,[12,12,12,12,12,12,12,12,12,12,12,12]]
        F          - flatten into one list
               $   - last two links as a monad
            Ḷ€     - lowered range of €ach [[0,1],[0,1,2],...,[0,1,2,3,4,5,6,7,8,9,10,11]]
              F    - flatten into one list
          ç"       - zip with (") last link (3) as a dydad (ç) i.e. get all the results
                 / - reduce with
                ;  - concatenation i.e. make the list of lists of lists one list of lists.

_108ị¢ - Link 5, abcFormulaResult: oeisIndexNumber
_108   - subtract 108 from the oeisNumber (indexes in Jelly are modular and there are 924 entries, this is shorter than _16740)
     ¢ - call last link (4) as a nilad
    ị  - index into i.e. get the one relevant result of 20 terms

 - Link 6, an empty link (cheaper in bytes than the %6 alternative in the main link)

“æÑØ‘×ȷ3¤>J×$S‘µĿ - Main link: oeisIndexNumber           e.g. 1-15999; 16000-17999; 18000-21999; 22000+
        ¤         - nilad followed by link(s) as a nilad
“æÑØ‘             - codePage indexes [22,16,18]
      ȷ3          - 1e3
     ×            - multiply [22000,16000,18000]
         >        - greater than (vectorises)            e.g. [1,1,1]; [1,0,1];     [1,0,0];     [0,0,0]
            $     - last two links as a monad
          J       - range(length) [1,2,3]
           ×      - multiply                             e.g. [1,2,3]; [1,0,3];     [1,0,0];     [0,0,0]
             S    - sum                                  e.g. 6;       4;           1;           0
              ‘   - increment                            e.g. 7;       5;           2;           1
               µ  - monadic chain separation
                Ŀ - call link(index) as a monad with the oeisIndexNumber
                        link indexing is 1-based and modular so 7 calls link 1
              ><        hence the empty link 6 replacing a %6 here

8

Mathematica, 39 173 189 последовательностей

If[l=0~Range~19;#<4^7,l,If[#<3^9,#&@@RealDigits[Log[j=16627;#-j+If[#<j,49.5,4]],10,20],#-22956-l]]&

Вдохновлен ответом Джонатана Аллана .

Работает на:

  • 1477 , 2837 , 4830 и 8554 (первые 20 терминов таковы {0, 1, 2, ... , 19})
  • С 16578 по 16626 (десятичное расширение журнала (3/2), десятичное расширение журнала (5/2), ... десятичное расширение журнала (99/2))
  • С 16627 по 16723 (десятичное расширение log (4), десятичное расширение log (5), ... десятичное расширение log (100))
  • С 22958 по 22996 (2-н, 3-н, ... 40-н)

6

CJam, 1831 последовательность

{168680-:Zz1320b900b48md:R;H+:QB+2*,:!1_tQWtQ)WtK{[WQW*_(]+1$f=[1R2+R~R4+*2/WR-X$-].*1b+}/J~>ZW>f*}

Это дает правильный вывод для 199 последовательностей начала 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0и всех последовательностей в включенных диапазонах [A168680, A169579]и [A170000, A170731]. Большая часть этого имеет дело с этими двумя диапазонами, с отступлением для всех нулей перед началом первого диапазона.

Два рассматриваемых диапазона имеют вид

NпSя(Sя)2знак равно(SяSJ)Qзнак равноя

п350Q1750(T-1)

TQ+1+TQ-T-112(п-2)(п-1)TQ+1-12(п-2)(п+1)TQ+(п-1)T-1
рзнак равноп+3

1

Пакетная, 62 последовательности

@for /l %%i in (1,1,20)do @set/a"n=(n=22956-%1)*(n>>=16)+%%i*(n|%1-8582)"&call echo %%n%%

Просто реализовать один блок последовательностей было сложно, но я справился с двумя из 89 байтов! Объяснение: Для параметра %18585-8607 22956-%1>>16возвращает ноль, в результате чего (22956-%1)выражение игнорируется, и мы заканчиваем тем, что умножаем переменную цикла на 3-25 соответственно, тогда как для параметра 22958-22996 он возвращает минус единицу, вызывая выражение отрицается, в то время как n|причины умножения коэффициента умножения на минус один эффективно вычитают переменную цикла.


1
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.