Номер Kaprekar этого числа п-значный к , что, когда первый п или п-1 цифра к ^ 2 добавляются ко второму п цифры N ^ 2, то результат Н.
Примеры:
9^2 = 81. 8+1 = 9.
45^2 = 2025. 20+25 = 45.
297^2 = 88,209. 88+209 = 297
Последовательность Капрекара начинается с 1.
Напишите программу, которая вычисляет и выводит первые n чисел Капрекара, где n находится в диапазоне, но не ограничивается диапазоном, от 1 до 100. Каждое число Капрекара должно быть отделено пробелом и ничем иным.
Больше номеров Капрекара можно найти здесь, чтобы проверить вашу программу, но этот ресурс НЕ МОЖЕТ использоваться для помощи в вычислениях - другими словами, без жесткого кодирования, чтения из этого источника или использования его в любом другом эксплойте. Кстати - все числа должны быть сгенерированы вашей программой.
Самый короткий код выигрывает.
n
не менее 100.Ответы:
Perl - 63 байта
Считая Шебанг одним байтом. Вклад взят из
stdin
.Это имеет приемлемое время выполнения для n ≤ 50 , после чего оно становится немного медленным.
Пример использования:
источник
С
109106n
до 17 было бы хорошо , чтобы удалитьlong long
,1
глупы ...источник
(i-i*i/x-i*i%x)||printf(...)
.x
иi
в глобальной области вместоfor
цикла, чтобы сохранить пару символов.Mathematica
144154Тестовое задание
источник
Javascript 96
Выход :
источник
for(i=0,n=prompt(s='');n;i++){t=''+i*i;if(t.substr(0,l=t.length/2)==i-t.substr(l))n--,s+=i+' '}s
питон - 98
Я использовал красивую нарезку питона, чтобы сбрить несколько символов.
источник
C # - 255 символов.
x - число чисел Капрекара, которое вы хотите найти в коде. Это было проверено в диапазоне от 1 до 100, но должно поддерживать намного больше, чем это. Для возвращения 100 номеров потребовалось два с четверть часа, хотя первые 50 заняли около 1 секунды - после этого дела постепенно замедлились.
Выход:
Выложен этот код следующим образом;
Я хотел бы знать, если это может быть сокращено дальше.
источник
C
907675 байтисточник
Python 2.7, 144 (включая переводы строки)
Выход для с = 10:
Выход для u = 20:
источник
R, 99 символов
При
i
половине числа,k^2
округленного в большую сторону, здесь выполняется оценка, является ли число k капрекарским, путем сложения частного и целого числа деленияk^2
на10^i
(коэффициент, являющийся левой половиной цифр, округленных в меньшую сторону, и остаток правой половины округляется).источник
bash + sed, 75 символов
Bash выполняет целочисленную арифметику и представляет числа в виде десятичных строк; эти атрибуты полезны для игры в гольф. Также предполагается, что необъявленные / неназначенные переменные имеют значение 0 при выполнении арифметики.
Это раздражало меня, чтобы поместить
10#
туда, но что-то вроде этого необходимо, если вторая половина разделения начинается с0
. При выполнении арифметики bash рассматривает такие числа как восьмеричные, если основание не указано явно.источник
Python 3.3 - 117 символов
Каждый уровень отступа и каждая новая строка, кроме последнего, все учитываются на 1 символ. Я думаю, что это справедливо для кода Python. Скрипт ожидает от пользователя ввода числа Капрекара для вычисления.
источник
J - 64
Вроде некрасиво, но все же. Он проверяет все числа до одного миллиона, затем берет
n
их, поэтому он работает только для n <= 50.n
где поставить входисточник