Рассмотрим последовательность натуральных чисел, для которых N появляется как подстрока в N ^ 2. A018834
Выведите n
й элемент этой последовательности.
правила
Программа принимает только в n
качестве входных данных и выводит только одно число - N
.
Последовательность может быть 0-индексированной или 1-индексированной.
Sequence: 1 5 6 10 25 50 60 76 100 250 376 500 600 625 760 ...
Squares: 1 25 36 100 625 2500 3600 5776 10000 62500 141376 250000 360000 390625 577600 ...
Это код-гольф, поэтому выигрывает самый короткий код.
Ответы:
05AB1E , 6 байтов
1-индексированных
Попробуйте онлайн!
объяснение
источник
µ
команда просто ... Я хотел бы иметь это.Nth
число, соответствующее определенному условию.å
возвращает true, то у нас есть токN
на вершине стека (счетчик приращений и приращениеN
), но если нет, мы продолжаем (приращениеN
). Возможно, используйте что-то отличное от "N
", так как это конечный результат в теле вопроса: pPerl 6 ,
3331 байт-2 байта благодаря nwellnhof
Попробуйте онлайн!
Объяснение:
источник
JavaScript (ES6), 43 байта
Попробуйте онлайн!
Нерекурсивная версия, 47 байт
Попробуйте онлайн!
источник
n=23
только?MathGolf , 8 байт (работает для любого ввода в теории, но только для
n<10
практики)Попробуйте онлайн!
Альтернатива (работает на
n<49
практике и в теории)Разница лишь в том, что вместо создания списка со
10^(input)
значениями я создаю список с10^6
элементами. Это займет некоторое время, поэтому вы можете поменять первый байт на любой другой 1-байтовый литерал, чтобы проверить его.объяснение
Причина, по которой это решение не обрабатывает большие входные данные, состоит в том, что я заметил, что последовательность растет не экспоненциально, а больше, чем любой полином. Вот почему я использовал
10**n
оператор (я хотел использовать,2**n
но это не удалось для ввода 1). Это означает, что я создаю чрезвычайно большой массив даже для небольших входных данных, просто чтобы отфильтровать подавляющее большинство его, а затем взять один из первых элементов. Это чрезвычайно расточительно, но я не мог найти другой способ сделать это без увеличения количества байтов.источник
Common Lisp, 95 байт
Попробуйте онлайн!
источник
Чисто , 83 байта
Попробуйте онлайн!
источник
Желе , 6 байт
1-индексироваться.
Попробуйте онлайн!
Как?
Находит первое
n
из последовательности в виде списка , а затем дает хвост,N
.Если бы мы
0
считали натуральное число, мы могли бы использовать 1-индексированную полную программуẇ²$#Ṫ
для 5.источник
Japt,
1211 байтПопытайся
Попытайся
источник
Рубин , 45 байт
Попробуйте онлайн!
источник
Java 8,
666563 байта-1 байт благодаря @Shaggy .
-2 байта благодаря @Arnauld .
1-индексироваться.
Попробуйте онлайн.
Объяснение:
источник
Clojure , 81 байт
Попробуйте онлайн! (К сожалению, TIO, похоже, не поддерживает стандартную библиотеку строк Clojure)
Если бы Clojure имел более короткий импортирующий синтаксис или имел
includes?
метод в базовой библиотеке, это могло бы быть несколько конкурентным.clojure.string/includes?
один здесь длиннее, чем некоторые ответы здесь: /Так как ссылка TIO не работает, вот тестовый прогон. Число слева - это индекс (
n
) и результат (N
) - справа:Это должно быть в состоянии поддерживать любую ценность
n
; при условии, что вы готовы дождаться его окончания (поиск 50-го и 100-го целых чисел в последовательности занял около 15 минут). Clojure поддерживает произвольно большую целочисленную арифметику, поэтому, как только числа начинают расти, она начинает использоватьBigInt
s.источник
Древесный уголь , 25 байт
Попробуйте онлайн! Ссылка на подробную версию кода. 0 индексированные. Объяснение:
Вход
n
.Начните
N
с 1. (Или, это может начать подсчет, с0
которого вход 1 будет проиндексирован.)Повторяйте, пока мы не найдем
n
числа в последовательности.Приращение
N
.Если
N*N
содержитN
, то ...... декремент
n
.Версия для печати
N
.Мои дальнейшие попытки игры в гольф были заглушены углем: а) не иметь
if..then
исключений, кроме конца блока (который стоит 2 байта); б) не иметьContains
оператора (преобразовывающего выводFind
илиCount
в логическое значение, которое я мог бы вычесть изn
снова затрат 2 байта).источник
Редактировать (ответ на комментарии): Python 2, 76 байт
Хотел попробовать нерекурсивный метод. (Новичок в гольфе, любые советы будут великолепны!)
Спасибо и BMO, и Веданту Кандою!
источник
print(f(13))
в коде. Кроме тогоwhile 1:
,if c==1:return n
,c==1 can be c<2
`
являются избыточными, а за одним -c<2:
тоже, затем вы можете смешать табуляции и пробелы для отступа (как показано здесь ): 69 байтов . нет необходимости сохранять старую версию (она есть в истории редактирования для тех, кто интересуется), и почему бы не ссылаться на TIO (или аналогичную) / не использовать шаблон оттуда?Haskell, 60 байт
Попробуйте онлайн!
источник
Python 2 ,
4743 байта-4 байта благодаря Денису (добавление 1 к рекурсивному вызову вместо возврата
n-1
)Попробуйте онлайн!
Explantion / Ungolfed
Рекурсивная функция, принимающая два аргументас , н ; N считается до 1 , 2 , 3 … и каждый раз N в N2 это уменьшает с , Рекурсия заканчивается, как толькос = 0 :
источник
APL (Dyalog Extended) ,
3130 байтПопробуйте онлайн!
0 индексированные.
источник
(⍕⍺)⍷⍕
→⍺⍷⍥⍕
Perl 5
-p
, 33 байтаПопробуйте онлайн!
источник
Lua ,
13712379 байт-Спасибо @Jo King за 44 байта
Попробуйте онлайн!
источник
false/true
может быть0>1
/0<1
, скобки не нужны дляif
s иwhile
s, вы можете удалить большую часть пробелов после чисел (даже новых строк).Tcl , 82 байта
Попробуйте онлайн!
источник
proc S n {while {[incr j [regexp [incr i] [expr $i**2]]]-$n} {};return $i}
Приборка , 24 байта
Попробуйте онлайн!
Возвращает отложенный список, который при вызове как функция возвращает
n
th-й элемент в ряду.объяснение
источник