Учитывая список натуральных чисел, выведите, имеет ли каждая соседняя пара целых чисел в нем общий множитель. Другими словами, выведите truey тогда и только тогда, когда в списке нет двух соседних целых чисел.
В других терминах: учитывая список натуральных чисел [a 1 a 2 … a n ] , выведите
gcd (a 1 , a 2 )> 1 && gcd (a 2 , a 3 )> 1 &&… && gcd (a n − 1 , a n )> 1.
Список всегда будет содержать как минимум два элемента (n ≥ 2).
Тем не мение…
Эта задача также имеет ограниченный источник : кодовые точки в вашем ответе (в какой бы кодовой странице он ни находился) должны удовлетворять условию, которое проверяет ваша программа.
Например, print 2
это действительная программа. В качестве списка кодовых точек Unicode это [112 114 105 110 116 32 50] , которое удовлетворяет этому условию: 112 и 114 имеют коэффициент 2 ; и 114 и 105 имеют коэффициент 3 и т. д.
Тем не менее, main
это не может произойти в допустимой программе (извините!), Так как кодовые точки Unicode m
и a
, а именно 109 и 97 , взаимно просты. (К счастью, ваше представление не обязательно должно быть полной программой!)
Ваша программа не может содержать кодовую точку 0.
Контрольные примеры
Truthy:
[6 21] -> 1
[502 230 524 618 996] -> 1
[314 112 938 792 309] -> 1
[666 642 658 642 849 675 910 328 320] -> 1
[922 614 530 660 438 854 861 357 477] -> 1
Falsy:
[6 7] -> 0
[629 474 502 133 138] -> 0
[420 679 719 475 624] -> 0
[515 850 726 324 764 555 752 888 467] -> 0
[946 423 427 507 899 812 786 576 844] -> 0
Это код-гольф : выигрывает самый короткий код в байтах.
%)+/5;=CGIOSYaegkmq\DEL
.print 2
это действительно так, но);=ae
быть премьер-министром действительно сложно, я не подумал об этом… Интересно, может ли что-то вроде Haskell конкурировать?Ответы:
MATL , 14 байтов
Это выводит непустой вектор-столбец с ненулевыми числами как истинный, или вектор, содержащий по крайней мере нулевую запись как ложный.
Попробуйте онлайн!
Проверьте все контрольные примеры . Код
if
нижнего колонтитула содержит ветку для проверки правдивости / ложности.Поскольку MATL использует ASCII, исходный код кодируется как
который удовлетворяет требованию .
объяснение
источник
Haskell ,
103100 байтРЕДАКТИРОВАТЬ:
d<-fz
охрану для объединения и сокращения последних двух строк.f
является основной функцией, которая принимает список целых чисел и возвращает aBool
.Обратите внимание, что первые два
ԁ
s (только) - это символы кириллицы (коми) Unicode, и перед первым есть символ табуляции.Попробуйте онлайн! или проверить это на себе.
Как это работает
f
это основная функция. Все, что он делает, это заключает свой аргументԁ
в список синглтонов (потому что простое значение ASCII)
делает скобки гораздо более неудобным для использования, чем квадратные скобки), и вызываетzb
с этим и фиктивным аргументом (функция Haskell, какid
оказалось, имеет только нужные символы для соответствия Вот).=]
обычном ASCII невозможно получить один и тот же символ, кроме обоих, невозможно, поэтому аргумент именуется 2-байтовым символом UnicodeCYRILLIC SMALL LETTER KOMI DE (ԁ)
, значением кодовой точки3*7*61=U+0501
, которое соответствует всем этим и[
.f fz|bf<-fz=zb[bf]fz
.zb
принимает два аргумента: одноэлементный список, элемент которого является реальным списком рекурсивных чисел, и фиктивный аргумент,fz
необходимый только для полученияz
перед аргументами функции=
.z
вызывается с первыми двумя (именамиh
иp
), и, если это возвращаетTrue
,zb
рекурсивно в концеp:l
списка.zb
возвращаетсяTrue
. Поскольку=
за символом должен следовать символz
, самый простой способ сделать это - вызватьz
функцию, о которой известно, что она сама возвращает значениеTrue
.z
принимает два аргумента и рекурсивно вычисляет их наибольший общий делитель, используя вычитание (все остальные соответствующие целочисленные деления или функции gcd недоступны), возвращая,True
если оно больше единицы.0
, а вторым аргументом является gcd. В этой строке второй аргумент также названz
. Персонаж1
здесь неуклюжий, поэтомуz^0
используется, чтобы получить номер один.f
меньше второгоfz
, они меняются местами иz
возвращаются.z
повторяется (также меняются аргументы, хотя это только для того, чтобы избежать скобок).источник
05AB1E , 8 байтов
Код
Использует кодировку 05AB1E , которая дает нам следующий список кодов:
Попробуйте онлайн! или проверьте исходный код!
объяснение
Так как оператор gcd (
¿
) имеет простую кодовую точку, мне пришлось искать другие способы проверки взаимной простоты:источник
Ò
болееf
?Шелуха , 8 байт
Для входных данных True возвращает положительное целое число, для Falsy возвращает 0
Попробуйте онлайн! и протестирован на своих собственных кодовых точках
Использует кодовую страницу Husk
объяснение
источник
Ṡ
? Я также вижу это в документации в столбце "type" на странице команд и не могу разобраться с этим, поэтому хочу посмотреть его, чтобы я мог его изучить.Ṡ
в синтаксисе Haskell. Это переводит примерно наṠ(f,g,x) = f(g(x),x)
более распространенные языки.`Ṡ g f x = Ṡ f g x = f (g x) x
Japt ,
87 байтПроверьте это онлайн!
Кодовые точки:
объяснение
источник
Желе ,
119 байтСохранено 2 байта благодаря @ Джонатану Аллану .
Попробуйте онлайн!
У желе есть своя собственная кодовая страница, а кодовые точки каждого символа
Это проверяет числа, не являющиеся взаимно простыми, проверяя, если
lcm(a, b) != a*b
. Может быть более короткое решение, так как я просто отфильтровал символы с четными кодовыми точками.объяснение
источник
,
Это даже так, вы можете сделатьæln,P¥ð2\
на двоих меньше. Изменить: я бросил трейлингP
, сделайте это меньше: p)TI-BASIC, 38 байт
TI-BASIC токенизируется в одно- или двухбайтовые токены, как указано здесь .
Самыми хитрыми частями этого решения были:
Токен запятой представляет собой простое число (43), заставляя меня окружить его кратными 43 (в данном случае V-токен, который равен 86).
Gcd (токен - это большое простое число (47881), что означает, что его нельзя использовать вообще.
Жетоны для этой программы выходят:
объяснение
источник
Pyth , 15 байт
Попробуйте здесь или проверьте Test Suite.
Это совместная работа Эрика Аутгольфера и мистера Xcoder . Возвращает противоречивое значение (непустой список) для правдивых и пустой список для ложных.
ASCII-значение
Которые разделяют следующие факторы:
объяснение
Без требования ограниченного источника это была бы
7-байтная версия, выполняющая ту же задачу (-2 благодаря FryAmTheEggman ):объяснение
источник
Q
в конце s?.b
имеет переменные арности, и использование неявного ввода означает, что он выберет самое низкое (1) вместо запланированного (2).