Czasami, gdy naprawdę się nudzę, lubię sumę nieujemnych liczb całkowitych. Biorę tylko sumę tablic długości, które są potęgami dwóch. Niestety często popełniam błędy. Na szczęście śledzę swoją pracę w następujący sposób:
Dodaję pary sąsiednich liczb, aż pozostanie tylko jedna. Na przykład:
6 + 18 + 9 + 6 + 6 + 3 + 8 + 10
= 24 + 15 + 9 + 18
= 39 + 27
= 66
Twoim zadaniem jest ustalenie, czy gdzieś popełniłem błąd. Możesz albo przekazać dane wejściowe do funkcji, albo odczytać ze standardowego wejścia. Dane wyjściowe można wydrukować lub zwrócić.
Dane wejściowe: tablica / lista / itp. nieujemnych liczb całkowitych, a być może także długość tej tablicy, jeśli twój język tego wymaga. W tej tablicy będą wszystkie liczby odczytywane od lewej do prawej, a następnie od góry do dołu. Na przykład powyższa tablica wygląda następująco:
[[6, 18, 9, 6, 6, 3, 8, 10], [24, 15, 9, 18], [39, 27], [66]]
lub
[6, 18, 9, 6, 6, 3, 8, 10, 24, 15, 9, 18, 39, 27, 66]
jeśli wolisz.
Dane wyjściowe: jeden wynik logiczny wskazujący, czy popełniono błąd. Wartość logiczna może być reprezentowana za pomocą dowolnego odwzorowania, pod warunkiem, że wszystkie dane wejściowe, w których popełniono błąd, zwracają / drukują identyczny wynik i wszystkie dane wejściowe, które nie zawierają błędów, zwracają / drukują identyczny wynik. Powinno to być oczywiste, ale te dwa wyjścia nie mogą być takie same.
Niektóre przykłady poprawnych podsumowań:
6
5+6
=11
3 + 2 + 4 + 5
= 5 + 9
= 14
[0, 1, 2, 3, 1, 5, 6]
[[1, 2, 4, 8], [3, 12], [15]]
Niektóre przykłady nieprawidłowego podsumowania:
5+4
=8
4 + 4 + 4 + 4
= 9 + 7
= 16
[[1, 2, 3, 4], [7, 3], [10]]
[3, 4, 5, 6, 7, 8, 9]
Pamiętaj, że mogę popełniać błędy i nadal uzyskać właściwą odpowiedź. Jeśli popełniam błąd, nigdy nie spowoduje to otrzymania dodatkowej liczby lub brakującej liczby w końcowej tablicy, tylko złą liczbę.
Standardowe luki są zabronione. Najkrótsza odpowiedź w każdym języku jest zwycięzcą. Starsza odpowiedź wygra w przypadku remisu. Zastrzegam sobie prawo do decydowania, co to jest „ten sam język”, ale powiem z góry, że nie da się zdobyć punktu zarówno w Pythonie 2, jak i Pythonie 3.
[0,1,2,3,1,5,6]
jest nieprawidłowy, ponieważ „Dane wejściowe: tablica / lista / itd. Dodatnich liczb całkowitych”.Odpowiedzi:
Galaretka , 6 bajtów
Wypróbuj online!
Jak to działa
źródło
Python 2 , 51 bajtów
Wypróbuj online! Dzięki Rod za przypadki testowe.
Przyjmuje całą listę na płasko jako dane wejściowe. Grupuje elementy w sąsiednie pary za pomocą sztuczki zip / iter , pobiera sumę par i sprawdza, czy wynik jest równy drugiej połowie listy.
Rekurencyjna metoda zbliżył się na 55 bajtów:
Użyto tego, że wejściowe liczby całkowite są dodatnie, co od tego czasu zmieniło się w specyfikacji.
źródło
[0,0,1,1,1,1,1]
.Röda , 40 bajtów
Wypróbuj online!
Jest to anonimowa funkcja, która zwraca się,
0
jeśli nie ma błędów i nic, jeśli są błędy.Wyjaśnienie:
Oto wersja krótsza (35 bajtów), ale niezgodna z regułami (tak myślę):
Wypróbuj online!
Jest to anonimowa funkcja, która odczytuje wartości ze strumienia i wypycha
TRUE
lubFALSE
dla każdej poprawnej linii.Nie jestem pewien, czy to (wiele zwracanych wartości) jest akceptowane w regułach. Oto moja obrona: w Rödzie warunki
if
iwhile
bloki nie są wartościami logicznymi, ale strumieniami. Strumień „prawdomówny” jest pusty lub zawiera tylkoTRUE
s, a strumień „fałsz” zawiera jeden lub więcejFALSE
s. W ten sposób funkcja zwraca wartość „boolean”. I może być użyty jako warunekif
instrukcji bez żadnych operacji redukcji itp.źródło
0
w niej jedna . Nie jestem pewien, jak Röda sobie z tym radzi, ale nie jest to niespotykane.if
warunku. Jeśli tak działa Röda, jest on zgodny z naszymi zasadami, chyba że specyfikacja wyzwania wyraźnie zastępuje wartości domyślne.Python 2 ,
6965 bajtówWypróbuj online!
Zwraca:
Pusta lista jako
Falsy
Suma całkowita jako
Truthy
źródło
Mathematica, 36 bajtów
Czysta funkcja przyjmuje listę zagnieżdżoną jako dane wejściowe i zwraca
True
lubFalse
. FunkcjaTr/@#~Partition~2&
pobiera sumy par listy, które są następnie stosowane (/@#
) do każdej listy podrzędnej listy danych wejściowych. Pierwsza, druga ... podlisty na wynikowej liście powinny być równe drugiej, trzeciej, ... podlistom w pierwotnym wejściu;Most[...]==Rest@#
testy dla tej właściwości.źródło
Python 2 , 80 bajtów
Wypróbuj online!
Nie do końca tak dobra jak druga odpowiedź na python, ale i tak miałem ochotę napisać. To po prostu pokazuje, dlaczego nie jestem tak dobry w golfa w zwykłych językach.
źródło
JavaScript (ES6), 54 bajty
Przyjmuje spłaszczony układ.
źródło
05AB1E ,
1512 bajtówWypróbuj online!
Wyjaśnienie
źródło
Haskell ,
827965 bajtów-14 bajtów dzięki nim!
Działa poprzez porównanie sumy każdej pary elementów z odpowiednim elementem w następnym wierszu w dół. Z niektórych bajtów można prawdopodobnie grać w golfa
f
, ale nie wiem, gdzie.źródło
p
:p(x:y:z)=x+y:p z
a następnie użyćzipWith(==)
zamiastzip
i połączyć listyBool
zand
:f x=and.zipWith(==)(drop(length x`div`2+1)x)$p x
.Python 3 ,
6968 bajtówWiem, że są już dwie inne odpowiedzi na python ... ale ta jest w python 3, więc jest egzotyczna.
Działa to na spłaszczonym wejściu.
Wyjście :
False
jeśli nie ma pomyłki,True
jeśli jest błąd.źródło
Rubinowy, 50 bajtów
Odwracając tablicę, dowolny element pierwszej połowy (pozycja n) musi być sumą elementów w pozycjach n * 2 i n * 2 + 1.
źródło
Brachylog ,
1613 bajtówWypróbuj online!
To jest po prostu strasznie długie! Musi być jakiś sposób, aby nie zagnieżdżać tu predykatów wbudowanych.
Predykat się powiedzie (drukowanie
true.
jako program), jeśli nie zostaną popełnione żadne błędy, awfalse.
przeciwnym wypadku (drukowanie jako program).źródło
Python 2 , 64 bajty
Wypróbuj online!
Nienazwana funkcja, która pobiera listę list (po jednej na linię działania) i zwraca True, jeśli nie popełniono żadnych błędów, lub False w przeciwnym razie.
Działa za pomocą wejścia bez ostatniego wpisu,
a[:-1]
w celu utworzenia co wejście bez pierwszego wpisu powinna być i sprawdzając, czy to, co było wejściowego==a[1:]
.Formacja ta jest osiągana poprzez odwzorowanie funkcji dodawania typu liczby całkowitej
int.__add__
na pary liczb otrzymane z dwóch „wycinków”, przy czym jeden wycinek jest co drugi element zaczynający się od 0 indeksux[::2]
, a drugi wycinek to każdy inny element zaczynający się od pierwszego indeksux[1::2]
.źródło
Pip ,
2019 bajtówJest to anonimowa funkcja, która pobiera jeden argument, listę list (np
[[1 2 3 4] [3 7] [10]]
.). Sprawdź wszystkie przypadki testowe: wypróbuj online!Wyjaśnienie
W funkcji Pip dwa pierwsze argumenty są przypisane do
a
ib
.Na przykład:
źródło
PHP,
9695 bajtów:za pomocą wbudowanych:
funkcje rekurencyjne zwracają
true
lubfalse
.podział na pierwszą funkcję:
starsze rozwiązania (po 96 bajtów) za pomocą pętli:
podział na ostatnią funkcję:
fragmenty iteracyjne, 81 bajtów
przyjmij tablicę predefiniowaną w
$a
; wychodzi z błędem, jeśli jest niepoprawny.źródło
C, 54 bajty:
Nie golfowany:
Przetestuj za pomocą
Jak widać,
f()
zwraca true dla nieprawidłowych danych wejściowych i false (= 0) dla prawidłowych danych wejściowych.Jak zawsze rekurencja ma mniej bajtów niż iteracja, podobnie jak
f()
rekurencja, mimo że argumentami są dwa iteratory. Działa poprzez wielokrotne porównywanie sumy dwóch liczb całkowitych przys
jednej liczb całkowitych przye
, ignorowanie granic poziomów i kontynuowanie aż do spotkania dwóch iteratorów. Użyłem również logicznego zen wraz z faktem, że każda niezerowa wartość całkowita jest uważana za prawdę w C, aby dodatkowo skrócić kod.źródło
R,
9277 bajtówAnonimowa funkcja, która przyjmuje na wejściu płaską sekwencję liczb. Zwraca
TRUE
lubFALSE
odpowiednio. Używa tego samego podejścia koncepcyjnego jak odpowiedź python xnor.Poprzednie rozwiązanie, używając
rollapply
funkcji zzoo
pakietu i biorąc dane wejściowe jako listę, np .list(c(6, 18, 9, 6, 6, 3, 8, 10), c(24, 15, 9, 18), c(39, 27), c(66))
:źródło
JavaScript (ES6),
4644 bajtówPobiera dane wejściowe jako spłaszczoną tablicę. Zwraca
NaN
za ważne lub0
za nieprawidłowe.Test
Pokaż fragment kodu
źródło
PHP, 102 bajtów
parametr wejściowy als url w tym formacie
?0=[1,2,3]&1=[3,3]&2=[6]
użyj tego wejścia[[int,int],[int]]
Awaria
źródło
Japt, 10 bajtów
Pobiera dane wejściowe jako tablicę 2-D.
Spróbuj
źródło