Продолжение фракция ряда n
представляет собой часть следующего вида:
сходящиеся к n
.
Последовательность a
в непрерывной дроби обычно записывается как: [a 0 ; a 1 , a 2 , a 3 , ... a n ].
Мы напишем наши таким же образом, но с повторяющейся частью между точками с запятой.
Ваша цель - вернуть непрерывную дробь квадратного корня из n
.
Ввод: целое число n
. n
никогда не будет идеальным квадратом.
Вывод: продолжение доли sqrt(n)
.
Тестовые случаи:
2 -> [1; 2;]
3 -> [1; 1, 2;]
19 -> [4; 2, 1, 3, 1, 2, 8;]
Самый короткий код выигрывает. Удачи!
Ответы:
GolfScript (
6660 символов)Предупреждение: большая часть
?
это переменная,floor(sqrt(input))
а не встроенная переменная . Но первый - встроенный.Принимает ввод на стандартный ввод и выводит на стандартный вывод.
Псевдокод алгоритма (доказательство правильности в настоящее время оставлено в качестве упражнения для читателя):
И снова я обнаружил, что мне нужен единственный оператор, который берет
a b
стек и уходитa/b a%b
в стек.источник
Питон, 95
97(но правильно ...)При этом используются только целочисленная арифметика и деление по полу. Это даст правильные результаты для всех положительных целочисленных входных данных, хотя, если кто-то хочет использовать long, ему придется добавить символ; например
m=a=0L
. И, конечно ... подождите миллион лет, пока закончится пол моего бедняка.Выход:
редактировать: теперь с использованием алгоритма Питера Тейлора. Это
do...while
было весело.источник
*(c*c-n)
?Питон,
878280Это берет одно целое число и дает вывод как:
источник
x-int(x) -> x%1
, Я впечатлен :)Mathematica
3331Вывод в формате списка, который больше подходит для Mathematica. Примеры:
источник
ContinuedFraction@Sqrt@#&
Питон (
136 13396)Стандартный метод для продолженных фракций, чрезвычайно удачный.
источник
while 1:
. Вы также можете поместить большинство операторов в цикл while в одну строку.8 ;1;
для 74 и для 75; это не кажется правильным. Он висит на 76.С 137
Включая новую строку, при условии, что мне не нужно бросать свой квадратный корень.
Он работает на sqrt (139) и иногда содержит лишнюю точку с запятой в выходных данных, но я слишком устал работать над этим сегодня вечером :)
источник
Perl, 99 символов
Имеет ли не винт на 139, 151 и т.д. Испытано с числом в диапазоне от 1 до 9 цифр.
Примечание:
$%
,$=
и$-
все целые форсирования переменные.источник
APL (NARS), 111 символов, 222 байта
Функция f основана на алгоритме, найденном на странице http://mathworld.wolfram.com/PellEquation.html для решения уравнения Пелла. Эта функция f имеет все входные данные, а не отрицательное число (тоже тип дроби). Возможно, что-то идет не так, я помню, что, как я понимаю, есть проблема для больших дробных чисел, так как
так что будет одна функция sqrti (). По этой причине ввод дроби (и ввод целых чисел) должен быть <10 ^ 15. тестовое задание:
если аргумент является квадратом числа, он возвращает один список из 1 единственного элемента, квадрат этого числа
Если бы это зависело от меня, в одном упражнении без «codegolf» я бы предпочел предыдущее редактирование с использованием функции sqrti () ...
источник
fq
иa0
. также:(a×Q)-P
->P-⍨a×Q
Q←Q÷⍨
- nars поддерживаетQ÷⍨←
?