Для данного слова трактуйте каждую букву как ее число в английском алфавите (то есть a
становится 1, b
становится 2, z
становится 26 и т. Д.), И проверьте, все ли они, включая дубликаты, попарно взаимно просты .
Вводится ровно одно слово из строчных английских букв. Выводом является тот факт, что слово взаимно простое: любые значения истины / фальши, но только два их варианта. Стандартные лазейки запрещены.
Тестовые случаи:
man
:True
day
:True
(спасибо Эрджану Йохансену)led
:False
(l=12
иd=4
естьgcd=4
)mana
:True
(хотяa
встречается несколько раз, 1 и 1 взаимно просты)mom
:False
(gcd(13,13)=13)
)of
:False
(спасибо xnor; хотя15∤6
,gcd(15,6)=3
)a
:True
(если нет пар букв, трактуйте слово как взаимно простое)
Это код-гольф , поэтому выигрывает самый короткий код в байтах!
code-golf
decision-problem
number-theory
primes
bodqhrohro
источник
источник
0
если они взаимно просты, а1
если нет?day: True
of: False
бы иметь ложный пример, где никакое значение не кратно другому.Ответы:
Wolfram Language (Mathematica) , 36 байт
Попробуйте онлайн!
Wolfram Language (Mathematica) , 33 байта
Попробуйте онлайн!
источник
CoprimeQ@@(ToCharacterCode@#-96)&
на три байта короче.Желе , 10 байт
Попробуйте онлайн!
Как это устроено
источник
Haskell , 48 байтов
Попробуйте онлайн!
Очень просто: преобразует строку в список чисел, а затем проверяет, равен ли продукт LCM.
источник
Pyth , 9 байт
Тестирование
Объяснение:Пиф только что обошел Джелли?
источник
Python 2 -
122118 байт-4 байта благодаря @JonathanAllan
Это честно ужасно, но я потратил слишком много времени, чтобы не публиковать это.
Попробуйте онлайн
источник
96 for
~>96for
;lambda x,y:x*y
~>int.__mul__
.05AB1E , 11 байт
Попробуйте онлайн!
объяснение
источник
Θ
действительно необходим?Брахилог , 11 байт
Попробуйте онлайн!
объяснение
источник
Python 2 ,
776864 байтаПопробуйте онлайн!
По сути, (некоторая пара на входе не является взаимно простой), если и только если (существует число i> 1, которое делит более одного из входов).
источник
all
и<2
хотя?Python 3 ,
6159 байтИспользуя байты питона в качестве аргумента:
Последний делитель для проверки - 23, наибольшее простое число ниже 26.
Попробуйте онлайн!
Спасибо @Dennis за сохранение двух байтов.
источник
c%96%x<1for c in s
экономит 2 байта.Perl 6 ,
3432 байта-2 байта благодаря nwellnhof
Попробуйте онлайн!
Анонимный кодовый блок, который принимает строку и возвращает True или False. Если наименьшее общее кратное количество букв равно произведению букв, то у них нет общих делителей.
Объяснение:
источник
a
на0
LOLday
.J, 36 байт
Ungolfed
объяснение
Попробуйте онлайн!
источник
[:(1=[:*/+./~#&,~#\~:/#\)_96+a.&i.
для 34 байтов у вас был пробел в `1 = ':)JavaScript (Node.js) , 60 байт
Попробуйте онлайн!
Buffer
от Shieru Asakoto «s пост .источник
every(c=>c%32%v||n--,n=1)
.Желе , 11 байт
Попробуйте онлайн!
источник
ỊẠ
переворачивает логическое значение.MATL , 10 байт
Выходы
1
для взаимной выгоды, в0
противном случае.Попробуйте онлайн! Или проверьте все тестовые случаи .
объяснение
Рассмотрим ввод,
'man'
например.источник
Марковский алгоритм в интерпретации eMain (
474484463 байта,767876 правил)Первые 17 правил учитывают «составные буквы» в их «простых буквах», игнорируя множественность. (Например,
t
становится,be
потому что 20 факторов как произведение степени 2 и степени 5.)Следующие 36 правил (например,
cb->bc
) сортируют результирующие простые факторы.Следующие 9 правил (например,
bb->F
) заменяют повторяющийся простой множитель наF
, а затем еще 9 правил (например,b->
) избавляют от оставшихся отдельных букв.На этом этапе у нас либо пустая строка, либо строка из одного или нескольких
F
s, и последнее правило->!T
добавляет a!T
в начале. Тогда правилаFF->F
иTF->F
упростить результат либо!T
или!F
. На данный момент,!->.
правило применяется, говоря нам, чтобы избавиться!
и остановить: возвращениеT
за простое слово, и вF
противном случае.(Спасибо bodqhrohro за указание на ошибку в более ранней версии, из-за которой этот код выдавал пустую строку при вводе
a
.)источник
T
ниF
наa
TestCase.Python 3 ,
9089 байт-1 байт по номеру
Попробуйте онлайн!
Использовать как
f(*'man')
.источник
Сетчатка 0.8.2 , 45 байт
Попробуйте онлайн! Объяснение:
Вставьте разделители между каждой буквой и в начале и в конце.
Добавить
#
к каждой букве.Переместите каждую букву 1 обратно в алфавит, удалив
a
s. Затем повторите вышеуказанные операции, пока все буквы не будут удалены. Это преобразует каждую букву в алфавитный указатель на основе 1 в унарном формате.Проверьте, имеют ли любые два значения общий множитель больше 1. (Это может найти более одной пары букв с общим множителем, например, в слове
yearling
.)Убедитесь, что общих факторов не найдено.
источник
Библиотека R + Pracma, 75 байт
function(w){s=utf8ToInt(w)-96;all(apply(outer(s,s,pracma::gcd),1,prod)==s)}
Я использую
gcd
функцию вpracma
библиотеке, так как, насколько мне известно, R не имеет встроенного для этого. Я использую подход сравнения продукта gcds с самими числами.65 байт (кредит: @ J.Doe)
function(w)prod(outer(s<-utf8ToInt(w)-96,s,pracma::gcd))==prod(s)
источник
Japt , 14 байт
Попробуйте онлайн!
Принимает ввод как массив символов.
Как это устроено
источник
Рубин , 56 байт
Попробуйте онлайн!
источник
Java 10, 86 байт
Порт @Vincent 's Python 3 ответа .
Попробуйте онлайн.
Объяснение:
источник
Japt, 13 байт
Принимает ввод как символьный массив.
Попробуйте или проверьте все тесты
источник
q,
121111 байтовисточник
JavaScript (Node.js) ,
8782 байтаПопробуйте онлайн!
Оригинальный подход (87B)
Попробуйте онлайн!
источник
Stax , 16 байт
Запустите и отладьте его
объяснение
Выходы 1 для True, 0 для false.
Возможно, есть лучший способ сделать преобразование в числовую часть, но это работает.
источник
2SOF{96-F:!*
Дайте мне знать, если вы хотите узнать больше об этом. Первый бесплатный!APL (NARS), 16 символов, 32 байта
Этот метод использования другой использовал, что LCM () = × /, он быстрый, но переполняется, если входной массив достаточно длинный; другие альтернативные решения немного медленнее:
ниже это кажется в 10 раз быстрее (или +), чем просто над функциями
Я предпочитаю этот последний, потому что он проще, быстрее, надежнее (потому что меньше вероятность переполнения), легче писать и каким он должен быть (даже если у него больше байтов ...)
источник