Приятное число (согласно этому определению) - это число, которое можно передать через следующий процесс (давайте использовать 41802000
в качестве примера):
- Разделите одинаковые номера в конце (
41802000 => [41802, 000]
) - Отсортируйте первую половину цифр и возьмите максимум (
[41802, 000] => [8, 000]
) - Возьмите длину последнего элемента. Вызовите результирующие элементы A и B (
[8, 000] => A=8, B=3
) - Является ли N B = A для любого целого числа
N
? (True
в этом примере; 2 3 = 8)
Если ввод происходит в результате True
следующего процесса, это считается приятным.
Ваша задача - взять целое число x
и вывести, x
является ли число приятным. Вы можете вывести любые два разных значения для truey и falsey, но, пожалуйста, укажите, что вы используете в своем ответе. x
гарантированно имеет как минимум две разные цифры (например 111
, это неверный ввод). Как и в большинстве задач, вы можете взять x
в виде строки или списка цифр.
Это код-гольф, поэтому выигрывает самый короткий код в байтах .
Контрольные примеры
Input Output
41802000 1
100 1
123456788 0
451111111 0
234543454545444 0
12 1
41902000 0
92599 1
code-golf
math
decision-problem
Caird Coneheringaahing
источник
источник
list of digits
- будет ли это список цифровых символов ASCII или список целых чисел от 0-9Ответы:
APL (Dyalog) , 36 байт
Попробуйте онлайн!
Как?
Почти стихотворение.
⌽⍵
- один раз изменить вход,1,2=/
- получить список различий.⌊\
- сохранить только первую группу единиц,⌽
- и переверните его, чтобы завершить.o←
- присвоитьo
,~o
- переключать нули и нули,⍵/⍨
- фильтруйте вход с ним,⍎¨
- превратить результат в список каждой цифры,⌈/
- и получите максимум. (это)⍵/⍨o
- отфильтруйте вход с помощьюo
unalt (ered),≢
- и возьми длину, это было бы B.÷
- разделить на один результат,*
- и возьми себе эту власть.⊢≡⌊
- целое число?источник
05AB1E , 11 байт
Попробуйте онлайн!
объяснение
Эминья спасла 1 байт.
Полагается на тот факт, что если A является положительным целым числом N, возведенным в степень B , то N = A 1 / B , следовательно, оно должно быть целым числом.
источник
UZX
должен работать вместоs{θs
41902000
(должна быть ложной).418802000
Haskell ,
85757271 байтИзменить : -10 байт, взяв список цифр вместо строки. Спасибо WhatToDo за указание, что это разрешено. -3 байта благодаря решению Ourous в Clean . -1 байт благодаря пользователю 28667 .
Попробуйте онлайн! Вводит в виде списка цифр. Пример использования:
f [4,1,8,0,2,0,0,0]
доходностьTrue
.Объяснение:
Учитывая вход
s=[4,1,8,0,2,0,0,0]
, мыreverse
список и выделить ведущие элементы сspan(==last s)
:([0,0,0],[2,0,8,1,4])
. Сравнение шаблонов по(b,a)
урожайностиb=[0,0,0]
иa=[2,0,8,1,4]
.В список постижение
or[n^length b==maximum a|n<-[1..a]]
проверяет , является ли любое целое числоn
в диапазоне от1
до9
удовлетворяетn^length b==maximum a
, то естьn^3=8
.источник
a
не удастся в таких случаях, как477
.b
, но проверяю каждое целое числоn
от0
до9
(ранее от0
доa
). Это точно спецификация, насколько я вижу.Haskell ,
10489 байт@Laikoni нашел более короткое решение , но это лучшее, что я мог сделать. Спасибо @Laikoni за сообщение, что мы также можем принимать списки цифр в качестве входных данных.
Объяснение:
Попробуйте онлайн!
источник
any(==a)
когда вы могли бы использоватьelem a
?2888
?head.maximum
все же короче, чемmaximum.concat
на 2 байта, и сохраняет функциональность.R , 80 байт
Попробуйте онлайн!
Пользы
utf8ToInt - 48
для разделения числа на цифры. Это выдает предупреждение от преобразования в строку.С помощью rle получите количество завершающих цифр и максимальное значение первых цифр. Верните true, если любое значение из диапазона от 0 до максимального значения до степени конечного счетчика равно максимальному значению.
Я думаю, что есть еще возможности для игры в гольф, но это может подождать до завтра.
источник
function(x,R=rle(rev(utf8ToInt(x)-48)))!max(R$v[-1])^(1/R$l[1])%%1
(66 байтов, принимаяx
в качестве строки)Желе , 11 байт
Вводит в виде списка цифр.
Попробуйте онлайн!
Как это работает
источник
R, 66 байт
Этот ответ более или менее является смесью ответов MickyT и NofP , и по их запросу, вот он:
Он принимает х в виде строки.
источник
JavaScript (ES7), 66 байт
Принимает ввод в виде строки или массива символов. Возвращает логическое значение.
Контрольные примеры
Показать фрагмент кода
источник
Чисто ,
13012811893 байтаОпределяет функцию
@
, беря список целых цифр.Попробуйте онлайн!
источник
Python 2 ,
9578 байтПопробуйте онлайн!
источник
i
вы можете сброситьlen
до 78 байтовR , 93 байта
Попробуйте онлайн!
Код принимает целое число в качестве входных данных и возвращает FALSE, если число приятно, и TRUE в противном случае.
источник
Python 3 ,
8885 байтUngolfed:
True
илиFalse
.a ** (1 / b)
будет по меньшей мере 0,5 от b √a, для которого требуется значение выше 2 53 (или любого другого значения, основанного на осях с плавающей точкой и мантиссе длина Python случается использовать, смотритеsys.float_info
).источник
int
иrange
. (В какой-то момент стало бы более целесообразным оценивать диапазон поиска на основе,a^(1/b)
чем рассчитывать большие количества мощностей.)C (gcc) ,
144126117 байтПопробуйте онлайн!
источник
Рубин , 64 байта
Ввод в виде строки, возвращает true, если:
Попробуйте онлайн!
источник
Perl 6 , 55 байт
Попробуйте онлайн!
После вычисления начального регулярного выражения, которое может быть успешным только в том случае, если входное значение является положительным целым
$0
числом, содержит начальную часть числа, и$1
содержит содержит завершающие повторяющиеся цифры.comb
Метод без аргументов, применяется к строке, возвращает список символов, которые в числовом контексте значение длины списка. Так$0.comb.max
самая большая из цифр в префиксе, и$1.comb
это длина суффикса.Затем мы проверяем
any(^10)
, равняется ли (то есть, ор-соединение чисел от 0 до 9), когда оно увеличено до степени длины суффикса, самой большой цифре в префиксе. Вso
силах булевых оценок полученного перехода, которые иначе было бы просто прекрасно сами по себе как ценность truthy, но проблема требует только два различных значений , которые будут возвращены.источник
.
вместо\d
.Котлин , 106 байт
Вывод: правда / ложь
Попробуйте онлайн!
источник
Добавить ++ , 21 байт
Попробуйте онлайн!
Прошло 3 с половиной месяца, надеюсь, я никого не ниндзя.
источник
C # (.NET Core) , 132 байта
Попробуйте онлайн!
Подтверждения
-12 байт благодаря @KevinCruijssen
DeGolfed
источник
i=n.Length-2;for(;i>=0;i--)
можно играть в гольфi=n.Length-1;for(;i-->0;)
и&&
можно играть в гольф&
.using System;
и используяSystem.Math.Pow
напрямую.-48
можно использовать для -3 байта.Japt ,
2618 байтПопробуйте онлайн!
Принимает ввод в виде строки, возвращает
1
для приятных чисел, в0
противном случае.Краткое объяснение:
Возьмите первый вход и разделите его по значениям где
(x,y) => x===y
true. Например,'41802000'
чтобы['4','1','8','0','2','000']
.Возьмем массив из первого шага, удалить последний элемент и получить его длину, получая B .
Найдите самый большой элемент в оставшемся массиве, получая A , возьмите его в степень
1/B
и затем верните, если результат делится на один.Впервые работая с Japt, очень открыт для любых рекомендаций.
Срезано на 8 байт благодаря ETHproductions .
источник
ó¶
. 2) Не уверен, почему у вас естьv
во второй строке, так как он просто преобразует строку в нижний регистр и не влияет на длину ;-) 3) Вы можете избежать!(U
на последней строке, изменив%1
наv1
, который возвращает,1
если субъект делится на 1 или0
иным образом.Clojure, 168 байтов
Попробуйте онлайн!
источник
Древесный уголь , 33 байта
Попробуйте онлайн! Ссылка на подробную версию кода. Выходы
-
для приятных номеров. Объяснение:Разделить ввод
q
на символы.Удалите последний символ из
q
и нажмите егоu
(предопределено в пустой список).Повторно нажимайте и нажимайте, пока последний символ
q
является первым символомu
.Возьмите максимальную цифру
q
и возведите ее в степень, равную обратной длинеu
, затем проверьте, является ли результат целым числом.источник
Python 2 ,
9185 байтПопробуйте онлайн!
источник
Perl 5 , 73 + 1 (
-p
) = 74 байтаПопробуйте онлайн!
источник
Java 8, 125 байт
Порт ответа @ Ayb4btu на C # .NET .
Попробуйте онлайн.
Объяснение:
источник
Пип ,
322221 байтИспользуется
1
для фальси и0
для правды , сохраняя байт. Попробуйте онлайн!источник
Pyth, 29 байт
Тестирование
Перевод Python 3:источник