Прими-орденські прими


15

Хто вони?

Прайми Примуса-Портуса (POP) - це праймери, які містять свій порядок у послідовності праймів.
Отже, nthпрем'єр, щоб бути POP, повинен містити всі цифри nпевним чином, який я поясню.

Приклади

Давайте станемо зрозумілішими: усі цифри nповинні відображатися серед цифр POP у тому ж порядку, у якому вони відображаютьсяn

Найголовніше 6469th- 64679це POP, оскільки воно містить усі цифри 6469в потрібному порядку.
1407647є POP, оскільки це 107647thпросте число

14968819 - POP (968819-й прем'єр). Отже, це завдання НЕ OEIS (A114924)

1327 НЕ POP, тому що це 217thпросте (цифри не в правильному порядку)

Змагання

Ви правильно здогадалися!
Дано ціле числоn , виведіть nthPOP

Випробування

вхід-> вихід

1->17
3->14723    
5->57089
10->64553 
29->284833  
34->14968819

Це тому найкоротша відповідь у байтах виграє!

Все це повинно бути 1-індексованим


0-індексований, 1-індексований чи вибір дилера?
Кудлатий

@Shaggy Я думаю, що це 1-індексований такий, що він сумісний з тестовими кейсами (Порядок має значення).
Містер Xcoder

@ Mr.Xcoder Це 1-й POP, 7-й прем'єр

@MrXcoder: так, вибачте, я, мабуть, це погано сформулював; Що я хотів запитати, чи дозволено 0-індексування? Очевидно, що з тестів, 1 індексація буде дозволена. Чи є у нас, до речі, консенсус, щодо того, яку індексацію ми можемо використати у виклику, якщо все, що нам потрібно пройти, - це тестові випадки, і явних згадок у специфікаціях виклику немає?
Shaggy

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

Відповіді:


3

Математика, 104 байти

Надзвичайно ефективний

(t=i=1;While[t<#+1,If[!FreeQ[Subsets[(r=IntegerDigits)@Prime@i,{Length@r@i}],r@i],t++];i++];Prime[i-1])&


знаходить n = 34 за менше хвилини


2

Лушпиння , 11 байт

!fS¤o€Ṗdṗİp

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

Не так швидко, обчислює F (5) приблизно за 30 секунд на TIO

Пояснення

!fS¤o€Ṗdṗİp
 f       İp    Filter the list of prime numbers and keep only those for which:
  S¤o€Ṗdṗ       The "d"igits of its index in the "ṗ"rime numbers are an "€"lement of the 
                  "Ṗ"owerset of its "d"igits
!              Return the element at the desired index of this filtered list

2

Python 2 + gmpy2 , 188 162 байт

Досить ефективно, знаходить n = 34 за 22 секунди на TIO!

Можливо, можливо, трохи пограти в гольф

from gmpy2 import*
def F(a,b):
 i=k=0
 while b[i:]and a[k:]:k+=a[k]==b[i];i+=1
 return"0">a[k:]
x=input()
u=z=1
while x:z=next_prime(z);x-=F(`u`,`z`);u+=1
print z

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


@Dopapp, чи не додасть це байт? __import__("gmpy2").довше, ніжfrom gmpy2 import*\n
Халвард Гуммель

О так, я не знаю, чому це вийшло іншим вперше. Я, мабуть, забув лапки або щось таке
Даніель


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