Wenn Sie ein Wort haben, behandeln Sie jeden Buchstaben als seine Nummer im englischen Alphabet (wird also a
zu 1, b
wird zu 2, z
wird zu 26 usw.), und überprüfen Sie, ob alle Buchstaben , einschließlich der Duplikate, paarweise koprimiert sind .
Die Eingabe ist genau ein Wort aus englischen Kleinbuchstaben. Die Ausgabe ist die Tatsache, dass das Wort Koprime ist: Alle Wahrheiten / Falschheitswerte, aber nur zwei Varianten davon. Standardlücken sind verboten.
Testfälle:
man
:True
day
:True
(danke an Ørjan Johansen)led
:False
(l=12
undd=4
habengcd=4
)mana
:True
(obwohla
mehrfach vorkommt, 1 und 1 sind Koprime)mom
:False
(gcd(13,13)=13)
)of
:False
(danke an xnor; obwohl15∤6
,gcd(15,6)=3
)a
:True
(Wenn keine Buchstabenpaare vorhanden sind, wird das Wort auch als Koprime behandelt.)
Dies ist ein Code-Golf , also gewinnt der kürzeste Code in Bytes!
code-golf
decision-problem
number-theory
primes
bodqhrohro
quelle
quelle
0
wenn es sich um Coprime handelt und1
wenn nicht?day: True
of: False
, ein falsches Beispiel zu haben, bei dem kein Wert ein Vielfaches eines anderen ist.Antworten:
Wolfram Language (Mathematica) , 36 Byte
Probieren Sie es online!
Wolfram Language (Mathematica) , 33 Byte
Probieren Sie es online!
quelle
CoprimeQ@@(ToCharacterCode@#-96)&
ist drei Bytes kürzer.Gelee , 10 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Haskell , 48 Bytes
Probieren Sie es online!
Sehr einfach: Konvertiert den String in eine Liste von Zahlen und prüft dann, ob das Produkt dem LCM entspricht.
quelle
Pyth , 9 Bytes
Testsuite
Erläuterung:hat Pyth gerade Jelly übertroffen?
quelle
Python 2 -
122118 Bytes-4 Bytes dank @JonathanAllan
Das ist ehrlich gesagt schrecklich, aber ich habe viel zu lange gebraucht, um das nicht zu posten.
Probieren Sie es online
quelle
96 for
~>96for
;lambda x,y:x*y
~>int.__mul__
.05AB1E , 11 Bytes
Probieren Sie es online!
Erläuterung
quelle
Θ
wirklich notwendig?Brachylog , 11 Bytes
Probieren Sie es online!
Erläuterung
quelle
Python 2 ,
776864 BytesProbieren Sie es online!
Grundsätzlich (einige Paare in der Eingabe sind nicht gleich primitiv), wenn und nur wenn (es gibt eine Zahl i> 1, die mehr als eine der Eingaben teilt).
quelle
all
und retten<2
?Python 3 ,
6159 BytesVerwenden von Python-Bytes als Argument:
Der letzte zu überprüfende Divisor ist 23, der größte unter 26.
Probieren Sie es online!
Vielen Dank an @Dennis für das Speichern von zwei Bytes.
quelle
c%96%x<1for c in s
Spart 2 Bytes.Perl 6 ,
3432 Bytes-2 Bytes dank nwellnhof
Probieren Sie es online!
Ein anonymer Codeblock, der eine Zeichenfolge akzeptiert und True oder False zurückgibt. Wenn das niedrigste gemeinsame Vielfache der Buchstaben gleich dem Produkt der Buchstaben ist, teilen sie keine gemeinsamen Teiler.
Erläuterung:
quelle
a
zu0
lolday
.J, 36 Bytes
Ungolfed
Erläuterung
Probieren Sie es online!
quelle
[:(1=[:*/+./~#&,~#\~:/#\)_96+a.&i.
für 34 Bytes Sie hatten ein Leerzeichen in "1 =" :)JavaScript (Node.js) , 60 Byte
Probieren Sie es online!
Buffer
von Shieru Asakoto ‚s Beitrag .quelle
every(c=>c%32%v||n--,n=1)
.Jelly , 11 Bytes
Probieren Sie es online!
quelle
ỊẠ
dreht die Booleschen um.MATL , 10 Bytes
Ansonsten Ausgaben
1
für Coprime0
.Probieren Sie es online! Oder überprüfen Sie alle Testfälle .
Erläuterung
Betrachten Sie
'man'
zum Beispiel die Eingabe .quelle
Markov-Algorithmus, wie von eMain interpretiert (
474484463 Bytes,767876 Regeln)Die ersten 17 Regeln zerlegen die "zusammengesetzten Buchstaben" in ihre "Hauptbuchstaben" -Faktoren, wobei die Multiplizität ignoriert wird. (Eg,
t
wird ,be
weil 20 Faktoren als Produkt einer Potenz von 2 und einer Leistung von 5)Die nächsten 36 Regeln (wie
cb->bc
) sortieren die resultierenden Primfaktoren.Die nächsten 9 Regeln (wie
bb->F
) ersetzen einen wiederholten Primfaktor durchF
, dann werden 9 weitere Regeln (wieb->
) die verbleibenden einzelnen Buchstaben los.Zu diesem Zeitpunkt haben wir entweder eine leere Zeichenfolge oder eine Zeichenfolge mit einem oder mehreren
F
s, und die letzte Regel->!T
fügt!T
am Anfang ein hinzu. Dann die RegelnFF->F
undTF->F
vereinfache das Ergebnis entweder auf!T
oder!F
. An diesem Punkt gilt die!->.
Regel, die uns auffordert, das Wort loszuwerden!
undT
anzuhaltenF
.(Danke an bodqhrohro für den Hinweis auf einen Fehler in der früheren Version, der dazu führte, dass dieser Code bei der Eingabe eine leere Zeichenfolge ergab
a
.)quelle
T
nochF
aufa
.Python 3 ,
9089 Bytes-1 byte by numbermaniac
Probieren Sie es online!
Verwenden Sie als
f(*'man')
.quelle
Retina 0,8,2 , 45 Bytes
Probieren Sie es online! Erläuterung:
Fügen Sie zwischen jedem Buchstaben und am Anfang und Ende Trennzeichen ein.
Stellen Sie
#
jedem Buchstaben ein voran .Bewegen Sie jeden Buchstaben 1 zurück in das Alphabet und löschen Sie das
a
s. Wiederholen Sie dann die obigen Vorgänge, bis alle Buchstaben gelöscht wurden. Dies konvertiert jeden Buchstaben in seinen 1-basierten Alphabetindex in Unary.Testen Sie, ob zwei Werte einen gemeinsamen Faktor größer als 1 haben. (Dies kann mehr als ein Buchstabenpaar mit einem gemeinsamen Faktor finden, z
yearling
. B. im Wort .)Stellen Sie sicher, dass keine gemeinsamen Faktoren gefunden wurden.
quelle
R + pracma-Bibliothek, 75 Bytes
function(w){s=utf8ToInt(w)-96;all(apply(outer(s,s,pracma::gcd),1,prod)==s)}
Ich benutze die
gcd
Funktion in derpracma
Bibliothek, da meines Wissens R dafür nicht eingebaut ist. Ich benutze den Ansatz, das Produkt der GCDs mit den Zahlen selbst zu vergleichen.65 Bytes (Kredit: @ J.Doe)
function(w)prod(outer(s<-utf8ToInt(w)-96,s,pracma::gcd))==prod(s)
quelle
Japt , 14 Bytes
Probieren Sie es online!
Nimmt die Eingabe als Array von Zeichen.
Wie es funktioniert
quelle
Ruby , 56 Bytes
Probieren Sie es online!
quelle
Java 10, 86 Bytes
Port von @Vincents Python 3 Antwort .
Probieren Sie es online aus.
Erläuterung:
quelle
Japt, 13 Bytes
Übernimmt die Eingabe als Zeichenarray.
Probieren Sie es aus oder überprüfen Sie alle Testfälle
quelle
q,
121111 Bytesquelle
JavaScript (Node.js) ,
8782 BytesProbieren Sie es online!
Ursprünglicher Ansatz (87B)
Probieren Sie es online!
quelle
Stax , 16 Bytes
Führen Sie es aus und debuggen Sie es
Erläuterung
Ausgänge 1 für Wahr, 0 für Falsch.
Es gibt wahrscheinlich einen besseren Weg, den Teil in eine Zahl umzuwandeln, aber es funktioniert.
quelle
2SOF{96-F:!*
Lass es mich wissen, wenn du mehr darüber wissen willst. Ersteres ist kostenlos!APL (NARS), 16 Zeichen, 32 Byte
Diese andere Verwendungsmethode verwendet LCM () = × /. Sie ist schnell, läuft jedoch über, wenn das Eingabearray lang genug ist. andere alternative Lösungen etwas langsamer:
Dies scheint unter 10 mal schneller (oder +) als nur über Funktionen
Ich bevorzuge letzteres, weil es einfacher, schneller, vertrauenswürdiger (da weniger Überlauf möglich ist), einfacher zu schreiben ist und wie es sein muss (auch wenn es einige Bytes mehr hat ...)
quelle