Для заданного целого числа n >= 10
выведите среднее значение всех дедуплицированных поворотов целого числа.
Например, для ввода 123
вращениями являются 123
(без вращения), 231
(одно вращение) и 312
(два вращения). Среднее из тех, (123 + 231 + 312) / 3
или 222
.
В качестве другого примера возьмем 4928
. Повороты являются 4928
, 9284
, 2849
, и 8492
. Принимая среднее из этих четырех чисел равно 6388.25
.
В качестве другого примера, для ввода 445445
, Дедуплицируемые повороты 445445
, 454454
и 544544
, таким образом , выход 481481
.
Для ввода 777
есть только один дедуплицированный поворот, поэтому выходной 777
.
правила
- Если применимо, вы можете предположить, что ввод / вывод будет соответствовать целочисленному типу вашего языка.
- Вход и выход могут быть заданы любым удобным способом .
- Либо полная программа или функция приемлемы. Если функция, вы можете вернуть вывод, а не распечатать его.
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
code-golf
math
number-theory
AdmBorkBork
источник
источник
Ответы:
Python 3 ,
3836 байтПринимает цифры как отдельные аргументы. Спасибо @Rod за предложение Python 3, сэкономив 2 байта.
Попробуйте онлайн!
источник
APL (Дьялог) , 9 байт
Монадическая функция, принимающая вектор цифр в качестве аргумента.
Попробуйте онлайн!
Я беру среднее из цифр
+/÷≢
, затем повторяю его по длине ввода≢⍴
и, наконец, преобразовываю из базы 10.Концептуально, я беру сумму вращений (без переноса):
Это просто
4+2+9+8
повторяется 4 раза. Затем преобразование из базы10
(что делает перенос для меня) и деление на длину. Хотя я делю на длину раньше, потому что это эквивалентно и сохраняет байты.источник
Java 10,
163137767271 байт-36 байт благодаря @Nevay .
-61 байт благодаря @ OlivierGrégoire , создав порт ответа Python 3 @Dennis .
-1 байт, принимая входные данные в виде списка цифр вместо строки.
Объяснение:
Попробуйте онлайн.
источник
n->{var s=new java.util.HashSet();var r=0d;for(int l=n.length(),x;l-->0;)if(s.add(x=new Integer(n=n.substring(1)+n.charAt(0))))r+=x;return r/s.size();}
потоковый подход с 137 байтами:n->java.util.stream.IntStream.range(0,n.length()).map(i->new Integer(n.substring(i)+n.substring(0,i))).distinct().average().getAsDouble()
orElse(0)
вместоgetAsDouble()
.(int)
5 байтов байтов.Math.pow
уже позаботятся. Это сэкономит вам 3 байта.(int)
и*.1
это будет, например, вывод6388.888...
вместо6388.25
ввода4928
. И если бы я бросил всю вещь или просто.pow
Аняint
вместо этого, он будет выводить6388
.Шелуха , 5 байт
Попробуйте онлайн!
объяснение
Шелуха , 7 байт
Попробуйте онлайн!
объяснение
источник
5
байтовое решениеṙ
илиŀ
, и первый символ (слева) нетA
R ,
847364 байтаПопробуйте онлайн!
Ввод в виде списка цифр.
Спасибо MickyT за то, что он сбрил 11 байтов! Деннис доказал, что дедупликация не нужна, - 8 байтов.
источник
array(D,K+1:0)
короче, чемmatrix(D,K+1,K)
на байт.05AB1E , 9 байтов
Попробуйте онлайн!
источник
v
с нетy
, интересно.gFÀD})¨Osg/
был где я думал..æ = pop a compute permutations by function, usage: .æ<FUNC>}
команду? Я тоже не знаю, но это кажется подходящим для этого.Stax , 6 байт
Запустите и отладьте его
Эта программа принимает в качестве входных данных строку, разделенную кавычками, и выражает среднее значение как уменьшенную дробь. Например
777/1
, нет необходимости дублировать повороты. Это никогда не меняет результат.Распакованный, размазанный и прокомментированный, это выглядит так.
Запустите этот
источник
Perl 6 , 15 байт
Попробуйте онлайн!
Среднее значение - это среднее значение цифры, применяемое к каждой десятичной позиции, поэтому среднее число раз, равное 111 ....,
1 x $_
создает строку из 1 с, которая приводится к строкам путем умножения.Принимает список цифр в качестве ввода. Последовательность потребует .cache перед суммой, а для ввода числа или строки потребуется .comb.
источник
Wolfram Language (Mathematica) , 22 байта
Попробуйте онлайн!
источник
JavaScript (Node.js) , 43 байта
Попробуйте онлайн!
источник
Желе ,
65 байтПопробуйте онлайн!
Как это устроено
источник
Japt , 8 байт
Принимает ввод как массив строк из одной цифры.
Попытайся
объяснение
источник
APL (Dyalog Unicode) ,
2114 байтов SBCSПопробуйте онлайн!
Функция молчаливого префикса. Принимает ввод в виде строки.
Спасибо Адаму за 7-байтовое сохранение .
Как?
источник
Python 2,
8377 байтРЕДАКТИРОВАТЬ: -6 байт благодаря @ovs
источник
Древесный уголь , 11 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
источник
J , 10 байт
Это порт отличного APL-решения H.PWiz для J.
Принимает список цифр в качестве аргумента.
Объяснение:
+/%#
среднее число цифр (разделите%
сумму цифр+/
на их количество#
)#$
создает список копий среднего по количеству цифр10#.
преобразовать форму базы 10Попробуйте онлайн!
источник
Perl 5
-lpF
,2422 байтаПопробуйте онлайн!
Выполнение этого в виде списка цифр всего на 1 байт короче и похоже на обман:
Попробуйте онлайн!
источник
usrt
? : P/usrt
каталоге? В любом случае, исправлено. СпасибоРубин , 60 байтов
Попробуйте онлайн!
источник
Пари / ГП , 34 байта
Вводит в виде списка цифр.
Попробуйте онлайн!
источник
Рубин , 33 байта
Попробуйте онлайн!
Порт Денниса Python 3 ответа
Вот моя неудачная попытка (74 байта)
Попробуйте онлайн!
источник
C ++,
218208 байт-10 байт благодаря Захари
И, чтобы проверить:
источник
#include
и<
, и вы можете удалить все{}
вокруг++c;
иs+=v;
. Возможно, вы сможете переместитьint s=0
в начало с другими вашими переменными.n=0
второй цикл for, как это должно было быть достигнуто0
к тому времени.m/=10;m+=std::pow(10.f,c-1)*t;
=>m=m/10+std::pow(10.f,c-1)*t
. И не использоватьint
вместоauto
работы?int s=0;
с другими переменными, и вам нужны скобки вокругs+=v;
?n>0
=>n
может сработать.Pyth, 12 байт
Вероятно, это невозможно.
Попробуй это здесь!
источник
o
. Если вы сделаете это и сделаете ввод / вывод в виде списков цифр, вы можете уменьшить его до 8 байтов .Q
.J, 23 байта
Принимает ввод в виде строки
объяснение
источник
Matlab, 65 байт
Над этим поработаю, уверен, что это можно сделать лучше.
источник
Clojure, 139 байтов
Довольно неоптимальные возможности языка для преобразования последовательностей символов в целые числа.
источник
постоянный ток, 37 байт
Это полная программа, считывающая ввод и печатающая вывод:
Он работает, разделяя число на его цифры и умножая среднее значение цифр на соответствующую повторную цифру длины (которая создается на
d
ходу).источник