Втрачено в перекладі


15

Це якщо ви не знайомі з форматом, натисніть тег, щоб перейти до вікі. Для цього питання не буде нитки розбійників.

Копи

Ваше завдання як Cops - вибрати дві послідовності з Інтернет-енциклопедії цілих послідовностей і написати програму, яка приймає n-елемент однієї послідовності як вхідний і виводить n-й елемент другої послідовності. Потім ви робите відповідь, включаючи код і опускаючи вибрані послідовності. Розбійники спробують знайти вибрані вами послідовності, і якщо вам вдасться знайти послідовності, які ви мали на увазі, чи якісь інші послідовності, для яких у вашій програмі ви повинні позначити свою відповідь як Зламана . Якщо грабіжник повідомить вам про тріщину, яку ви вважаєте неправдивою, ви можете представити доказ того, що це не тріщина. Інакше потрібно позначити це так.

Відповідно до звичайних відповідей, які не були розстріляні протягом 7 днів, можна вважати безпечними. Коп може відзначити їхню відповідь безпечною, розкривши послідовності, які вони мали на увазі. Після безпечної відповіді більше не може бути зламана.

Мета полягає в тому, щоб мінімізувати кількість байтів вашої програми, залишаючись незапущеними.

Приклад

Наступний код Python переводить n-й елемент A000290 (квадратні числа) в A000217 (трикутні числа):

lambda x:sum(range(0,int(x**.5+1)))

Постановки та вимоги

  • Якщо ви вибираєте послідовність, яка не була доведеною як кінцева, ви повинні вивести всі терміни, які можуть існувати, а не лише ті, що вказані на сторінці OEIS

  • Як виняток з попередніх мов правил, без нескінченних точних цілих чисел не потрібно виводити чи вводити числа поза їх діапазону.

  • Розмір послідовності введення не повинен бути доведеним меншим, ніж вихідна послідовність.

  • У вашій послідовності введення не повинно бути повторюваних елементів (інакше завдання майже неможливо)

  • OEIS включає в себе індекс на своїй сторінці (перше число після заголовка "OFFSET") за замовчуванням це ваше зміщення для n (n дорівнює індексу для першого елемента в послідовності), якщо ви виберете інший індекс, ви повинні вказати це в Ваша відповідь.

  • Якщо ви вибрали зміщення, відмінне від переліченого на OEIS, ви все одно повинні зіставити всі елементи у вхідній послідовності з відповідним елементом у вихідній послідовності.

  • Якщо ваша програма отримує вхід, який не є в послідовності введення, вона може робити все, що завгодно (невизначена поведінка). Однак, мабуть, вам найбільше цікаво, щоб воно все одно виводило ціле число.

  • Це неспортивно навмисно ускладнює запуск вашого коду, нехай це затратить багато часу на виконання або через невільний вибір мови . Хоча я буду виконувати останнє, я не можу об'єктивно застосувати перше. Однак я закликаю вас, заради забави, не робити спроб на перший, оскільки це робить виклик особливо складним для тих, у кого слабкіші комп'ютери.

Розбійники

Ваше завдання, як грабіжники, - це вибрати некруті, небезпечні відповіді та знайти послідовності, за якими вони відображаються. Якщо ви знайдете рішення, яке працює (не обов’язково призначене рішення поліцейських), прокоментуйте послідовності відповідної відповіді.

Розбійники не повинні сильно хвилюватися щодо перевірки того, що дві конкретні послідовності є рішенням, слід розмістити рішення, якщо воно відповідає всім записам на OEIS. Якщо це не та послідовність, яку поліцейський мав на увазі, поліцейський може запропонувати доказ того, що він неправильний, або позначити його як зламаний, якщо вони не можуть його знайти.


3
Як розбійник може бути впевнений, що його відповідь правильна для всіх матеріалів? Чи повинні вони це доводити математично?
Лев

1
@Leo Грабіжник повинен розмістити рішення, якщо воно відповідає всім записам на OEIS. Якщо це не та послідовність, яку мав на увазі поліцейський, вони можуть запропонувати доказ того, що він неправильний, або позначити його як зламане, якщо вони не зможуть його знайти. Я оновлю нитку розбійника.
Пост Рок-Гарф мисливець

2
Важко провести межу між загальними припущеннями та недоказаними ідеями. З метою ясності, я б сказав, що ви повинні мати можливість довести, що ваша відповідь працює.
Денніс

1
У мене є відчуття, що деякі справді приємні рішення можуть бути розірвані тупо, як oeis.org/A000004 -> oeis.org/A000012
Wolfram

2
@Dennis Я думаю, це хороший момент. Це непросто, хоча немає можливості людям отримати реп за пошук тріщин, оскільки, здається, це досить складно для цієї проблеми.
0

Відповіді:


6

Желе , 14 байт (розтріскано @Wolfram)

+66%444µ111<µ¡

Спробуйте в Інтернеті!

Повинно бути досить очевидно, що це робить. Насправді, на користь користувачів, які не користуються Jelly, я навіть дам пояснення:

Пояснення

+66%444µ111<µ¡
       µ    µ¡  Run the transformation
+66%444           "add 66, then modulo 444"
        111<    once if 111 is less than the input, zero times otherwise 

Питання в тому, чому це робиться?

Тріщина

Послідовності, про які йдеться, були A201647 та A201647 . Вони кінцеві та відрізняються лише в двох останніх елементах:

  • 3, 5, 7, 9, 11, 15, 21, 165, 693
  • 3, 5, 7, 9, 11, 15, 21, 231, 315

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


@WheatWizard: Якщо ви думаєте, що можете отримати перевагу від цього, перейдіть до цього. Але вам доведеться бути швидким, так як якщо хтось інший тестує це з увімкненим кешем, вони в кінцевому підсумку забруднюють кеш для всіх після них.

@WheatWizard відключення кеш-виводу гарантує, що ви отримаєте свіжий результат від сервера, але цей новий результат все одно буде кешований.
Денніс

1
@WheatWizard Або додайте вимикач кешу, коли ви його тестуєте: випадковим чином обраний рядок як частина коментаря або невикористане поле введення.
Денніс

+1 ця відповідь за своєю суттю дуже проста, але все ще викликає розбійників
Kritixi Lithos


3

Желе , 7 байт (розтріскується @JonathanAllan)

ÆFḅÆdÆẸ

Спробуйте в Інтернеті!

Що це робить

ÆFḅÆdÆẸ  Main link. Argument: n

ÆF       Factor n into prime-exponent pairs.
   Æd    Compute σ, the number of divisors of n.
  ḅ      Convert each pair from base σ to integer.
     ÆẸ  Yield the integer whose prime signature (infinite sequence of all prime
         exponents, including zeroes, in order) is equal to the result.

3
Можливо, можуть бути й інші дійсні відображення, але те, що, на вашу думку, ви мали на увазі, були простими розмірами - від A000040 до 2 ^ (2p + 1), p prime - A100626 .
Джонатан Аллан

@JonathanAllan Я також прийшов до A000040 -> A100626, хоча ти побив мої повільні пальці
Ahemone

Ми також можемо бачити , що він буде тримати: коли вхід простих числа p, ÆFвиходи (p,1)і Ædвиходи 2, тому отримують нас 2p+1, що кошти ÆẸдадуть перший прем'єр, 2підняли до сили цього результату, 2^(2p+1).
Джонатан Аллан

@JonathanAllan Так, саме так я йшов.
Денніс

2

Python 3, 256 байт ( тріщини! )

from math import*
def p(i,m):
 r=0;d=floor(log(i))
 for y in range(d):r+=(pow(16,d-y-1)%(8*y+m))/(8*y+m)
 o=-1;y=d
 while r!=o:o=r;r+=pow(16,d-y-1)/(8*y+m);y+=1
 return r
def q(n):r=4*p(n,1)-2*p(n,4)-p(n,5)-p(n,6);return floor((1-(-r%1)if r<0 else r%1)*16)

Спробуйте в Інтернеті!

Вибачте, якщо цей код виглядає жахливим, я думаю, що це мій перший гольф Python. Кастинг в Python полегшує кодування.


Я припускаю, що функція йдеться про це q?
Post Rock Garf Hunter

Також kздається, що змінна не використовується, тому ви можете зберегти деякі байти, видаливши її.
Post Rock Garf Hunter

Це від A001671 до A062964 ?
Post Rock Garf Hunter

@WheatWizard так, дякую і так.
betseg

2

Обробка , 184 байти, БЕЗКОШТОВНО!

int x(int y){int b=TRIANGLES-MITER;for(int i=OVERLAY/BURN;i>#fffffe;b*=(int)pow(y,(MOVE-HAND+0.)/(int)sqrt(red(color(-1<<16))/(int)log(color(0)*color(-1)))),i-=QUAD/DARKEST);return b;}

Функція, яка приймає int і повертає int. Поки число вводу знаходиться в intдіапазоні, програма повинна працювати нормально.

Це не повільно, просто нечитабельно. Удачі!


Я здивований, що це уявлення тривало так довго. Ну добре, принаймні, це перше безпечне подання :)

Від A000578 до A000290

Іншими словами: кубики до квадратів.

Пояснення

Відповідаючи на додавання жодних рядків (чи чисел) , я виявив список констант обробки, які представляють вбудовані. Наприклад, CORNERмає значення 0. Повний список можна знайти тут . Щоб знайти значення константи, ви можете просто printїї.

Користуючись цим, я вирішив поміняти певні числа комбінаціями цих констант, щоб придушити його. Отже, ось що ви отримуєте, коли замінюєте константи їх відповідними значеннями int.

int x(int y){int b=9-8;for(int i=512/8192;i>#fffffe;b*=(int)pow(y,(13-12+0.)/(int)sqrt(red(color(-1<<16))/(int)log(color(0)*color(-1)))),i-=16/16);return b;}

Навіть зараз повний чіткий код не розкривається. Кольори залишаються. У процесі обробки змінні кольорів мають значення int, наприклад, білий ( #ffffff) є -1, #fffffeє -2, #fffffdє -3і так далі. Це можна дізнатися, printвикористовуючи колір. Тож давайте спростимо кольори.

int x(int y){int b=9-8;for(int i=512/8192;i>-2;b*=(int)pow(y,(13-12+0.)/(int)sqrt(red(color(-1<<16))/(int)log(-16777216*-1))),i-=16/16);return b;}

Ми приблизно на півдорозі :) Щоб зрозуміти значення, нам потрібно спростити числові вирази.

int x(int y){int b=1;for(int i=0;i>-2;b*=(int)pow(y,(1.)/(int)sqrt(red(color(-65536))/(int)log(16777216))),i-=1);return b;}

Набагато чіткіше! Тепер давайте спростимо логарифм.

int x(int y){int b=1;for(int i=0;i>-2;b*=(int)pow(y,(1.)/(int)sqrt(red(color(-65536))/(int)16.6...)),i-=1);return b;}


int x(int y){int b=1;for(int i=0;i>-2;b*=(int)pow(y,(1.)/(int)sqrt(red(color(-65536))/16)),i-=1);return b;}

Майже все! Тепер ми мусимо розібратися в цьому (int)sqrt(red(color(-65536))/16)). color(-65536)червоний, значить rgb(255, 0, 0). Тепер red()функція повертає значення аргументу червоного кольору (який є кольором). Так скільки червоного там червоного? Відповідь така 255. З цим ми отримуємо

(int)sqrt(255/16))
(int)sqrt(15)
(int)3.8...
3

Заміна цього в програмі призводить до:

int x(int y){int b=1;for(int i=0;i>-2;b*=(int)pow(y,(1.)/3),i-=1);return b;}

Так, це зроблено!

int x(int y){                        // y is the cube
  int b=1;                           // variable that holds the final result
  for(int i=0;                       // for-loop that
          i>-2;                      // loops twice
          b*=(int)pow(y,(1.)/3),     // multiply b by the cube root of y
          i-=1);                     // decrement the looping variable
  return b;                          // finally return b
}

Підсумовуючи це, це повертає квадрат (зроблений шляхом множення вдвічі в циклі for) на кубі кореня вхідного числа.


0

Математика (чи що завгодно) -  тріщини!

f[x_] := Quotient[ 366403414911466530559405368378193383110620062 - 
    755296348522256690003418238667147075159564695 x + 
    525778437135781349270885523650096958873079916 x^2 - 
    156594194215500250033652167655133583167162556 x^3 + 
    20861131421245483787723229627506507062999392 x^4 - 
    1181515772235154077024719095229309394979146 x^5 + 
    29382627265060088525632055454760915985604 x^6 - 
    308672970015057482559939241399297150364 x^7 + 
    1087516675449597417990589334580403666 x^8 - 
    312989984559486345089577524231879 x^9, 
  265451130886621254401938908479744271974400 ]

Я знаю, що Mathematica - це невільне програмне забезпечення, але ця функція є тривіальною для порту будь-якої улюбленої мови, на якій ви хочете її запустити. Він буквально обчислює значення даного полінома градуса 9, оціненого у вхідному цілому, а потім приймає ціле число цього значення та 42-значне число в останньому рядку. Наприклад, f[100]оцінює до -3024847237.


2
Від A003173 до A165892 . Але насправді це проблема програмування;)
Лев

2
У всякому разі, оскільки математика не вільна, я написав це, щоб перетворити її на функцію пітона
Лев

@Leo: Чудова робота! У функціонуванні є також писанка; ти знайшов це? : D
Грег Мартін

Ухх ... Ні, ні :(
Лев

Щоб зіставити один набір дев'яти елементів на інший набір дев'яти елементів, мені знадобився б тільки поліном ступеня 8. Ви можете зробити (правильний) висновок про те, що є ще одне вхідне значення, яке я відобразило на конкретне вихідне значення. Повідомте мене, якщо (коли) ви його знайдете :)
Грег Мартін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.