Вдохновленный испечь кусочек пи
Вызов
С учетом входных данных 3 <= n <= 100
и 3 <= y <= n
построить n x n
матрицу десятичной части pi
( 14159...
), начиная с верхнего левого угла. Затем возьмите верхний правый треугольник размера y x y
и объедините его вместе. Выведите полученное число.
Например, для ввода n = 5
, y = 3
следующая матрица строится
14159
26535
89793
23846
26433
Тогда верхний правый 3 x 3
треугольник будет
159
35
3
так 159353
и выход.
вход
Два целых числа - n
представляющие размер квадратной матрицы цифр числа пи и y
представляющие верхний правый треугольник - в любом удобном формате .
Выход
- Результирующее нарезанное и объединенное число, либо напечатанное / выведенное на экран, возвращенное в виде строки и т. Д.
- Конечный / ведущий пробел является необязательным, если в выводе нет пробелов (т. Е.
159 35 3
Или тому подобное будет недействительным). - Обратите внимание, что, поскольку мы явно ищем цифры
pi
, а не аппроксимацию или математический расчет, ответы не должны округляться до последней цифры матрицы.
правила
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
- Либо полная программа или функция приемлемы.
- Стандартные лазейки запрещены.
Примеры
n y output
-------------
3 3 141923
5 3 159353
6 4 1592589383
6 6 141592535893238643794
20 12 358979323846950288419715820974944628620899211706792306647223172745025559196615
Ответы:
05AB1E , 19 байтов
Использует кодировку CP-1252 .
Попробуйте онлайн!
объяснение
n=5, y=3
используется напримеристочник
Python 2 (с симпли), 100 байт
Без симптомов,
260 246 244 233 231218 байтЭто использует «Алгоритм Spigot для Пи» Стенли Рабиновича и Стэна Вагона.
Стандартные аргументы должны были
a,b,c,d,e,f=0,1,1,1,3,3
бы дать первую цифру числа пи,3
так как это не требуется, алгоритм инициализируется до точки, до1
которой получен результат, что сохраняет два байта, хотяa
иb
длиннее, поскольку результат не требует нарезки иi
может начинаться с0
а не-1
.Достигает предела рекурсии по умолчанию для последнего тестового случая.
Использует
//
для первого из делений, чтобы егоstr(v)
можно было заменить на`v`
(в противном случае он закончилсяL
бы долго).repl.it
Нерекурсивная версия для 232 байтов, которая также оценивает последний контрольный пример:
repl.it (первый отступ - один пробел, второй отступ - одна вкладка)
источник
Mathematica, 82 байта
источник
#&@@
вместо[[1]]
.1415926535979323846433832798841971937510749448164899259
; последняя9
- это 100-я цифра числа пи, а 101-я8
- без округления)MATL,
232227 байт1 байт сохранен благодаря @Luis
Попробуйте онлайн
объяснение
источник
Perl, 67 байт
Требуется опция командной строки
-nMbignum=bpi
, считается 12. Вход берется из стандартного ввода.Пример использования
источник
C #,
232 байта268 байтовРедактировать:
Первоначально я использовал постоянную строку для Pi вне метода, но, похоже, это было обманом. Мне пришлось использовать значение C # Math.PI, которое имеет только 14 десятичных знаков, поэтому самое высокое
m
значение, которое я могу использовать, - 3. Вернуться к чертежной доске ...Golfed:
Ungolfed:
Не самый короткий ответ, но я был просто счастлив, что решил этот ...
Тестовый вывод:
5 3 1593536 4 15925893836 6 14159253589323864379420 12 358979323846950288419715820974944628620899211706792306647223172745025559196615источник
p
и это не является встроенным в язык (что я вполне уверен, что это не так), вам нужно будет включить это в свой счет байтов.