Dada una palabra, trate cada letra como su número en el alfabeto inglés (se a
convierte en 1, se b
convierte en 2, se z
convierte en 26 y así sucesivamente), y verifique si todas ellas, incluidos los duplicados, son coprimos por pares .
La entrada es exactamente una palabra de letras minúsculas en inglés. El resultado es el hecho si la palabra es coprime: cualquier valor verdadero / falso, pero solo dos variantes de ellos. Las lagunas estándar están prohibidas.
Casos de prueba:
man
:True
day
:True
(gracias a Ørjan Johansen)led
:False
(l=12
yd=4
tenergcd=4
)mana
:True
(aunquea
ocurre varias veces, 1 y 1 son coprimos)mom
:False
(gcd(13,13)=13)
)of
:False
(Gracias a XNOR; sin embargo15∤6
,gcd(15,6)=3
)a
:True
(si no hay pares de letras, trate la palabra como coprime también)
Este es un código de golf , por lo que gana el código más corto en bytes.
code-golf
decision-problem
number-theory
primes
bodqhrohro
fuente
fuente
0
si son coprime y1
si no?day: True
of: False
tener un ejemplo falso en el que ningún valor sea múltiplo de otro.Respuestas:
Wolfram Language (Mathematica) , 36 bytes
Pruébalo en línea!
Wolfram Language (Mathematica) , 33 bytes
Pruébalo en línea!
fuente
CoprimeQ@@(ToCharacterCode@#-96)&
es tres bytes más corto.Jalea , 10 bytes
Pruébalo en línea!
Cómo funciona
fuente
Haskell , 48 bytes
Pruébalo en línea!
Muy sencillo: convierte la cadena en una lista de números y luego comprueba si el producto es igual al LCM.
fuente
Pyth , 9 bytes
Banco de pruebas
Explicación:¿Pyth acaba de superar a Jelly?
fuente
Python 2 -
122118 bytes-4 bytes gracias a @JonathanAllan
Esto es sinceramente terrible, pero he pasado demasiado tiempo para no publicar esto.
Pruébalo en línea
fuente
96 for
~>96for
;lambda x,y:x*y
~>int.__mul__
.05AB1E , 11 bytes
Pruébalo en línea!
Explicación
fuente
Θ
realmente necesaria?Brachylog , 11 bytes
Pruébalo en línea!
Explicación
fuente
Python 2 ,
776864 bytesPruébalo en línea!
Básicamente, (algún par en la entrada no es co-prime) si y solo si (hay un número i> 1 que divide más de una de las entradas).
fuente
all
y<2
sin embargo?Python 3 ,
6159 bytesUsando bytes de python como argumento:
El último divisor para verificar es 23, el primo más grande por debajo de 26.
Pruébalo en línea!
Gracias a @Dennis por guardar dos bytes.
fuente
c%96%x<1for c in s
ahorra 2 bytes.Perl 6 ,
3432 bytes-2 bytes gracias a nwellnhof
Pruébalo en línea!
Un bloque de código anónimo que toma una cadena y devuelve Verdadero o Falso. Si el mínimo común múltiplo de las letras es igual al producto de las letras, entonces no comparten divisores comunes.
Explicación:
fuente
a
a0
lolday
.J, 36 bytes
Sin golf
Explicación
Pruébalo en línea!
fuente
[:(1=[:*/+./~#&,~#\~:/#\)_96+a.&i.
por 34 bytes Tuviste un espacio en `1 = ':)JavaScript (Node.js) , 60 bytes
Pruébalo en línea!
Buffer
partir Shieru Asakoto 's puesto .fuente
every(c=>c%32%v||n--,n=1)
.Jalea , 11 bytes
Pruébalo en línea!
fuente
ỊẠ
voltea los booleanos.MATL , 10 bytes
Salidas
1
para coprime, de lo0
contrario.Pruébalo en línea! O verificar todos los casos de prueba .
Explicación
Considere la entrada
'man'
por ejemplo.fuente
Algoritmo de Markov, tal como lo interpreta eMain (
474484463 bytes,767876 reglas)Las primeras 17 reglas factorizan las "letras compuestas" en sus factores de "letras primas", ignorando la multiplicidad. (Por ejemplo, se
t
convierte enbe
20 factores como producto de una potencia de 2 y una potencia de 5).Las siguientes 36 reglas (como
cb->bc
) ordenan los factores primos resultantes.Las siguientes 9 reglas (como
bb->F
) reemplazan un factor primo repetido porF
, luego 9 reglas más (comob->
) eliminan las letras individuales restantes.En este punto, tenemos una cadena vacía, o una cadena de uno o más
F
s, y la última regla->!T
agrega un!T
al principio. Luego las reglasFF->F
yTF->F
simplificar el resultado a cualquiera!T
o!F
. En este punto,!->.
se aplica la regla, que nos dice que nos deshagamos!
y nos detengamos: regresarT
por una palabra coprime, y de loF
contrario.(Gracias a bodqhrohro por señalar un error en la versión anterior que causó que este código dé una cadena vacía en la entrada
a
).fuente
T
niF
en caso dea
prueba.Python 3 ,
9089 bytes-1 byte por numbermaniac
Pruébalo en línea!
Usar como
f(*'man')
.fuente
Retina 0.8.2 , 45 bytes
Pruébalo en línea! Explicación:
Inserte separadores entre cada letra y al principio y al final.
Anteponer una
#
a cada letra.Mueva cada letra 1 nuevamente en el alfabeto, eliminando el
a
s. Luego repita las operaciones anteriores hasta que se hayan eliminado todas las letras. Esto convierte cada letra a su índice alfabético basado en 1 en unario.Pruebe si dos valores comparten un factor común mayor que 1. (Esto puede encontrar más de un par de letras con un factor común, por ejemplo, en la palabra
yearling
).Compruebe que no se encontraron factores comunes.
fuente
Biblioteca R + pracma, 75 bytes
function(w){s=utf8ToInt(w)-96;all(apply(outer(s,s,pracma::gcd),1,prod)==s)}
Estoy usando la
gcd
función en lapracma
biblioteca en lo que sé, R no tiene una función incorporada para eso. Estoy usando el enfoque de comparar el producto de los gcds con los números mismos.65 bytes (crédito: @ J.Doe)
function(w)prod(outer(s<-utf8ToInt(w)-96,s,pracma::gcd))==prod(s)
fuente
Japt , 14 bytes
Pruébalo en línea!
Toma la entrada como una matriz de caracteres.
Cómo funciona
fuente
Ruby , 56 bytes
Pruébalo en línea!
fuente
Java 10, 86 bytes
Puerto de la respuesta Python 3 de @Vincent .
Pruébalo en línea.
Explicación:
fuente
Japt, 13 bytes
Toma la entrada como una matriz de caracteres.
Pruébalo o verifica todos los casos de prueba
fuente
q,
121111 bytesfuente
JavaScript (Node.js) ,
8782 bytesPruébalo en línea!
Enfoque original (87B)
Pruébalo en línea!
fuente
Stax , 16 bytes
Ejecutar y depurarlo
Explicación
Salidas 1 para Verdadero, 0 Para falso.
Probablemente haya una mejor manera de hacer la conversión a parte numérica, pero funciona.
fuente
2SOF{96-F:!*
Avísame si quieres saber más al respecto. ¡El primero es gratis!APL (NARS), 16 caracteres, 32 bytes
Este método de uso utilizó otro que LCM () = × /, es rápido pero se desborda si la matriz de entrada es lo suficientemente larga; Otras soluciones alternativas un poco más lentas:
esto debajo parece 10 veces más rápido (o +) que las funciones anteriores
Prefiero esto último porque es más fácil, más rápido, confiable (porque hay menos posibilidades de desbordamiento), más fácil de escribir y cómo debe ser (incluso si tiene algunos bytes más ...)
fuente