Dada uma palavra, trate cada letra como seu número no alfabeto inglês ( a
se torna 1, b
se torna 2, z
se torna 26 e assim por diante) e verifique se todas elas, incluindo duplicatas, são coprime em pares .
A entrada é exatamente uma palavra de letras minúsculas em inglês. A saída é o fato de a palavra ser coprime: quaisquer valores de verdade / falsey, mas apenas duas variantes deles. As brechas padrão são proibidas.
Casos de teste:
man
:True
day
:True
(graças a Ørjan Johansen)led
:False
(l=12
ed=4
temgcd=4
)mana
:True
(emboraa
ocorra várias vezes, 1 e 1 são coprimes)mom
:False
(gcd(13,13)=13)
)of
:False
(graças a xnor; porém15∤6
,gcd(15,6)=3
)a
:True
(se não houver pares de letras, trate a palavra como coprime também)
Este é um código-golfe , então o código mais curto em bytes vence!
code-golf
decision-problem
number-theory
primes
bodqhrohro
fonte
fonte
0
se eles são coprime e1
se não?day: True
of: False
ter um exemplo falso onde nenhum valor é múltiplo de outro.Respostas:
Wolfram Language (Mathematica) , 36 bytes
Experimente online!
Wolfram Language (Mathematica) , 33 bytes
Experimente online!
fonte
CoprimeQ@@(ToCharacterCode@#-96)&
é três bytes mais curto.Gelatina , 10 bytes
Experimente online!
Como funciona
fonte
Haskell , 48 bytes
Experimente online!
Muito simples: converte a string em uma lista de números e depois verifica se o produto é igual ao LCM.
fonte
Pitão , 9 bytes
Suíte de teste
Explicação:Pyth acabou de superar Jelly?
fonte
Python 2 -
122118 bytes-4 bytes graças a @JonathanAllan
Isso é honestamente terrível, mas eu gastei muito tempo para não postar isso.
Experimente Online
fonte
96 for
~>96for
;lambda x,y:x*y
~>int.__mul__
.05AB1E , 11 bytes
Experimente online!
Explicação
fonte
Θ
realmente necessária?Braquilog , 11 bytes
Experimente online!
Explicação
fonte
Python 2 ,
776864 bytesExperimente online!
Basicamente, (algum par na entrada não é co-prime) se e somente se (existe um número i> 1 que divide mais de uma das entradas).
fonte
all
e<2
embora?Python 3 ,
6159 bytesUsando bytes python como argumento:
O último divisor a verificar é 23, o maior número primo abaixo de 26.
Experimente online!
Obrigado a @Dennis por salvar dois bytes.
fonte
c%96%x<1for c in s
economiza 2 bytes.Perl 6 ,
3432 bytes-2 bytes graças a nwellnhof
Experimente online!
Um código codificado anônimo que pega uma string e retorna True ou False. Se o menor múltiplo comum das letras for igual ao produto das letras, eles não compartilharão divisores comuns.
Explicação:
fonte
a
para0
lolday
.J, 36 bytes
Ungolfed
Explicação
Experimente online!
fonte
[:(1=[:*/+./~#&,~#\~:/#\)_96+a.&i.
para 34 bytes Teve um espaço no `1 =' :)JavaScript (Node.js) , 60 bytes
Experimente online!
Buffer
partir Shieru Asakoto de pós .fonte
every(c=>c%32%v||n--,n=1)
.Geléia , 11 bytes
Experimente online!
fonte
ỊẠ
vira os booleanos.MATL , 10 bytes
Saídas
1
por coprime,0
caso contrário.Experimente online! Ou verifique todos os casos de teste .
Explicação
Considere entrada,
'man'
por exemplo.fonte
Markov algoritmo, tal como é interpretado pelos emain (
474484463 bytes,767876 regras)As 17 primeiras regras fatoram as "letras compostas" em seus fatores de "letra principal", ignorando a multiplicidade. (Por exemplo,
t
torna-sebe
porque 20 fatores são um produto de uma potência de 2 e uma potência de 5.)As próximas 36 regras (como
cb->bc
) classificam os principais fatores resultantes.As próximas 9 regras (como
bb->F
) substituem um fator primo repetido porF
, e mais 9 regras (comob->
) se livram das restantes letras únicas.Nesse ponto, temos uma sequência vazia ou uma sequência de um ou mais
F
s, e a última regra->!T
adiciona a!T
no início. Em seguida, regrasFF->F
eTF->F
simplifique o resultado para um!T
ou outro!F
. Nesse ponto, a!->.
regra se aplica, dizendo-nos para nos livrarmos!
e pararmos: retornarT
para uma palavra de coprime eF
assim por diante .(Agradecemos a bodqhrohro por apontar um bug na versão anterior que causou esse código fornecer uma string vazia na entrada
a
.)fonte
T
nemF
noa
testcase.Python 3 ,
9089 bytes-1 byte por numbermaniac
Experimente online!
Use como
f(*'man')
.fonte
Retina 0.8.2 , 45 bytes
Experimente online! Explicação:
Insira separadores entre cada letra e no início e no final.
Anexe um
#
a cada letra.Mova cada letra 1 de volta no alfabeto, excluindo os
a
. Repita as operações acima até que todas as letras tenham sido excluídas. Isso converte cada letra em seu índice de alfabeto baseado em 1 em unário.Teste se dois valores compartilham um fator comum maior que 1. (Isso pode encontrar mais de um par de letras com um fator comum, por exemplo, na palavra
yearling
).Verifique se não foram encontrados fatores comuns.
fonte
Biblioteca R + pracma, 75 bytes
function(w){s=utf8ToInt(w)-96;all(apply(outer(s,s,pracma::gcd),1,prod)==s)}
Estou usando a
gcd
função napracma
biblioteca quanto ao meu conhecimento R não tem um built-in para isso. Estou usando a abordagem de comparar o produto dos gcds com os próprios números.65 bytes (crédito: @ J.Doe)
function(w)prod(outer(s<-utf8ToInt(w)-96,s,pracma::gcd))==prod(s)
fonte
Japonês , 14 bytes
Experimente online!
Recebe a entrada como uma matriz de caracteres.
Como funciona
fonte
Ruby , 56 bytes
Experimente online!
fonte
Java 10, 86 bytes
Porto da resposta Python 3 do @Vincent .
Experimente online.
Explicação:
fonte
Japonês, 13 bytes
Recebe entrada como uma matriz de caracteres.
Experimente ou verifique todos os casos de teste
fonte
q,
121111 bytesfonte
JavaScript (Node.js) ,
8782 bytesExperimente online!
Abordagem original (87B)
Experimente online!
fonte
Stax , 16 bytes
Execute e depure
Explicação
Saídas 1 para Verdadeiro, 0 Para falso.
Provavelmente existe uma maneira melhor de converter a parte numérica, mas funciona.
fonte
2SOF{96-F:!*
Deixe-me saber se você quiser saber mais sobre isso. O primeiro é grátis!APL (NARS), 16 caracteres, 32 bytes
Este método de uso utilizado foi o LCM () = × /, que é rápido, mas transborda, se a matriz de entrada for suficientemente longa; outras soluções alternativas um pouco mais lentas:
abaixo, parece 10 vezes mais rápido (ou +) do que as funções acima
Eu prefiro esse último porque é mais fácil, mais rápido, confiável (menos possibilidade de transbordamento), mais fácil de escrever e como deve ser (mesmo que tenha alguns bytes a mais ...)
fonte