Przyjemna liczba (zgodnie z tą definicją) to liczba, którą można przekazać w następującym procesie (wykorzystajmy 41802000
jako przykład):
- Oddziel końcowe liczby identyczne (
41802000 => [41802, 000]
) - Sortuj pierwszą połowę cyfr i weź maksimum (
[41802, 000] => [8, 000]
) - Weź długość ostatniego elementu. Wywołaj wynikowe elementy A i B (
[8, 000] => A=8, B=3
) - Czy N B = A dla dowolnej liczby całkowitej
N
? (True
w tym przykładzie; 2 3 = 8)
Jeśli dane wejściowe wynikają True
z następującego procesu, uznaje się je za przyjemne.
Twoim zadaniem jest pobranie liczby całkowitej x
i wyprowadzenie, czy x
jest to przyjemna liczba. Możesz podać dowolne dwie odrębne wartości dla „prawda” i „falsey”, ale w odpowiedzi podaj proszę, czego używasz. x
gwarantuje, że będzie mieć co najmniej dwie wyraźne cyfry (np. 111
jest nieprawidłowym wprowadzeniem). Podobnie jak w przypadku większości wyzwań, możesz wziąć x
jako ciąg znaków lub listę cyfr.
To jest golf golfowy, więc wygrywa najkrótszy kod w bajtach .
Przypadki testowe
Input Output
41802000 1
100 1
123456788 0
451111111 0
234543454545444 0
12 1
41902000 0
92599 1
code-golf
math
decision-problem
Cairney Coheringaahing
źródło
źródło
list of digits
- czy byłaby to lista znaków numerycznych ASCII, czy lista liczb całkowitych od 0 do 9Odpowiedzi:
APL (Dyalog) , 36 bajtów
Wypróbuj online!
W jaki sposób?
Prawie wiersz.
⌽⍵
- raz odwróć wejście,1,2=/
- pobierz listę różnic.⌊\
- zachowaj tylko pierwszą grupę,⌽
- i odwróć, aby zakończyć.o←
- przypisać doo
,~o
- przełączaj jedynki i zero (y),⍵/⍨
- filtruj za pomocą niego dane wejściowe,⍎¨
- zamień wynik na listę każdej cyfry,⌈/
- i zdobądź maksimum. (to jest)⍵/⍨o
- filtruj wejście za pomocąo
unalt (ered),≢
- i weźmy długość, to będzie B.÷
- podziel się przez ten wynik,*
- i weź A do tej mocy ciebie.⊢≡⌊
- liczba całkowita?źródło
05AB1E , 11 bajtów
Wypróbuj online!
Wyjaśnienie
Emigna zapisała 1 bajt.
Opiera się na fakcie, że jeśli A jest dodatnią liczbą całkowitą N podniesioną do potęgi B , to N = A 1 / B , stąd musi być liczbą całkowitą.
źródło
UZX
powinien działać zamiasts{θs
41902000
(powinien to być fałsz).418802000
Haskell ,
85757271 bajtówEdytuj : -10 bajtów, biorąc listę cyfr zamiast ciągu. Dzięki WhatToDo za wskazanie, że jest to dozwolone. -3 bajty dzięki rozwiązaniu Ourous w Clean . -1 bajt dzięki użytkownikowi 28667 .
Wypróbuj online! Pobiera dane wejściowe jako listę cyfr. Przykładowe użycie:
f [4,1,8,0,2,0,0,0]
dajeTrue
.Wyjaśnienie:
Biorąc pod uwagę wejście
s=[4,1,8,0,2,0,0,0]
, toreverse
lista i oddzielić elementy prowadzące zspan(==last s)
:([0,0,0],[2,0,8,1,4])
. Dopasowywanie wzorca dla(b,a)
zbiorówb=[0,0,0]
ia=[2,0,8,1,4]
.Zrozumienie listy
or[n^length b==maximum a|n<-[1..a]]
sprawdza, czy jakakolwiek liczba całkowitan
z zakresu od1
do9
spełnian^length b==maximum a
, to znaczyn^3=8
.źródło
a
nie powiodło się w takich przypadkach477
.b
, ale sprawdź każdą liczbę całkowitąn
od0
do9
(poprzednio od0
doa
). To dokładnie taka specyfikacja, o ile mi wiadomo.Haskell ,
10489 bajtów@Laikoni znalazł krótsze rozwiązanie , ale to najlepsze, co mogłem zrobić. Dzięki @Laikoni za poinformowanie mnie, że możemy również akceptować listy cyfr jako dane wejściowe.
Wyjaśnienie:
Wypróbuj online!
źródło
any(==a)
Po co korzystać, kiedy można korzystaćelem a
?2888
?head.maximum
nadal jest krótszy niżmaximum.concat
o 2 bajty i zachowuje funkcjonalność.R , 80 bajtów
Wypróbuj online!
Używa
utf8ToInt - 48
do dzielenia liczby na cyfry. To powoduje ostrzeżenie z konwersji na ciąg.Używając rle, uzyskaj liczbę końcowych cyfr i maksymalną wartość pierwszych cyfr. Zwraca wartość true, jeśli dowolny z zakresu od 0 do wartości maksymalnej do potęgi liczenia jest równy wartości maksymalnej.
Myślę, że są dalsze możliwości gry w golfa, ale to może poczekać do jutra.
źródło
function(x,R=rle(rev(utf8ToInt(x)-48)))!max(R$v[-1])^(1/R$l[1])%%1
(66 bajtów,x
jako ciąg znaków)Galaretka , 11 bajtów
Pobiera dane wejściowe jako listę cyfr.
Wypróbuj online!
Jak to działa
źródło
R, 66 bajtów
Ta odpowiedź jest mniej więcej mieszanką odpowiedzi MickyT i NofP , a na ich prośbę oto:
Trwa x jako ciąg.
źródło
JavaScript (ES7), 66 bajtów
Pobiera dane wejściowe jako ciąg znaków lub tablicę znaków. Zwraca wartość logiczną.
Przypadki testowe
Pokaż fragment kodu
źródło
Czysty ,
13012811893 bajtówDefiniuje funkcję
@
, biorąc listę liczb całkowitych.Wypróbuj online!
źródło
Python 2 ,
9578 bajtówWypróbuj online!
źródło
i
, możesz upuścićlen
osiągające 78 bajtówR , 93 bajty
Wypróbuj online!
Kod przyjmuje na wejściu liczbę całkowitą i zwraca FALSE, jeśli liczba jest przyjemna, a PRAWDA w przeciwnym razie.
źródło
Python 3 ,
8885 bajtówNie golfowany:
True
alboFalse
.a ** (1 / b)
zostanie wyłączony o co najmniej 0,5 z b √a, co wymaga wartości powyżej 2 53 (lub jakiejkolwiek zmiennoprzecinkowej zmiennoprzecinkowej i mantysy długość Python używa, zobaczsys.float_info
).źródło
int
irange
. (W pewnym momencie bardziej prawdopodobne byłoby oszacowanie zasięgu wyszukiwania na podstawie onta^(1/b)
niż obliczenie dużych ilości mocy.)C (gcc) ,
144126117 bajtówWypróbuj online!
źródło
Rubinowy , 64 bajty
Wprowadź jako ciąg, zwraca wartość true, jeśli:
Wypróbuj online!
źródło
Perl 6 , 55 bajtów
Wypróbuj online!
Po ocenie początkowego wyrażenia regularnego - które może się powieść tylko wtedy, gdy wartość wejściowa jest dodatnią liczbą całkowitą -
$0
zawiera początkową część liczby i$1
końcowe powtarzające się cyfry.comb
Metoda bez argumentów, stosowane do łańcucha, zwraca listę postaci, które w numerycznych analizuje schemat kontekście do długości listy. Tak więc$0.comb.max
jest największą cyfrą w prefiksie i$1.comb
jest długością sufiksu.Następnie sprawdzamy, czy
any(^10)
(tj. Połączenie liczb od 0-9), gdy podniesione do potęgi długości sufiksu, jest równe największej cyfrze w prefiksie. Teso
siły logiczna oceny uzyskanej skrzyżowania, które w przeciwnym razie byłoby dobrze na własną rękę jako wartość truthy, ale rozmowy wyzwaniem dla zaledwie dwóch odmiennych wartości zostać zwrócone.źródło
.
zamiast\d
.Kotlin , 106 bajtów
Dane wyjściowe: prawda / fałsz
Wypróbuj online!
źródło
Dodaj ++ , 21 bajtów
Wypróbuj online!
Minęły 3 i pół miesiąca, mam nadzieję, że nikogo nie ninja.
źródło
C # (.NET Core) , 132 bajty
Wypróbuj online!
Podziękowanie
-12 bajtów dzięki @KevinCruijssen
DeGolfed
źródło
i=n.Length-2;for(;i>=0;i--)
można grać w golfai=n.Length-1;for(;i-->0;)
i&&
grać w golfa&
.using System;
i używającSystem.Math.Pow
bezpośrednio.-48
można zagrać w golfa na -3 bajty.Japt ,
2618 bajtówWypróbuj online!
Pobiera dane wejściowe jako ciąg znaków,
1
w0
przeciwnym razie zwraca miłe liczby .Krótkie wyjaśnienie:
Weź pierwsze dane wejściowe i podziel je na wartości, gdzie
(x,y) => x===y
jest to prawda. Na przykład'41802000'
do['4','1','8','0','2','000']
.Wziąć tablicę z pierwszego etapu, usunąć ostatni element i uzyskać jego długość, otrzymując B .
Znajdź największy element w pozostałej tablicy, uzyskując A , weź go do potęgi,
1/B
a następnie wróć, jeśli wynik jest podzielny przez jeden.Pierwsza praca z Japt, bardzo otwarta na wszelkie rekomendacje. Ogolono
8 bajtów dzięki produktom ETH .
źródło
ó¶
. 2) Nie wiem, dlaczego maszv
w drugim wierszu, ponieważ po prostu konwertuje ciąg na małe litery i nie ma wpływu na długość ;-) 3) Możesz uniknąć znaku!(U
w ostatnim wierszu, zmieniając%1
nav1
, który zwraca,1
jeśli temat jest podzielny przez 1 lub w0
inny sposób.Clojure, 168 bajtów
Wypróbuj online!
źródło
Węgiel drzewny , 33 bajty
Wypróbuj online! Link jest do pełnej wersji kodu. Wykazuje a
-
dla przyjemnych liczb. Wyjaśnienie:Podziel dane wejściowe
q
na znaki.Usuń ostatni znak z
q
i popchnij go dou
(predefiniowany do pustej listy).Kilkakrotnie pop i push, podczas gdy ostatnia postać
q
jest pierwszą postacią zu
.Weź maksymalną cyfrę
q
i podnieś ją do potęgi odwrotności długościu
, a następnie sprawdź, czy wynikiem jest liczba całkowita.źródło
Python 2 ,
9185 bajtówWypróbuj online!
źródło
Perl 5 , 73 + 1 (
-p
) = 74 bajtyWypróbuj online!
źródło
Java 8, 125 bajtów
Port odpowiedzi C # .NET na @ Ayb4btu .
Wypróbuj online.
Wyjaśnienie:
źródło
Pip ,
322221 bajtówZastosowań
1
dla falsey i0
dla truthy , oszczędzając bajt. Wypróbuj online!źródło
Pyth, 29 bajtów
Zestaw testowy
Tłumaczenie Python 3:źródło