Biorąc pod uwagę słowo, każdą literę traktuj jako cyfrę alfabetu angielskiego (czyli a
1, b
2, z
26 itd.) I sprawdź, czy wszystkie, łącznie z duplikatami, są chronione parami .
Dane wejściowe to dokładnie jedno słowo małych angielskich liter. Wynikiem jest fakt, że słowo to coprime: dowolne wartości truey / falsey, ale tylko dwa warianty. Standardowe luki są zabronione.
Przypadki testowe:
man
:True
day
:True
(dzięki Ørjan Johansen)led
:False
(l=12
id=4
miećgcd=4
)mana
:True
(choća
występuje wiele razy, 1 i 1 są pierwszymi kopiami)mom
:False
(gcd(13,13)=13)
)of
:False
(Dzięki XNOR; chociaż15∤6
,gcd(15,6)=3
)a
:True
(jeśli nie ma par liter, traktuj to słowo również jako coprime)
To jest golfowy kod , więc wygrywa najkrótszy kod w bajtach!
code-golf
decision-problem
number-theory
primes
bodqhrohro
źródło
źródło
0
wydać dane wyjściowe, jeśli są chronione prawem autorskim, a1
jeśli nie?day: True
of: False
aby mieć fałszywy przykład, w którym żadna wartość nie jest wielokrotnością innej.Odpowiedzi:
Wolfram Language (Mathematica) , 36 bajtów
Wypróbuj online!
Wolfram Language (Mathematica) , 33 bajty
Wypróbuj online!
źródło
CoprimeQ@@(ToCharacterCode@#-96)&
jest trzy bajty krótszy.Galaretka , 10 bajtów
Wypróbuj online!
Jak to działa
źródło
Haskell , 48 bajtów
Wypróbuj online!
Bardzo proste: konwertuje ciąg na listę liczb, a następnie sprawdza, czy produkt jest równy LCM.
źródło
Pyth , 9 bajtów
Zestaw testowy
Wyjaśnienie:czy Pyth wyprzedził galaretkę?
źródło
Python 2 -
122118 bajtów-4 bajty dzięki @JonathanAllan
To jest naprawdę okropne, ale spędziłem zbyt długo, aby tego nie opublikować.
Wypróbuj online
źródło
96 for
~>96for
;lambda x,y:x*y
~>int.__mul__
.05AB1E , 11 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Θ
naprawdę konieczny?Brachylog , 11 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Python 2 ,
776864 bajtówWypróbuj online!
Zasadniczo (niektóre pary na wejściu nie są współużytkowane) wtedy i tylko wtedy, gdy (istnieje liczba i> 1, która dzieli więcej niż jedno wejście).
źródło
all
i<2
chociaż?Python 3 ,
6159 bajtówUżywanie bajtów python jako argumentu:
Ostatni dzielnik do sprawdzenia to 23, największa liczba pierwsza poniżej 26.
Wypróbuj online!
Dzięki @Dennis za zapisanie dwóch bajtów.
źródło
c%96%x<1for c in s
oszczędza 2 bajty.Perl 6 ,
3432 bajty-2 bajty dzięki nwellnhof
Wypróbuj online!
Anonimowy blok kodu, który pobiera ciąg znaków i zwraca wartość True lub False. Jeśli najniższa wspólna wielokrotność liter jest równa iloczynowi liter, to nie dzielą one wspólnych dzielników.
Wyjaśnienie:
źródło
a
do0
lolday
.J, 36 bajtów
Nie golfił
Wyjaśnienie
Wypróbuj online!
źródło
[:(1=[:*/+./~#&,~#\~:/#\)_96+a.&i.
na 34 bajty Miałeś spację w `1 = ':)JavaScript (Node.js) , 60 bajtów
Wypróbuj online!
Buffer
z Shieru Asakoto „s postu .źródło
every(c=>c%32%v||n--,n=1)
.Galaretka , 11 bajtów
Wypróbuj online!
źródło
ỊẠ
odwraca booleany.MATL , 10 bajtów
Wyjścia
1
dla coprime, w0
przeciwnym razie.Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie
Rozważmy
'man'
na przykład dane wejściowe .źródło
Algorytm Markowa zgodnie z interpretacją eMaina (
474484463 bajtów,767876 reguł)Pierwsze 17 reguł uwzględnia czynniki „litery złożone” w czynniki „litery pierwsze”, ignorując wielokrotność. (Np.
t
Staje się,be
ponieważ 20 czynników jest iloczynem potęgi 2 i potęgi 5).Następne 36 zasad (takich jak
cb->bc
) sortuje wynikowe czynniki pierwsze.Następne 9 reguł (takich jak
bb->F
) zastępuje powtarzający się czynnik pierwszy przezF
, a następnie 9 kolejnych reguł (takich jakb->
) pozbywa się pozostałych pojedynczych liter.W tym momencie albo mamy pusty ciąg, albo ciąg jednego lub więcej
F
s, a ostatnia reguła->!T
dodaje!T
na początku. Następnie regułyFF->F
iTF->F
uprość wynik do jednego!T
lub!F
. W tym momencie obowiązuje!->.
zasada, która nakazuje nam się pozbyć!
i zatrzymać: powrótT
do słowa coprime iF
inaczej.(Podziękowania dla bodqhrohro za wskazanie błędu we wcześniejszej wersji, który spowodował, że ten kod podał pusty ciąg wejściowy
a
.)źródło
T
aniF
naa
testcase.Python 3 ,
9089 bajtów-1 bajt przez numbermaniac
Wypróbuj online!
Użyj jako
f(*'man')
.źródło
Retina 0.8.2 , 45 bajtów
Wypróbuj online! Wyjaśnienie:
Wstaw separatory między każdą literą oraz na początku i na końcu.
Przygotuj a
#
do każdej litery.Przenieś każdą literę 1 z powrotem w alfabecie, usuwając
a
s. Następnie powtarzaj powyższe operacje, aż wszystkie litery zostaną usunięte. Konwertuje każdą literę na indeks alfabetu oparty na 1 jednostronnie.Sprawdź, czy dowolne dwie wartości mają wspólny czynnik większy niż 1. (Może znaleźć więcej niż jedną parę liter ze wspólnym czynnikiem, np. W słowie
yearling
).Sprawdź, czy nie znaleziono wspólnych czynników.
źródło
Biblioteka R + pracma, 75 bajtów
function(w){s=utf8ToInt(w)-96;all(apply(outer(s,s,pracma::gcd),1,prod)==s)}
Korzystam z
gcd
funkcji wpracma
bibliotece, ponieważ według mojej wiedzy R nie ma do tego wbudowanej funkcji. Używam podejścia polegającego na porównaniu produktu gcds z samymi liczbami.65 bajtów (kredyt: @ J.Doe)
function(w)prod(outer(s<-utf8ToInt(w)-96,s,pracma::gcd))==prod(s)
źródło
Japt , 14 bajtów
Wypróbuj online!
Pobiera dane wejściowe jako tablicę znaków.
Jak to działa
źródło
Rubinowy , 56 bajtów
Wypróbuj online!
źródło
Java 10, 86 bajtów
Port odpowiedzi Python 3 na @ Vincent .
Wypróbuj online.
Wyjaśnienie:
źródło
Japt, 13 bajtów
Pobiera dane wejściowe jako tablicę znaków.
Wypróbuj lub sprawdź wszystkie przypadki testowe
źródło
q,
121111 bajtówźródło
JavaScript (Node.js) ,
8782 bajtówWypróbuj online!
Oryginalne podejście (87B)
Wypróbuj online!
źródło
Stax , 16 bajtów
Uruchom i debuguj
Wyjaśnienie
Wyjścia 1 dla wartości True, 0 dla wartości false.
Prawdopodobnie jest lepszy sposób na konwersję na część liczbową, ale działa.
źródło
2SOF{96-F:!*
Daj mi znać, jeśli chcesz dowiedzieć się więcej na ten temat. Pierwszy jest bezpłatny!APL (NARS), 16 znaków, 32 bajty
W tej innej metodzie użyto LCM () = × /, jest szybki, ale przepełnia się, jeśli tablica wejściowa jest wystarczająco długa; inne alternatywne rozwiązania nieco wolniej:
to poniżej wydaje się 10 razy szybsze (lub +) niż tylko powyżej funkcji
Wolę to ostatnie, ponieważ jest łatwiejsze, szybsze, godne zaufania (ponieważ mniej możliwości przepełnienia), łatwiejsze do napisania i jak to musi być (nawet jeśli ma więcej bajtów więcej ...)
źródło