Étant donné un mot, traitez chaque lettre comme son numéro dans l'alphabet anglais ( a
devient ainsi 1, b
devient 2, z
devient 26 et ainsi de suite), et vérifiez si toutes, y compris les doublons, sont des nombres premiers par paire .
L'entrée est exactement un mot de lettres anglaises minuscules. La sortie est le fait si le mot est coprime: toutes les valeurs truey / falsey, mais seulement deux variantes d'entre elles. Les failles standard sont interdites.
Cas de test:
man
:True
day
:True
(merci à Ørjan Johansen)led
:False
(l=12
etd=4
avoirgcd=4
)mana
:True
(maisa
se produit plusieurs fois, 1 et 1 sont des nombres premiers)mom
:False
(gcd(13,13)=13)
)of
:False
(merci à xnor; cependant15∤6
,gcd(15,6)=3
)a
:True
(s'il n'y a pas de paires de lettres, traitez aussi le mot comme un premier)
C'est un code-golf , donc le code le plus court en octets gagne!
code-golf
decision-problem
number-theory
primes
bodqhrohro
la source
la source
0
s'ils sont coprimes et1
sinon?day: True
of: False
d'avoir un faux exemple où aucune valeur n'est un multiple d'un autre.Réponses:
Wolfram Language (Mathematica) , 36 octets
Essayez-le en ligne!
Wolfram Language (Mathematica) , 33 octets
Essayez-le en ligne!
la source
CoprimeQ@@(ToCharacterCode@#-96)&
est de trois octets plus court.Gelée , 10 octets
Essayez-le en ligne!
Comment ça fonctionne
la source
Haskell , 48 octets
Essayez-le en ligne!
Très simple: convertit la chaîne en une liste de nombres, puis vérifie si le produit est égal au LCM.
la source
Pyth , 9 octets
Suite de tests
Explication:Pyth vient-il de déjouer Jelly?
la source
Python 2 -
122118 octets-4 octets grâce à @JonathanAllan
C'est vraiment horrible, mais j'ai passé beaucoup trop de temps à ne pas poster ceci.
Essayez-le en ligne
la source
96 for
~>96for
;lambda x,y:x*y
~>int.__mul__
.05AB1E , 11 octets
Essayez-le en ligne!
Explication
la source
Θ
vraiment nécessaire?Brachylog , 11 octets
Essayez-le en ligne!
Explication
la source
Python 2 ,
776864 octetsEssayez-le en ligne!
Fondamentalement, (une paire dans l'entrée n'est pas co-amorcée) si et seulement si (il y a un nombre i> 1 qui divise plus d'une des entrées).
la source
all
et<2
pourtant?Python 3 ,
6159 octetsUtiliser des octets python comme argument:
Le dernier diviseur à vérifier est 23, le plus grand nombre premier inférieur à 26.
Essayez-le en ligne!
Merci à @Dennis d'avoir économisé deux octets.
la source
c%96%x<1for c in s
enregistre 2 octets.Perl 6 ,
3432 octets-2 octets grâce à nwellnhof
Essayez-le en ligne!
Un bloc de code anonyme qui prend une chaîne et renvoie True ou False. Si le plus petit commun multiple des lettres est égal au produit des lettres, alors elles ne partagent aucun diviseur commun.
Explication:
la source
a
à0
lolday
.J, 36 octets
Non golfé
Explication
Essayez-le en ligne!
la source
[:(1=[:*/+./~#&,~#\~:/#\)_96+a.&i.
pour 34 octets Vous aviez un espace dans `1 = ':)JavaScript (Node.js) , 60 octets
Essayez-le en ligne!
Buffer
partir Shieru Asakoto de poste .la source
every(c=>c%32%v||n--,n=1)
.Gelée , 11 octets
Essayez-le en ligne!
la source
ỊẠ
retourne les booléens.MATL , 10 octets
Sorties
1
pour coprime,0
sinon.Essayez-le en ligne! Ou vérifiez tous les cas de test .
Explication
Prenons l'
'man'
exemple de la saisie .la source
Algorithme de Markov, tel qu'interprété par eMain (
474484463 octets,767876 règles)Les 17 premières règles factorisent les «lettres composites» dans leurs facteurs «lettres principales», ignorant la multiplicité. (Par exemple,
t
devientbe
parce que 20 facteurs sont le produit d'une puissance de 2 et d'une puissance de 5.)Les 36 règles suivantes (telles que
cb->bc
) trient les facteurs premiers résultants.Les 9 règles suivantes (telles que
bb->F
) remplacent un facteur premier répété parF
, puis 9 autres règles (telles queb->
) suppriment les lettres simples restantes.À ce stade, nous avons soit une chaîne vide, soit une chaîne d'un ou plusieurs
F
s, et la dernière règle->!T
ajoute un!T
au début. Ensuite, les règlesFF->F
etTF->F
simplifier le résultat à!T
ou!F
. À ce stade, la!->.
règle s'applique, nous disant de nous débarrasser de!
et de nous arrêter: revenirT
pour un mot premier, etF
autrement.(Merci à bodqhrohro d'avoir signalé un bogue dans la version précédente qui faisait que ce code donnait une chaîne vide en entrée
a
.)la source
T
niF
sura
testcase.Python 3 ,
9089 octets-1 octet par numbermaniac
Essayez-le en ligne!
Utiliser comme
f(*'man')
.la source
Retina 0.8.2 , 45 octets
Essayez-le en ligne! Explication:
Insérez des séparateurs entre chaque lettre et au début et à la fin.
Ajoutez un
#
à chaque lettre.Déplacez chaque lettre 1 dans l'alphabet, en supprimant le
a
s. Répétez ensuite les opérations ci-dessus jusqu'à ce que toutes les lettres aient été supprimées. Cela convertit chaque lettre en son index alphabétique basé sur 1 en unaire.Testez si deux valeurs partagent un facteur commun supérieur à 1. (Cela peut trouver plus d'une paire de lettres avec un facteur commun, par exemple dans le mot
yearling
.)Vérifiez qu'aucun facteur commun n'a été trouvé.
la source
Bibliothèque R + pracma, 75 octets
function(w){s=utf8ToInt(w)-96;all(apply(outer(s,s,pracma::gcd),1,prod)==s)}
J'utilise le
gcd
fonction dans lapracma
bibliothèque car à ma connaissance, R n'a pas de fonction intégrée pour cela. J'utilise l'approche consistant à comparer le produit des gcds aux chiffres eux-mêmes.65 octets (crédit: @ J.Doe)
function(w)prod(outer(s<-utf8ToInt(w)-96,s,pracma::gcd))==prod(s)
la source
Japt , 14 octets
Essayez-le en ligne!
Prend l'entrée comme un tableau de caractères.
Comment ça fonctionne
la source
Rubis , 56 octets
Essayez-le en ligne!
la source
Java 10, 86 octets
Port de la réponse Python 3 de @Vincent .
Essayez-le en ligne.
Explication:
la source
Japt, 13 octets
Prend l'entrée comme un tableau de caractères.
Essayez-le ou vérifiez tous les cas de test
la source
q,
121111 octetsla source
JavaScript (Node.js) ,
8782 octetsEssayez-le en ligne!
Approche originale (87B)
Essayez-le en ligne!
la source
Stax , 16 octets
Exécuter et déboguer
Explication
Sorties 1 pour True, 0 pour false.
Il y a probablement une meilleure façon de faire la conversion en partie numérique, mais cela fonctionne.
la source
2SOF{96-F:!*
Faites-moi savoir si vous voulez en savoir plus. Le premier est gratuit!APL (NARS), 16 caractères, 32 octets
Cette méthode d'utilisation autre que LCM () = × /, est rapide mais déborde si le tableau d'entrée est assez long; autres solutions alternatives un peu plus lentes:
ci-dessous, il semble 10 fois plus rapide (ou +) que juste au-dessus des fonctions
Je préfère ce dernier parce qu'il est plus facile, plus rapide, fiable (car il y a moins de débordement possible), plus facile à écrire et comment il doit être (même s'il a quelques octets de plus ...)
la source