Номер холма - это число с одинаковыми цифрами в первом и последнем , но это еще не все. В числе холмов первые цифры строго возрастают , а последние цифры строго убывают. Самая большая цифра может быть повторена .
Вот пример номера холма:
12377731 | 1237... | ...731
^ same ^ | strictly increasing | strictly decreasing
---------+---------------------+---------------------
12377731
^^^ okay because largest digit can be repeated
Это не :
4588774 | ...8774
| ^^ not the largest digit
| so this has to be strictly decreasing
| but it's not, so not a hill number
Вызов
Если задано положительное целое число, напишите полную программу или функцию, которая возвращает true для чисел холмов, но ошибочно принимает другие значения.
Примечания:
- Ввод и вывод может быть в любом разумном формате .
- Это код-гольф, поэтому выигрывает самый короткий ответ на каждом языке!
Тестовые случаи
12321 -> Truthy
1233321 -> Truthy
99 -> Truthy
3 -> Truthy
234567992 -> Truthy
1232 -> Falsy
778896 -> Falsy
23232 -> Falsy
45566554 -> Falsy
5645 -> Falsy
code-golf
decision-problem
number-theory
u_ndefined
источник
источник
222222222
? Это плоский номер холма?222222222
является числом холма, наибольшая цифра равна 2 и, таким образом, может повторяться1230321
холма?Ответы:
Желе , 8 байт
Попробуйте онлайн!
Как это устроено
источник
JavaScript (ES6),
6254 байтаПринимает ввод в виде строки. Возвращает логическое значение.
Попробуйте онлайн!
комментарии
JavaScript (ES6), 65 байт
Попробуйте онлайн!
Как?
Пример:
Этот массив приведен к строке, которая дает:
Мы применяем следующее регулярное выражение:
Наконец, мы также проверяем,
p
равна ли последняя цифра первойs[0]
.источник
Pyth, 16 байт
Попробуйте набор тестов .
источник
Желе , 11 байт
Объяснение:
Попробуйте онлайн!
источник
Perl 6 , 39 байт
Попробуйте онлайн!
объяснение
источник
Python 2 ,
114112 байтПопробуйте онлайн!
источник
R 65 байт
Принимает строки. Взял идею проверки неизменности сортировки из ответа Pyth.
Попробуйте онлайн!
источник
05AB1E ,
19171312 байт-5 байт путем создания порта @lirtosiast «s Pyth ответ .
Попробуйте онлайн или проверьте все контрольные примеры .
Объяснение:
Â{RQ
альтернативно может быть(Â{Q
для того же количества байтов, где(
отрицает каждый знак: попробуйте это онлайн .источник
J, 23 байта
Идея украденная из желе отвечает. Просто хотел посмотреть, как быстро я смогу сделать это в J.
Попробуйте онлайн!
источник
MATL , 12 байт
Попробуйте онлайн!
объяснение
Ввод представляет собой строку цифр. Выход является
1
или0
. Номер222222
является номером холма в соответствии с этой программой. Сэкономили 2 байта, скопировав метод Денниса для проверки равенства первой и последней цифр.источник
Python 2 , 53 байта
Принимает ввод в виде строки. Вывод осуществляется через наличие или отсутствие исключения .
Попробуйте онлайн!
Python 2 , 62 байта
Принимает ввод в виде строки и возвращает логическое значение.
Попробуйте онлайн!
источник
Mathematica / Wolfram Language,
6964 байтаЧистая функция. Принимает ввод как целое число, возвращает
True
илиFalse
.Объяснение:
Первый пункт проверяет «горность»:
IntegerDigits
: Получить цифры от целого числа. Магазин вy
.-Differences
: Возьмите последовательные различия и переверните знаки.Sign
: Заменить каждую запись +1, если положительный, 0, если ноль, и -1, если отрицательный. Магазин вx
.Sort
: Сортировка списка +1, 0, -1 от наименьшего к наибольшему. Сравните с оригинальным списком вx
.Второе предложение проверяет, равны ли первая и последняя цифры.
Совет от @IanMiller для получения советов по уточнению этого кода.
источник
IntegerDigits
иDifferences
являются довольно длинными именами функций, немного раздражает.Sort[x=Sign@-Differences[y=IntegerDigits@#]]==x&&y[[1]]==Last@y&
Japt, 11 байт
Принимает ввод в виде массива цифр.
Попробуйте или запустите все тесты
источник
Сетчатка 0.8.2 , 52 байта
Попробуйте онлайн! Ссылка включает в себя тестовые случаи. Объяснение:
Преобразуйте каждую цифру в одинарный дважды, разделив ее
;
символом s и заканчивая символом,
s. Тем не менее, вы можете представить результат как первую цифру, а;
затем все пары соседних цифр, цифры каждой пары, разделенные,
и пары, разделенные;
s, s, затем еще один символ.;
, затем о последней цифре, затем о последней,
.Вычтите пары соседних цифр. Это оставляет
;,;
для равных цифр и1
s на большей стороне для неравных цифр. (Это может быть сделано как часть следующего регулярного выражения, но, очевидно, это не будет так уж и плохо).Сопоставьте первую цифру, затем любое количество пар восходящих цифр, затем любое количество пар равных цифр, затем любое количество пар нисходящих цифр, затем снова сопоставьте первую цифру в самом конце.
источник
Красный , 181 байт
Попробуйте онлайн!
Более читабельно:
источник
Powershell, 77 байт
Менее гольф тестовый скрипт:
Выход:
источник
C # (интерактивный компилятор Visual C #) , 161 байт
Попробуйте онлайн!
Вот краткий обзор того, как это работает ...
string
источник
Python 3 , 114 байт
Попробуйте онлайн!
Гораздо дольше, чем некоторые решения Python 2, но это основано на def, и мне это нравится.
источник
Рубин , 47 байтов
Попробуйте онлайн!
Ввод в виде массива цифр, вывод логический.
источник