задача
Prepend, append-Sequence определяется рекурсивно, как это
- а (1) = 1
- a (n) = a (n-1) .n, если n четное
- a (n) = na (n-1), если n нечетно
где . представляет целочисленную конкатенацию.
Итак, первые несколько терминов: 1,12,312,3124,53124,531246,7531246,...
это A053064 .
Ваша задача, учитывая целое число a> 0, чтобы вернуть n , так, чтобы n- й элемент в prepend, append-Sequence был равен a, и если такого n не существует, вернуть 0, отрицательное число или ошибку и т. Д.
правила
- Входные данные могут быть приняты как целое число, строка, список символов / цифр и т. Д.
- Вывод может быть напечатан в STDOUT или возвращен (целое число, строка и т. Д. В порядке)
- При неверном вводе и в случае, если такого n не существует, ваша программа может делать что угодно, но возвращать положительное целое число (например, цикл навсегда, возврат 0 и т. Д.)
- Вы можете использовать 0-индексирование, но тогда вывод, если n не существует, не может быть 0
Контрольные примеры
1 -> 1
12 -> 2
21 -> 0
123 -> 0
312 -> 3
213 -> 0
211917151311975312468101214161820 -> 21
2119171513119753102468101214161820 -> 0
333129272523211917151311975312468101214161820222426283031 -> 0
999795939189878583817977757371696765636159575553514947454341393735333129272523211917151311975312468101214161820222426283032343638404244464850525456586062646668707274767880828486889092949698100 -> 100
a(n-1)*(int(log(n))+1)+n
аn*(int(log(n))+1)+a(n-1)
?Ответы:
JavaScript (ES6), 40 байт
Принимает ввод в виде строки. Выдает ошибку рекурсии, если индекс не найден.
демонстрация
Показать фрагмент кода
источник
f=(n,s=k='1')=>n-s?f(n,++k&1?k+s:s+k):k
C # (.NET Core) ,
83, 80, 60,59 байт.Попробуйте онлайн!
Принимает ввод как строку в лямбда-функцию. 1-индексироваться. Возвращает индекс значения для правдивых или бесконечных циклов для «фальси»
источник
Python 2 , 63 байта
-1 байт благодаря @EriktheOutgolfer .
Попробуйте онлайн!
Python 2 , 64 байта
-18 байт благодаря @officialaimm , потому что я не заметил, что допускается ошибка!
Попробуйте онлайн!
Python 2 , 82 байта (не зацикливается вечно)
Этот возвращается
0
для неверных входных данных.Попробуйте онлайн!
источник
f=lambda x,i='1',j=2:i!=`x`and f(x,[i+`j`,`j`+i][j%2],j+1)or~-j
sys.setrecursionlimit()
. Можете ли вы предоставить TIO?x=1
? Илиx=12
? Я думал, что это только бросило такую ошибку по крайней мереx=151311975312468101214
или что-то.Желе , 12 байт
Попробуйте онлайн!
Объяснение:
источник
05AB1E , 14 байтов
Попробуйте онлайн! или как тестовый набор
объяснение
0 индексируется .
Возвращает -1, если вход не находится в последовательности.
источник
g
удаленным и сокращенным дополнением / препендом. Я удалю свой ответR , 73 байта
Читает из стандартного ввода и возвращает значение индекса (неявно печатается). Бесконечные циклы, когда значение отсутствует в последовательности.
F
по умолчанию,FALSE
который приводится0
при использовании в арифметике.Попробуйте онлайн!
источник
Mathematica, 135 байт
источник
Желе ,
19 1815 байтМонадическая ссылка, берущая и возвращающая целые числа.
Попробуйте онлайн! (очень медленно - занимает около 50 секунд на TIO только для того, чтобы подтвердить, что
3124
это индекс4
)Для гораздо более быстрой версии используйте предыдущий 18-байтовый код (проверяется только длина ввода, что достаточно).
Как?
источник
211917151311975312468101214161820
?Swift 4 , 92 байта
Это делает бесконечные циклы для недопустимых случаев, поэтому я не включил их в ссылку для тестирования.
Тестирование.
Забавно, это дольше с закрытием:
Тестирование.
источник
Haskell ,
11585 байтПопробуйте онлайн!
источник
Perl 5 , 54 + 1 (-n) = 55 байт
Попробуйте онлайн!
Ничего не возвращает, если не найден.
источник
Haskell,
757157 байтПринимает
n
как строку.Попробуйте онлайн!
источник