Поліглот (не постійний) OEIS!


24

Відмова від відповідальності: На це надихає "Поліглот OEIS!" але виправляє проблему, яка призводить до закриття (див. вихідний розділ) та була повторно розміщена, щоб не визнати недійсними відповіді.

Вступ

Всі ми знаємо і любимо он-лайн енциклопедію цілих послідовностей ( OEIS ). То що робити, якщо ми зробили офлайн- версію цікавих послідовностей? Що ж, це було б занадто просто, чи не так, і як би ви вибрали послідовність із нашим стандартним інтерфейсом? Ні. Нам потрібне простіше рішення для цього. Поліглот!

Вхідні дані

Вашим входом буде невід'ємне ціле n.

Вихідні дані

Ваш вихід буде або

  • n-Й введення послідовності OEIS АБО
  • Перші nзаписи послідовності OEIS.

Ви можете взяти індекс як 1-базисний або 0-базовий, як вам зручніше.

Щоб не зробити це питання дублікатом постійних послідовностей універсальних цілих принтерів , заборонено.Це також повинно підвищити рівень складності поданих матеріалів та уникати "нудних" рішень;)

Послідовність є непостійною, якщо є два члени послідовності, які є неоднаковими.

Гм, так де виклик?

Ви повинні поліглотувати вищевказані функціональні можливості. Тобто, якщо ви підтримуєте мови A, B і C, всі повинні впроваджувати різні послідовності OEIS. Вибір послідовності не обмежений, за винятком того, що вам потрібні різні для всіх мов.

Тобто, якщо ви запускаєте надану програму мовою A, тоді генерується послідовність X, якщо ви запускаєте надану програму мовою B, тоді буде створена послідовність Y (з X! = Y) і якщо ви запускаєте надану програму в мові C, тоді буде створена послідовність Z (з X! = Z && Y! = Z).

Хто виграє?

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

Будь-які заключні слова / правила?


4
Це повідомлення було зроблено відповідно до цієї Meta Q & A .
SEJPM

Чи можуть різні мови мати різну індексацію?
Стівен

2
@StepHen так вони можуть.
SEJPM

Відповіді:


16

3 мови (1 байт) - Pyth ( A001477 ), MATL ( A000027 ), Braingolf ( A000217 )

Q

Як?

Q робить наступне:

  • У MATL це означає + 1, тому він в основному оцінює input + 1.

  • У Pyth це означає введення, тому він просто виводить дані.

  • У Braingolf це вбудований для трикутних чисел.

Міні-поліглот

Pyth може бути замінений будь-яким з наступних мов: GolfScript , Пайк , Brachylog або Brain-Flak .


1
добре, ви, безумовно, вибрали потрібні мови для цього +1: P
HyperNeutrino

1
@HyperNeutrino Я просто переніс свою відповідь звідти, але тоді я вибрав дуже хороші мови, так що так: P - Дякую!
Містер Xcoder

Пам'ятайте, це кількість мов, а не код-гольф: P
Стівен

@StepHen Я думаю, що 3 є розумним.
Містер Xcoder

14

10 мов, 122 байти

#|A=1:0;~@}{\,[.,];oi
#coding:utf-8
print (0 and gets.to_i-1 or int(input())**(2+(1/2>0)));quit()#⎚I±N»
# x
#x%:+.

Я точно можу додати ще купу. 1-індексований, якщо не вказано інше.

Зауважте, що я не можу бути в курсі посилань на TIO, коли я впевнений, що новіші зміни не вплинули на старіші програми - ви можете протестувати їх, якщо хочете, але копіюючи 10+ нових посилань TIO кожен раз, коли я вношу зміни стає трохи стомлюючим після трохи. Я буду копіювати нові кожні 5 оновлень або близько того.

cQuents v0, A000007

Відповідний код: #|A=1:0;

#|Aловить дані та є для коментарів Python. =1означає , що перший елемент 1, :0означає , що інші 0, виводить nй член даного входу n. cQuents v0 має дивну помилку / функцію, що коли несподіваний, але дійсний маркер, наприклад ;, читається, він спричиняє розбір до кінця.

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

PingPong, A001478

Відповідний код: #|A=1:0;~@

Виводи за допомогою коду виходу. 0-індексований.

#пропускає наступну таблицю. =тут нічого не робить. 1натискає 1та :друкує 1до STDOUT. 0штовхає 0. )нічого не робить. ;штовхає введення, ~спливає і штовхає -n-1. @припиняється. Вихідний код - це верхня частина стека.

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

аксо, A001477

Відповідний код: }{\

0-індексований. }зчитує та виштовхує ціле число зі STDIN (потрібна тривалість нового рядка з певних причин), {друкує верхню частину стека та \завершує програму. Я не впевнений, що роблять попередні символи, але нічого, що має значення в цьому випадку.

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

мозковий ебать, A000027

Відповідний код: ,[.,]

Проста програма для котів від esolangs.org. Виводить вхід.

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

> <>, A000030

Відповідний код: #...;oi

#дзеркала та обгортання праворуч, які спрямовують його до читання io;, що видає перший символ вводу. 0-індексований.

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

Рубі, A023443

Відповідний код: print (0 and gets.to_i-1...)

0-індексований. Друкує вхідний мінус 1. 0є truthy у Ruby, але falsey у Python.

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

Пітон 3, A000578

Відповідний код: print (0 and gets.to_i-1 or int(input())**(2+(1/2>0)));quit()

Зірвавшись з оригінальної публікації HyperNeutrino, але це досить відомий поліглот. quit()завершує програму.

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

Python 2, A000290

Відповідний код:

#coding:utf-8
print (0 and gets.to_i-1 or int(input())**(2+(1/2>0)));quit()

#coding:utf-8необхідний для роботи деревного вугілля. Також зірвав оригінальний пост HyperNeutrino. quit()завершує програму.

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

Вугілля деревне, A001489

Відповідний код: ⎚I±N»

0-індексований. очищає консоль (деревне вугілля друкує ASCII таким, яким він є) та I±Nдрукує мінус введення. »є помилкою розбору та припиняє програму.

Дякуємо лише ASCII за допомогу у чаті.

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

Кардинал, A020725

Відповідний код:

 x
x%:+.

Додає 1 до введення та розбиває всі інші покажчики.

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


Схоже, вихідним кодом для PingPong є ToS, він завершується на 2 ^ 32, як можна було б очікувати від 64-бітного цілого числа, підписаного.
Джонатан Аллан

@JonathanAllan здорово, спасибі
Стівен

Вам дійсно потрібно вийти з помилкою розбору, якщо код деревного вугілля вже в кінці програми?
MD XF

@MDXF ні, я (ам) планував додати більше в кінці
Стівен

10

5 мов ( 05AB1E , Власне , CJam , Jelly , MATL ), 7 байт

UD>li)+

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

  • 05AB1E : послідовність A000027 (додатні цілі числа: a ( n ) = n ; на основі 1)
  • Насправді : послідовність A023443 (невід'ємні цілі числа, включаючи 1: a ( n ) = n −1; на основі 0)
  • Cjam : послідовність A020725 (додатні цілі числа, виключаючи 1: a ( n ) = n +1; на основі 1)
  • Желе : послідовність A005843 (невід’ємні парні числа: a ( n ) = 2 * n ; на основі 0)
  • MATL : послідовність A000290 (квадрати: a ( n ) = n 2 ; на основі 1). Виходить з помилкою після отримання виводу.

7

3 мови: Протон, A000583 ; Пітон 3, A000578 ; Python 2, A000290

Протон , 49 байт

print(int(input())**(2+(1/2>0)+((''',''')!=',')))

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

Python 3 , 49 байт

print(int(input())**(2+(1/2>0)+((''',''')!=',')))

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

Python 2 , 49 байт

print(int(input())**(2+(1/2>0)+((''',''')!=',')))

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

Пояснення

У протона немає '''...'''рядків, так це (''',''')стає ('' ',' ''), що чомусь не викликає проблем. Він оцінює '', змушуючи (''',''')!=','оцінювати True.

Python робить ці рядки, так що (''',''')це просто ','так має (''',''')!=','значення False.

Python 2 використовує ділення підлоги для цілих чисел, тому 1/2>0хибно в Python 2 та true у Python 3.


Можливо, ви зможете додати ще кілька мов, якщо перетворити лінійку Python, 1//1;print(int(input())**(2+(1/2>0)+((''',''')!=',')));quit()а потім додати такі мови, як JavaScript,
Stephen

@StepHen Звичайно, це може спрацювати, дякую. Я зроблю це, як тільки я
обійдусь

6

5 мов, 107 байт

s=1/2;1//2;q=int(input())*([2,3][s>0]);"""/.__id__;'
alert(+prompt()+1);`"""#=;#';q=gets
print(q)#)|<>%2)#`

Perl: A000035

Використовуючи =як роздільник для s///засобів, ми можемо легко виключити код, який ми не хочемо, і використовуючи )як роздільник для q{}засобів після printingq у всіх інших мовах, ми можемо просто працювати на <>безпосередньо, не турбуючись.

s/1...q/i...#/;
print(<>%2)

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

Ruby: A001477

У Ruby - //це насправді /(ділити на) /.../(збіг з регулярними виразами), тому поки регекс припиняється і перетворюється на число, ми можемо ділитися ним безпечно. __id__коротше .to_s.ord, ми просто містять іншу частину коду ми не хочемо в 'с, набір qдо getsі printйого з усіма іншими.

s=1/2;1//2..."/.__id__;'...';q=gets
print(q)

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

Пітон 2: A005843

Використовуючи стандартний трюк, щоб відрізнити 2 від 3 та додаткові матеріали, які ми не хочемо, """та коментарі.

s=1/2;1//2;q=int(input())*([2,3][s>0]);"""/...`"""
print(q)

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

Пітон 3: A008585

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

JavaScript (браузер ES6): A000027

Для JS це досить просто, але в кінцевому підсумку було легше не повторно використовувати існуючі printта йти на SpiderMonkey, але це теж можливо.

s=1/2;1//2;q=int(input())*([2,3][s>0]);"""/.__id__;'
alert(+prompt()+1);`"""#=;#';q=gets
print(q)#)|<>%2)#`


3

6 мов: кубічно 5/6/7/8/9/10, 44 40 32 байт

Закреслений 44 все ще є регулярним 44; (

DDR'DDR$:_0?{R'DDRDDB'%0}!{+00%}

Це відбитки:

Пояснення:

DDR'DDR$:_0?{R'DDRDDB'%0}!{+00%}
DDR'DDR                            get top face sum to 2 (all versions)
       $:                          read input and set notepad to it
         _0                        set notepad to input modulo 2
           ?{...........}          if truthy
             R'DDRDD                reset cube
                    B'              set top face to Cubically version number
                      %0            print top face
                         !{....}   if falsy
                           +00      add 2 to notepad twice
                              %     print

Спробуйте в Інтернеті! (Кубічно 6x6x6)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.