Последовательность из n> 0 целых чисел называется веселой перемычкой, если абсолютные значения разности между последовательными элементами принимают все значения от 1 до n-1.
Таким образом, последовательность [4,1,2,4] имеет абсолютные различия [3,1,2], что эквивалентно набору [1,2,3] (от 1 до n-1, где n - длина исходной последовательности) так что это веселый джемпер.
Последовательности имеют длину n> 0.
Предположим, что n = 1 - веселая перемычка.
Простой режим: не беспокойтесь о stdin / stdout. Просто функция, которая принимает аргументы и возвращает что-то, что указывает на веселье или нет
Жесткий режим: ввод в stdin (через пробел) и вывод «Jolly» / «Not jolly». Вопросы капитализации.
Это код гольф.
РЕДАКТИРОВАТЬ: Последовательности могут содержать отрицательные целые числа, и ввод в stdin разделены пробелом.
$ jolly 2 -1 0 2
Jolly
$ jolly 19 22 24 25
Jolly
$ jolly 19 22 24 21
Not jolly
Ответы:
Haskell
Легко 4 персонажа
Возвращает список веселых целых чисел тогда и только тогда, когда в качестве входных данных приводится список веселых целых чисел. Это законно на основе «Просто функция, которая принимает аргументы и возвращает что-то, что указывает на веселье или нет».
Альтернативное простое решение с 61 символом:
Принимает список и возвращает пустой список, если последовательность веселая.
источник
[1,3]
это не весело, не так ли? Я думаю, что вы должны повторитьlength n-1
вместо.Ruby,
9293 символаЖесткая версия с вводом на STDIN.
Если вы начнете с
-pa
(считается 4), вы можете сохранить 5 символов:источник
-pa
.Java (Hard)
Предполагается, что ввод осуществляется через стандартный ввод. (не через аргументы командной строки, как в примере)
Гольф - 325
Un-Golfed
источник
Scala, легкий режим, 123 символа
Для запуска или тестирования на ideone.com:
источник
Golfscript, легкий режим,
2118 символовПринимает аргументы как массив целых чисел в стеке, а в стеке ничего больше; оставляет 1 в стеке, если это весело, и 0 в противном случае. Чтобы взять ввод в stdin как список целых, разделенных пробелами, добавьте
и вывести «Jolly» / «Not Jolly» (при условии, что мы превращаем это в программу) postpend
источник
[4 1 2 4]
, нет4 1 2 4
).J (легкий), 18
J (тяжело), 68
источник
Брахилог , 11 байт (легкий)
Попробуйте онлайн!
s₂ᶠ-ᵐ
- Последовательные различияȧᵐ
- абсолютные значенияo
- Сортировать~⟦₁
- Результат в диапазоне 1 к чему-то?источник
J, 30
26легкий режим, 8176жесткий режимредактировать: обрабатывать списки короче 3, исправить чтение стандартного ввода
Первая строка отвечает за простой режим, вторая добавляет жесткий режим.
J обычно читает справа налево:
2-/\
: для каждых двух последовательных чисел в списке возьмите разницу|
: абсолютная величина/:~
: сортировка по возрастанию>:@i.@#
: От 1 до n , для списка из n чисел=
: сравнить отсортированные различия с последовательностью (используя J "fork")*/
: умножить все элементарные логические значения; если все сравнения были 1, их продукт равен 1, так что это веселоисточник
1 3
.Рубин, 97
102106(жесткий)Возможно, так как все остальные:
Ввод принят на стандартный ввод.
источник
(1..d.size).to_a
на[*1..d.size]
. Переключение операндов теперь возможно, сохраняется еще один (всего -5 символов).D
легкий (
10383 символа)возвращает сумму 1..i.length на Jolly, если это не так, если это не так (здесь немного правил)
жесткий (142 символа)
ввод разделяется пробелами и заканчивается на EOF
источник
Groovy
Легко: 78
Жесткий: 151
источник
PowerShell, жесткий, 117
126История:
$null
на несуществующую переменнуюисточник
Scala
Быстрый удар - возможно, возможны улучшения.
Легко: 77
Жесткий: 124
источник
Q, 64 (сложно), 30 (легко)
жесткий
легко
источник
J (легкий), 19 символов
Использование:
Вары похожи на ответ DCharness в , и я бы только добавил его в качестве комментария , но тот факт , что он не посетил с 23 февраля.
2-/\
принимает разницу между последовательными парами чисел,|
получает абсолютное значение каждого числа,/:~
сортирует по возрастанию,<:
уменьшает каждое число на 1,(=i.@#)
J крюк , который генерирует последовательность чисел от 0 до длины списка разностей - 1 (i.@#
) и сравнивает его с этим списком=
.*/
умножает список1
s и0
s, сгенерированных предыдущим глаголом.источник
x-:y
вместо того,*/x=y
чтобы сохранить персонажа.Scala easy: 138,
153, 170(был ошибочным, улучшился позже)ungolfed:
Идея заключается в том, что мы строим второй вывод:
Scala hard 172
182, 205(был ошибочным / улучшен):более или менее такой же, как указано выше.
источник
4 1 2 5
возвращает true. Тем не менее, мне так и не удалось обойти эту левую складку ...readLine
принимает данные с консоли, а не с STDIN ... (но вы можете использоватьargs
вместо этого)j("1")
бросаетUnsupportedOperationException: empty.max
PHP, легкий, 129
Для данного массива
$s
целых чисел:Негольфированная версия:
источник
Желе ,
76 байт (легкий)Попробуйте онлайн!
Принимает ввод в виде разделенных запятыми чисел в первом аргументе. Возвращает 1, если последовательность веселая, и 0, если это не так!
7-байтовое решение:
Попробуйте онлайн!
Принимает ввод в виде разделенных запятыми чисел в первом аргументе. Ничего не возвращает, если список представляет собой последовательность веселых перемычек, и что-то если это не так.
Добавление этой строки позволяет работать со сложными спецификациями:
Желе ,
2722 байта (сложно, обратная связь приветствуется!)Попробуйте онлайн!
27-байтовое (сложное) решение:
Попробуйте онлайн!
Принимает разделенные пробелом числа на
stdin
и выдает «Jolly» или «Not jolly».Объяснение:
Любая обратная связь высоко ценится!
источник
LR
естьJ
. Если вы напишите что-то вроде этого,IAṢ⁼J$
вы получите хороший результат 1/0, и вы можете использовать его для индексации“Not jolly“Jolly”
:ɠḲVIAṢ⁼J$ị“¢⁼D“¡KṀȥƘạ»
⁼
атоме, который удобен для сравнения только частей списков.Haskell ,
5957 байтПростой режим, возвращает веселье как логическое значение. Спасибо @Laikoni за два байта.
Попробуйте онлайн!
источник
Japt ,
3230 байт Hard-2 байта от @Shaggy
Попробуйте онлайн!
источник
Python 3, 117 (жесткий)
Попробуйте онлайн!
источник
JavaScript: 105 (простой режим)
Golfed:
Un-golfed:
источник
Perl, 89 (хард)
86 символов кода + 3 для запуска с
-p
опциейисточник
Javascript (жесткий): 138
источник
источник
R, Easy, 110
Использование:
источник
Python, 72 (легкий), 114 (жесткий)
Легко:
Hard :
источник
Python, 255 символов
источник
С, 119 (жесткий), 97 (легкий)
Простое решение читает входные данные из аргументов и возвращает 0 в качестве кода выхода, если входные данные представляют собой последовательность перемычек:
источник
APL (
504947, жесткий)Легко (24):
Функция принимает массив и возвращает 0 или 1.
источник