Примери з поворотом


13

Примітка: це сильно натхненний цим питанням .

Завдання:

Ваше завдання - генерувати nперше місце, коли кожен символ вашої програми повторюється nраз на місці.

Скажімо, ваша програма:

Derp

Кожен символ там повторюється один раз, тому він повинен виводити 2.

Коли кожен символ дублюється на місці, наприклад:

DDeerrpp

Це повинно генерувати другий прайм, який є 3.

Технічні характеристики:

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

Це , тому найкоротший код у байтах виграє.


6
Чи повинна Ваша програма працювати на всі праймери, надаючи достатньо часу та пам'яті. значить я не можу використовувати, наприклад, int в C?
Денніс

Відповіді:


21

Желе , 13 байт

“Ŀo‘’FQỌµḟ;¹V

Спробуйте в Інтернеті! або запустити перші десять програм .

Фон

Jelly має кілька різних типів рядкових літералів; всі вони починаються з а . Якщо літерал містить більше одного , рядок рядків повертається і відокремлює рядки один від одного.

Наприклад, “abc“def”урожайність ['abc', 'def'].

Залежно від останнього символу літералу (будь-якого з ”«»‘’, де «наразі не виконано), можна вибирати між різними типами літералів. Бо ми отримуємо кодові точки на кодовій сторінці Jelly замість відповідних символів Unicode.

Наприклад, “abc“def‘урожайність [[97, 98, 99], [100, 101, 102]].

Літерали в перших трьох програмах відповідають наступним масивам кодових точок.

“Ŀo‘           -> [199, 111]
““ĿĿoo‘        -> [[], [199, 199, 111, 111]]
“““ĿĿĿooo‘     -> [[], [], [199, 199, 199, 111, 111, 111]]

Як це працює ( n = 3 )

“““ĿĿĿooo‘‘‘’’’FFFQQQỌỌỌµµµḟḟḟ;;;¹¹¹VVV  Main link. Implicit argument: 0

“““ĿĿĿooo‘                               Yield the 2D array
                                         [[], [], [199, 199, 199, 111, 111, 111]].
          ‘‘                             Increment twice, yielding
                                         [[], [], [201, 201, 201, 113, 113, 113]].
            ’’’                          Decrement thrice, yielding
                                         [[], [], [198, 198, 198, 110, 110, 110]].
               F                         Flatten, yielding
                                         [198, 198, 198, 110, 110, 110].
                FF                       Twice more. Does nothing.
                  Q                      Unique; yield [198, 110].
                   QQ                    Twice more. Does nothing.
                     Ọ                   Unordinal; convert the Unicode code points
                                         198 and 110 to 'Æ' and 'n'.
                      ỌỌ                 Twice more. Does nothing.
                        µµµ              Begin three monadic chains, all with
                                         argument s := "Æn".
                           ḟ             Filter-false; remove the characters of s
                                         from s, yielding "".
                            ḟḟ           Twice more. Does nothing.
                              ;;;¹       Concatenate with s three times, yielding
                                         "ÆnÆnÆn".
                                  ¹¹     Identity function. Does nothing.
                                    V    Eval the resulting Jelly code, i.e.,
                                         call the next-prime atom thrice, with
                                         initial implicit argument 0.
                                     VV  Eval two more times. This is a no-op
                                         on integers.

1
Це, безумовно, потребує пояснення ... і залежно від того, як це викладено, це може бути єдиною мовою, яка може це зробити?
Значення чорнила

6
Що як? Це просто занадто швидко.
клісмік

@ValueInk Я змінив свою відповідь.
Денніс

21

GS2 ( фіксувати 67fea47 ), 6 3 байти

dnR

Як це працює

Як і більшість команд, GS2 dперевантажені. Спочатку на стеці є порожній список (вхід чи його відсутність), тому dобчислюється його сума. Після першої ітерації на стеці є 0 і dобчислює його паритет (також 0 ). Таким чином, незалежно від того, скільки разів ми повторюємо d, результат завжди буде одиничним 0 .

Наступна частина прямолінійна. Команда nспливає верхню частину стека і висуває наступне просте число. Таким чином, повторення n k разів обчислює k прем'єр.

Нарешті, команда просто застосовує str у верхній частині стека, що перетворює число у його рядкове подання та не впливає на рядки. Таким чином, незалежно від того, скільки разів ми повторюємо R, результатом буде представлення рядків k прем'єр.


2
що на землі !?
downrep_nation

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