Додайте свій код


37

Вхідні дані

жодних вкладів для цього завдання

Змагання

Напишіть код, який виводить:
Перші 10 простих чисел, сума їхніх цифр дорівнює кількості байтів вашого коду

Приклади

Скажімо, ваш код, Co&%423@k"oo"який у 13 bytes
вашому коді повинен виводити [67, 139, 157, 193, 229, 283, 337, 373, 409, 463]
, це перші 10 простих чисел, сума яких .... ок, ви це отримали!

Якщо ваш код 8 bytes, ви повинні вивести[17, 53, 71, 107, 233, 251, 431, 503, 521, 701]

Правила

Ви повинні використовувати лише перші 10 ^ 8 простих чисел,
що означає, що всі ваші числа повинні бути <2038074743 = 10 ^ 8 простий

Якщо ви не можете знайти 10 простих чисел у цьому діапазоні, які відповідають вашим байтам, тоді вам доведеться відкоригувати свій код (можливо, вам доведеться навіть додати кілька байт!), Щоб знайти " робочу кількість байтів "

Просто виведіть 10 праймерів будь-яким способом, який вам подобається

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


1
Не можу редагувати коментар, тому я просто видаляю та репостую: Ось суть, що містить прайми, які вам потрібно буде вивести для даного побічного рахунку, а також їх індекси: посилання Оскільки я це зробив наївно, я лише перевірив, чи є сума до перших 10 ^ 7 прайменів. Як і деякі згадані відповіді, відсутні відсутні значення, які, можливо, співвідносяться з недосяжними цифровими сумами, хоча для більших сум це може бути не так (пам’ятайте, я перевірив лише перші 10 ^ 7 простих розмірів).
cole

"будь-яким способом вам подобається" : чи потрібно замовляти прайми?
Арнольд

@Arnauld Ні, але вони повинні бути на 10 меншими в будь-якому порядку

1
@KevinCruijssen Незважаючи на те, що ваша відповідь невірна, ви можете опублікувати її, щоб обговорити з іншими учасниками, щоб допомогти вам знайти кращу.

1
@TessellatingHeckler Я також вважаю, що скорочення 10 ^ 8 є досить довільним. Щоб переконатися, що всі десять заданих чисел мають цифру суми 350, і всі є простими числами, слід швидко. Однак, переконатися, що ці десять насправді є найменшими можливими, може бути складніше, я думаю.
Jeppe Stig Nielsen

Відповіді:


15

Нейм , 10 8 7 байт

-1 байт завдяки ASCII.

πᛦ𝐋Λ𝐬7𝔼

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

Виходи:

[7 43 61 151 223 241 313 331 421 601]

Це (ну, принаймні, підхід) є непереборним.

Пояснення

πᛦ𝐋Λ𝐬7𝔼

π        push 13 (yes, very unintuitive :P)
 ᛦ       square (13² = 169)
  𝐋      push the first 169 primes
   Λ     filter those that when the following are executed, evaluate to 1
    𝐬    sum its digits and...
     7𝔼  check for equality against 7

2
найкращий поки що .. !!!

νᛦ𝐋Λ𝐬7𝔼на 7 ... редагувати: π-> ν: p
Джонатан Аллан

@JonathanAllan Здається, ви були ніндзя лише ASCII. ;)
абсолютнолюдський

Ух, справді існує вказівка ​​проштовхувати перші російські прими? Акуратно!
isaac9A


6

Піт , 14 байт

.f&qsjZT14P_ZT

Спробуйте тут.

Це 14 байт і відбитків:

[59, 149, 167, 239, 257, 293, 347, 383, 419, 491]

Pyth , 16 байт

.f&qssM`Z16P_ZTZ

Спробуйте тут!

Зауважте, що це може бути 15 байт:, .f&qssM`Z16P_ZTZале немає простих чисел, у яких 15 є сумою їхніх цифр, оскільки 15ділиться на 3, що означає, що число також було б діленим на 3, отже, не буде простим.

Це 16 байт і друкує:

[79, 97, 277, 349, 367, 439, 457, 547, 619, 673]

Як?

Пояснення 1

.f&qsjZT16P_ZT - Full program.

.f&           T  - First 10 numbers that satisfy the following:

           P_Z     - Are prime and
    sjZT           - And their sum of digits
   q     14        - Equals 14.

Пояснення 2

.f&qssM`Z16P_ZTZ - Full program.

.f&           T  - First 10 numbers that satisfy the following:

           P_Z     - Are prime and
    ssM`Z          - And their sum of digits
   q     16        - Equals 16.

1
Молодці! і швидко!

"Дуже мало простих цілих чисел, у яких 15 є сумою їхніх цифр" - дійсно, тому що цифра суми, що ділиться на 3, означає ділення на 3:
Лінн

@Lynn О, звичайно,> _> - Я німий, вибач. Виправлено
пан Xcoder

6

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

↑10fȯ=13ΣdfṗN

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

Пояснення

            N    Take the (infinite) list of all natural numbers.
          fṗ     Select only the primes.
   fȯ            Filter again by the result of composing the following three functions:
         d         Get the decimal digits.
        Σ          Sum them.
     =13           Check whether the sum equals 13.
↑10              Take the first 10 primes in the result.

Майже golfed його до 10 байт, а один з результатів не так :( tio.run/##yygtzv7//1HbREODtPxDyywftU04sqHg/38A
Лео

@Leo Heh, було б дуже охайно, якби це спрацювало :)
Мартін Ендер

6

Haskell , 77 71 байт

x=take 10[i|i<-[1..],sum(read.pure<$>show i)==71,all((>0).rem i)[2..i-1]]

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

Збережено 6 байт завдяки Лайконі

За 71 байт:

[89999999,99899999,99998999,99999989,189989999,189998999,189999989,197999999,199898999,199979999]

всі ваші номери повинні бути <2038074743

1999999999 - це число з максимальною сумою цифр у дозволеному діапазоні, а ця сума - 82. Будь-яка програма, що перевищує 82 байти, не буде задовольняти умові. Я сподіваюся, що 77 байтів добре, але я не знаю (він все ще працює на моєму комп’ютері).

EDIT: трохи оптимізована версія дала 77 байт:

[699899999,779999999,788999999,789999989,797999999,798899999,799898999,799899899,799999799,879999899]



5

05AB1E , 10 байт

83LØʒSOTQ}

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

}Використовується в якості наповнювача, оскільки 9 є недійсним лічильник байтів.

Вихід: [19, 37, 73, 109, 127, 163, 181, 271, 307, 433]

Пояснення

83L        Push array [1, ..., 83], since 433 is the 83rd prime
   Ø       Map each to the nth prime
    ʒ      Get elements that return 1
     SO     When the sum of the digits
        Q   Equals
       T    10

Майже 8 байт

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

žyLØʒSO8Q

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

Вихід: [17, 53, 71, 107, 233, 251, 431, 503, 521, 701]

Пояснення

žy          Push number 128, since 701 is the 125th prime
  L         Push array [1, ..., 128]
   ØʒSO8Q   Map to nth primes and filter to those with a digit sum of 8 (see above)

3

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

Select[Prime@Range[10^6],Tr@IntegerDigits@#==52&,10]

{799999,998989,999979,1789999,1798999,1979899,1989979,1997899,1999969,2599999}

подякуйте @Not дерево на -6 байт


1
Ви можете сказати, Selectскільки речей ви хочете повернути:Select[Prime@Range[10^6],Tr@IntegerDigits@#==52&,10]
Не дерево

1
Select[Prime@Range[77705],Tr@IntegerDigits@#==50&]
Лінн

2

J, 29 байт

(#~(29=[:+/"."0@":)"0)p:i.872

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

Однозначно працює на REPL, ймовірно, працює і звичайна програма (не впевнений, як J робить вихід для програм чесним).

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

Пояснення

(#~(29=[:+/"."0@":)"0)p:i.872
                      p:i.872  First 872 primes
 #~                            Filter by
   (29=[:+/"."0@":)"0            Digital sum = 29
                   "0              For each
                ":                 Convert to string
           "."0                    Convert each character to a number
         +/                        Sum results
    29=                            Equate to 29

872 гарантує, що будуть використані лише перші 10 праймів, цифрова сума яких становить 29.


2

V , 73 71 байт

i8aa9
998a99
a98a
aa89
18998a9
18a8a
18a9989
197aa
199898a
1a7a9Ía/999

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

Просте стиснення заміни підрядків - я перевірив усі можливі результати відповідей, а потім зробив тестування "на якому є проста заміна рядків, що зберігає більшість символів". наприклад, генерування цієї таблиці . [редагувати: Я ще раз переглянув таблицю і побачив, що можу замість цього зробити версію 71 байт].

Вищі праймери мають більше довгих пробігів у 9, а найкраще, що я знайшов, було те, коли цифри складають до 73, візерунок 89999 -> 1 char знижує текст з 99 байт до 63 байт. Пошук способу скасувати "a" -> "89999" в решті 10 байт привів мене до В.


1

Japt , 19 байт

L²õ f_j ©Zìx ¥19ïA

Перевірте це


Пояснення

L²õ

Створити масив цілих чисел ( õ) від 1 до 100 ( L) у квадраті.

f_          Ã

Фільтр (f ), пропускаючи кожен через функцію, де Zзнаходиться поточний елемент.

j

Перевірте, чи Zце прем'єр.

©

Логічний І (&& ).

Zìx

Розділити Zна масив цифр (ì ) та зменшити на додавання ( x).

¥19

Перевірте рівність с 19 .

¯A

Slice ( ¯) до 10-го елемента та неявно виводить отриманий масив.


1

Japt , 19 байт

AÆ_j ©19¥Zì x «X´}a

Спробуйте в Інтернеті!з -Qпрапором для форматування масиву.

Виводить перші 10 простих чисел, числа яких додаються до 19:

[199, 379, 397, 487, 577, 739, 757, 829, 883, 919]

Зауважте, що це може бути гольф на 18 байт (ì xìx), але не існує простих ліній з цифрою 18.

Пояснення

Зобразіть масив [0, ..., 9]за допомогою наступної функції, де Xпоточне значення.

  _              }a

Поверніть перше ціле число, яке повертає істину, із наступної функції, де Zє поточне значення

   j ©

Перевірте, чи цей номер простий, і ...

      19¥Zì x

Сума ( x) цифр ( ì) Zдорівнює ( ¥) 19,

              «X´

І Xє хибною ( «є "і не", або &&!). Це також декременти X( ´).

Отримані масиви неявно виводяться.


О, гарно; ми зв'язали різні підходи.
Shaggy

1

PARI / GP, 40 байт

select(x->sumdigits(x)==40,primes(8600))

Не так багато гольфу про це (виберіть тих xіз сумою цифр 40 серед перших 8600 прайсів). Вихід:

[49999, 68899, 69997, 77899, 78889, 78979, 79699, 79987, 85999, 88789]


1

Рубін 2.4.1, 74 байти

Я ніколи не збирався бити одну з оптимізованих Codegolf мов, але все одно було цікаво це робити в Ruby. Розчарування того, що Prime не в Core, а натомість у стандартній бібліотеці. Я також розчарований, що не можу перемогти Хаскелл.

2.4.1 :014 > require'prime';2.step.lazy.select{|n|n.digits.sum==74&&n.prime?}.first(10)
=> [389999999, 398999999, 498989999, 498998999, 499898999, 499899989, 499979999, 499989989, 579989999, 588999899]

0

Парадок (v0.2.7 +), 10 байт (CP-1252)

5h¶fφTBŠT=

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

5h         .. 5 hundred
  ¶        .. Check if a number is prime...
   f       .. ...filter by the preceding block; converts 500
           .. to the range [0, 1, ..., 499]
    φ      .. Filter by the following block:
     T     .. Ten
      B    .. Base; convert to base-10 digits
       Š   .. Sum, resulting in the digit sum
        T  .. Ten
         = .. Check if (the digit sum and ten are) equal

Дещо сумнівно, оскільки він друкує всі числа без роздільника між ними. 11-байтна програма, яка друкує кожне число в окремому рядку:

nIè¶fφTBŠE=

Єдине, про що варто згадати, - це верхня межа, яку трохи важче побудувати: це 18² = 324.


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