Opis
Rozważamy liczbę całkowitą z co najmniej 3 cyframi trzykrotnie zrównoważonymi, jeśli podzielone na trzy części, cyfry w każdej części sumują się do tej samej liczby. Dzielimy liczby w następujący sposób:
abcdefghi - Standard case: the number of digits is divisable through 3:
abc def ghi
abcdefgh - Number % 3 == 2: The outer groups are both assigned another digit
abc de fgh (the inner group will have one digit less than both outer groups)
abcdefghij - Number % 3 == 1: The inner group is assigned the extra digit
abc defg hij (the inner group will have one digit more than the outer groups)
Wyzwanie
Twoim zadaniem jest napisanie programu, który, biorąc pod uwagę liczbę całkowitą składającą się z co najmniej 3 cyfr, określa, czy podana liczba jest potrójnie zbalansowana i generuje wartość prawdy czy fałszu na podstawie jej wyniku.
Przypadki testowe
333 -> True
343 -> False
3123 -> True
34725 -> True
456456 -> False
123222321 -> True
To jest golf golfowy , więc obowiązują standardowe luki i może wygrać najkrótsza odpowiedź w bajtach!
code-golf
number
arithmetic
decision-problem
racer290
źródło
źródło
when split in three parts,
Odpowiedzi:
Python 2 ,
938886 bajtów-4 bajty dzięki @LeakyNun
-2 bajty dzięki @ Mr.Xcoder
Wypróbuj online!
źródło
Galaretka , 23 bajty
Wypróbuj online!
Musi być krótsza droga, która jakoś przeleciała mi nad głową ...
źródło
Siatkówka , 89 bajtów
Wypróbuj online! Link zawiera przypadki testowe. Objaśnienie: Pierwszy etap dodaje nowe linie na początku i na końcu danych wejściowych. Drugi etap następnie próbuje przenosić cyfry wzdłuż nowych linii parami, jednak jeśli nie ma wystarczającej liczby cyfr na środku, trzeci etap jest w stanie przenieść je z powrotem, powodując zatrzymanie pętli. Czwarty etap przekształca następnie każdą cyfrę osobno w unarną, sumując je, a ostatni etap po prostu sprawdza, czy sumy są równe.
źródło
Mathematica, 142 bajty
źródło
Galaretka , 20 bajtów
Wypróbuj online!
Jak to działa
źródło
MATL , 26 bajtów
Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .
źródło
JavaScript, 178 bajtów
źródło
([...b],s=~b.length/3|0,f=(m,v)=>+m+ +v,y=b.splice(s).reduce(f))=>b.splice(-s).reduce(f)==y&y==b.reduce(f)
(zachowaj ostrożność podczas kopiowania z komentarzy, ponieważ Stack Exchange wstawia niewidoczne znaki).Java 8, 149 bajtów
Przyjmuje dane wejściowe jako
int[]
.Wyjaśnienie:
Wypróbuj tutaj.
Oto przegląd części z indeksowaniem 0 (wyłącznych) dla każdej długości:
a
zapętlamy od0
do(length + 1) / 3)
(ta wartość jest teraz przechowywana ws
);b
pętlujemy ods
dolength / 3 * 2 +
(0
jeśli długość modulo-3 wynosi 0;1
jeśli długość modulo-3 wynosi 1 lub 2) (ta wartość jest teraz zapisywana ws
);c
pętlujemy ods
dolength
.(wszystkie trzy pętle są wyłączne dla indeksowania 0)
źródło
Röda , 82 bajty
Wypróbuj online!
Wyjaśnienie:
źródło
JavaScript,
129, 104 bajtówFunkcja r wycina ciąg w oparciu o parametry b i e, a następnie sumuje cyfry i zwraca wartość.
Aby pokroić na właściwe rozmiary, dzielimy długość przez 3 i zaokrąglamy wynik. Wywołanie wycinka (0, wynik) daje nam pierwszy blok, wycinek (wynik, -wynik) daje nam drugi, a wycinek (wynik) daje nam ostatni. Ze względu na sposób, w jaki nazywam wycinek, użyłem wycinka (wynik, wynik 4 *) zamiast ostatniego, ale daje ten sam wynik.
Na koniec porównuję wyniki, aby pokazać, że wartości są równe.
Edycja: ta sama zasada, lepsza gra w golfa
źródło
&&
na&
JavaScript? Obydwie kontrole z drugiej ręki (&&z
i&&y[1]==y[2]
) nie wydają się modyfikować wartości, więc jeśli jest to możliwe, nie powinno to wpływać na wynik z tego, co widzę.