Відображення послідовностей 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!
JungHwan Min

1
@TrojanByAccident, якщо ваша ідея полягає в підключенні до OEIS, це не дозволено в PPCG
Nathan Merrill

@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).

Я знайшов цей шматок за допомогою складного алгоритму пошуку випадкового введення ручної послідовності вручну. Деякі послідовності в діапазоні не мають такого формату і з’являються в інших місцях (завдяки Мітчелл Спектор, який вказав на це). Наприклад, 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). Зручно, це все в один шматок, упорядкований ідентифікатором.

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


ха-ха, приємний!
Малтісен

також, коротше:lambda n:range(0,(n-8582)*20,n-8582)
Мальтісен

@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, A011745, A0395, A0395, A0395, A0395, A0395, A03925, A0397, A03925, A0397, A0397, A0397, A0397, A0, 390 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, A034505, A034506, A034507, A034508, A034509, A034510, A034511, A034511, A034511, A034511, A034511, A034511, A034511, A034511, A034511, A034511, A034511, A034511, A034511, A033411A034518, A034519, A034520, A034521, A034522, A034523, A034525, A034526, A034527, A034528, A034529, A034530, A034531, A034532, A034533, A034534, A034535, A034536, A034537, A034538, A034539, A034540, A034541, A034542, A034543, A034544, A034545, A034546, A034547, A034548, A034549, A034550, A034551, A034552, A034553, A034554, A034555, A034556, A034557, A034558, A034559, A034560, A034561, A034562, A034563, A034564, A034565, A034566, A034567, A034568, A034569, A034570, A034571, A034572, A034573, A034574, A034575, A034576, A034577, A034578, A034579, A034580, A034581, A034582, A036861, A047752, A052375, A055967, A031867, A061867, A061868, A061858, A061867, A061858, A061858, A061867, A061858, A061868, A061868, A061858, A061868, A061858, A031870, A034571, A034570, A034571, A034572, A034573, A034574, A034575, A034576, A034577, A034578, A034579, A034580, A034581, A034582, A036861, A047752, A052375, A055967, A031867 A070204, A070205, A070206, A072325, A072769, A076142, A082998, A083344, A085974, A085982, A086007, A086015, A089458, A093392, A094382, A105517, A1083211, A1083211, A1083211, A1083211, A1083211, A1083211A111899, A112802, A122180, A129947, A137579, A159708, A161277, A161278, A161279, 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, A28152, A228252, A228252, A228252, A228952, A228252, A228253, A228252, A2155, A2155, A2, A5, 525, A2, 512 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, A23626538, A236438, A236438, A236438, A236438, A236438, A236438, A236438, A236438, A236438, A236438, A236438, A236438, A236438, A2642, A2216, A2216, A221638 A248805, A250002, A256974, A260502, A264668, A276183, A277165, A280492, A280815A198255, A200214, A206499, A210632, A212619, A217148, A217149, A217151, A217155, A217156, A228953, A230533, A230686, A235044, A235358, A23626538, A236438, A236438, A236438, A236438, A236438, A236438, A236438, A236438, A236438, A236438, A236438, A236438, A236438, A2642, A2216, A2216, A221638 A248805, A250002, A256974, A260502, A264668, A276183, A277165, A280492, A280815


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

12

Пітон (із симпатією), 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 і Мітчелла Спектора , але все ще має місце для зростання в 78 байт. Іди, дай їм трохи кредиту!

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

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

СпробуйтеItOnline!

Послідовності 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

Математика, 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 (десяткове розширення журналу (4), десяткове розширення журналу (5), ... десяткове розширення журналу (100))
  • 22958 - 22996 (2-n, 3-n, ... 40-n)

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]. Більшість його стосується цих двох діапазонів, із запасом всіх нулів до початку першого діапазону.

Два діапазони, про які йдеться, мають форму

nPSi(Si)2=(SiSj)Q=I

P350Q1750(t1)

tQ+1+tQt112(P2)(P1)tQ+112(P2)(P+1)tQ+(P1)t1
R=P+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.