W dniu 13.03.2018 16:45 UTC zwycięzcą jest odpowiedź nr 345 autorstwa Scrooble . Oznacza to, że konkurs został oficjalnie zakończony, ale możesz kontynuować publikowanie odpowiedzi, pod warunkiem, że będą one zgodne z zasadami.
Ponadto wystarczy krótkie zawołanie do trzech największych osób odpowiadających pod względem liczby odpowiedzi:
1. NieDzejkob - 41 odpowiedzi
2. KSmarts - 30 odpowiedzi
3. Hyper Neutrino - 26 odpowiedzi
To jest łańcuchowe pytanie, które wykorzystuje sekwencje z OEIS i długość poprzedniego przedłożenia.
To pytanie łańcuchowe odpowiedzi będzie działać w następujący sposób:
- Wyślę pierwszą odpowiedź. Wszystkie inne rozwiązania muszą z tego wynikać.
- Następny użytkownik (nazwijmy go użytkownik A) znajdzie sekwencję OEIS, w której jej numer indeksu (patrz poniżej) jest taki sam jak długość mojego kodu.
- Korzystając z sekwencji, muszą następnie zakodować, w nieużywanym języku , program, który przyjmuje liczbę całkowitą jako dane wejściowe, n i wypisuje nty numer w tej sekwencji.
- Następnie umieszczają swoje rozwiązanie po moim, a nowy użytkownik (userB) musi powtórzyć to samo.
n
P określenie sekwencji jest terminem n razy po pierwszym pracy z pierwszą wartością jest pierwsza wartość względu na jego stronie OEIS. W tym pytaniu użyjemy indeksowania 0 dla tych sekwencji. Na przykład w przypadku A000242 i n = 3
prawidłowy wynik to 25 .
Jednak!
To nie jest gra w golfa , więc najkrótszy kod nie ma znaczenia. Ale długość twojego kodu wciąż ma wpływ. Aby zapobiec duplikowaniu sekwencji, twoje bajty muszą być unikalne . Oznacza to, że żaden inny przedstawiony tutaj program nie może mieć takiej samej długości w bajtach jak Twój.
Jeśli nie ma sekwencji odpowiadającej długości ostatniego postu, to sekwencja postu jest najniższą nieużywaną sekwencją. Oznacza to, że użyte sekwencje również muszą być unikalne i że sekwencja nie może być taka sama jak liczba bajtów.
Po opublikowaniu odpowiedzi i braku nowych odpowiedzi przez ponad tydzień, wygra odpowiedź przed ostatnim (tym, który nie złamał łańcucha).
Wejście i wyjście
Obowiązują ogólne zasady wejścia i wyjścia. Dane wejściowe muszą być liczbą całkowitą lub ciągiem znaków reprezentujących liczbę całkowitą, a dane wyjściowe muszą mieć poprawną wartość w sekwencji.
Formatowanie
Podobnie jak w przypadku większości pytań wymagających odpowiedzi, sformatuj swoją odpowiedź w ten sposób
# N. language, length, [sequence](link)
`code`
[next sequence](link)
*anything else*
Zasady
- Po opublikowaniu odpowiedzi musisz poczekać przynajmniej godzinę.
- Nie możesz publikować dwa razy (lub więcej) z rzędu.
- Numer indeksu sekwencji to liczba po
A
części, z usuniętymi zerami wiodącymi (np. DlaA000040
numeru indeksu to 40) - Możesz założyć, że ani dane wejściowe, ani wymagane dane wyjściowe nie znajdą się poza zakresem liczbowym Twoich języków, ale nie nadużywaj tego, wybierając na przykład język, który może używać tylko cyfry 1.
- Jeśli długość Twojego zgłoszenia jest większa niż 65536 znaków, podaj link do sposobu dostępu do kodu (na przykład pastebin).
n
nigdy nie będzie większy niż 1000 ani nie będzie poza zakresem sekwencji, po prostu po to, aby zapobiec rozbieżnościom w dokładności w powstrzymywaniu języka przed konkurowaniem.- Co 150 (poprawnych) odpowiedzi rośnie liczba przypadków, w których można użyć języka. Po opublikowaniu 150 rozwiązań każdy język może być używany dwukrotnie (wszystkie wcześniejsze odpowiedzi się liczą). Na przykład, gdy opublikowano 150 odpowiedzi, Python 3 może być użyty dwukrotnie, ale z uwagi na fakt, że został już użyty raz, oznacza to, że można go użyć tylko raz, dopóki nie zostanie opublikowanych 300 odpowiedzi.
- Bądź pomocny i opublikuj link do następnej sekwencji, która ma być użyta. Nie jest to wymagane, ale jest zaleceniem.
- Różne wersje języków, np. Python 2 i Python 3 są różnymi językami . Zasadniczo, jeśli obie wersje są dostępne w Try It Online, są to różne języki, ale należy pamiętać, że jest to ogólna zasada, a nie sztywna odpowiedź.
- Nie jest to zbanowane, ale proszę nie kopiować kodu ze strony OEIS i próbować go rozwiązać.
- Kodowanie jest dozwolone tylko wtedy, gdy sekwencja jest skończona. Pamiętaj, że odpowiedź na to pytanie ( # 40 ) stanowi wyjątek od reguły. Kilka odpowiedzi na wczesnym etapie łańcucha kodu, ale można je zignorować, ponieważ nie ma sensu usuwać łańcucha do, powiedzmy, # 100.
Fragment łańcucha odpowiedzi
źródło
float
/double
typu, aby wygenerować wartości dla większychn
?Odpowiedzi:
345. brainfuck , 162 bajty, A000301
Wypróbuj online!
Następna sekwencja!
Pobiera to znak wejściowy z punktem kodowym
n
(według specyfikacji BF) i wypisuje w ten sam sposób. Aby zobaczyć liczby, sugeruję użycie EsotericIDE @ Timwi .Wyjaśnienie:
Ponieważ przechowuje to wszystkie liczby Fibonacciego do ważnej, nie powiedzie się NAPRAWDĘ duże wejście na ograniczonej taśmie.
Można to znacznie skrócić poprzez twarde zakodowanie bazy (2), ale golfowość nie stanowi żadnego problemu.
źródło
22. FiM ++ , 982 bajty, A000024
Następna sekwencja
źródło
1. Trójkątny , 10 bajtów, A000217
Wypróbuj online!
Następna sekwencja
Jak to działa
Kod jest formatowany do tego trójkąta
z adresem IP rozpoczynającym się na
$
południowym wschodzie i przemieszczającym się (SE, heh), działa w następujący sposób:źródło
A000217 Triangular numbers
...73. Starry , 363 bajty, A000252
Wypróbuj online!
Następna sekwencja
Korzysta ze wzoru „
a(n) = n^4 * product p^(-3)(p^2 - 1)*(p - 1)
gdzie produkt jest ponad wszystkimi liczbami pierwszymi p, które dzielą n” od OEIS.Księżyc nie ma opozycji, ale hej, to nie jest golf golfowy.
źródło
97. Python 3 (PyPy) , 1772 bajtów, A000236
Przede wszystkim bardzo dziękuję dr Maxowi Aleksiejewowi za cierpliwość wobec mnie. Mam szczęście, że mogłem skontaktować się z nim przez e-mail, aby zrozumieć to wyzwanie. Jego Math.SE odpowiedź tutaj pomógł mi dużo. Podziękowania dla Kreatora pszenicy za pomoc. :)
Wypróbuj online!
Jeśli daje zły wynik, po prostu zwiększ 100 do czegoś większego. Myślę, że 10000 będzie działać na 4, ale zostawię komputer na noc, aby to potwierdzić; zakończenie może potrwać kilka godzin.
Zauważ, że część (PyPy) jest po to, abym mógł ponownie używać Pythona. Naprawdę nie znam wielu innych języków i nie zamierzam przenosić tego na Javę i ryzykuję, że nie skończę na czas.
Następna sekwencja (Proszę, nie róbcie już żadnych szalonych zadań matematycznych; nie mam już żadnych wersji Pythona, więc ktoś inny będzie musiał zapisać to wyzwanie D :)
źródło
107. TrumpScript , 1589 bajtów, A000047
Wypróbuj online!
Przy pierwszym programowaniu w TrumpScript możliwe jest, że kilka razy wymyśliłem koło ponownie - 4 linie są przeznaczone do obliczania 2 ^ n. Starałem się, aby wyglądało to tak, jak mógł powiedzieć (pijany) Trump. Jako bonus, oto skrypt w języku Python, który napisałem, aby sprawdzić, czy wszystko robię dobrze. Istnieją pewne różnice w stosunku do powyższego programu, ale większość z nich jest bezpośrednio równoważna.
Następna sekwencja!
źródło
I will make cat feel good
O_OI will make Business Cat feel good
nie zadziała ...30. Python 1 , 1112 bajtów, A000046
Wypróbuj online!
Nawet nie zawracam sobie tym głowy golfa. Hej, to nie moja najdłuższa odpowiedź w języku Python na tej stronie!
Następna sekwencja
źródło
_
ma znaczenia; musimy to po prostu powtarzać wiele razy2. Haskell, 44 bajty, A000010
Wypróbuj online!
Następna sekwencja
źródło
9. Pyth , 19 bajtów, A000025
Zestaw testowy .
Następna sekwencja
źródło
>Q0
zamiastQ
, aby, wiesz, następną sekwencją była A000019.Keywords: easy,nice
8. Mathematica (10.1), 25 bajtów, A000070
Następna sekwencja
źródło
206. Proton , 3275 bajtów, A000109
Wypróbuj online!
Następna sekwencja
źródło
308. ENIAC (symulator) , 3025 bajtów, A006060
Pseudo kod:
Brak symulatora online, wynik wykonania:
Rejestry i stałe:
Przepływ sygnału programu i przepływ danych:
Pełny „kod” na pastebinie lub w komentarzach HTML w znacznikach tej odpowiedzi, aby zapobiec linkrotowi i dość długiej odpowiedzi do przewijania w tym samym czasie. To jest fajne!
Następna sekwencja
źródło
15. CJam, 85 bajtów, A000060
Demo online
Następna sekwencja
Sekcja
OEIS daje
gdzie
źródło
67. LOLCODE , 837 bajtów, A000043
Mój klawisz Capslock musi uciec, więc napisałem to wszystko, trzymając Shift.
Wypróbuj online!
Następna sekwencja
źródło
PRAIME
upper
to zrobił.gggUG
vim tam, gdzie to napisałem, ale nie jestem taki sprytny10. Magma, 65 bajtów, A000019
Wypróbuj tutaj
wbudowane lol
Następna sekwencja
źródło
24. Julia 0,5 , 33 bajty, A000023
Rozszerzenie egf exp (-2 * x) / (1-x).
Wypróbuj online!
Następna sekwencja.
źródło
121. Pip , 525 bajtów, A000022
Demo online
Następna sekwencja
Ciekawostka: kiedy po raz pierwszy opublikowano wyzwanie, sporządziłem listę małych, nieprzyjemnych numerów sekwencji, które chciałem wycelować w CJam, a A000022 był na szczycie listy.
To implementuje funkcję generowania opisaną w EM Rains i NJA Sloane, On Cayley's Enumeration of Alkanes (or 4-Valent Trees) , Journal of Integer Sequences, tom. 2 (1999), biorąc sumę na tyle określeń, ile jest koniecznych do ustalenia współczynnika th, a następnie teleskopowo trzy czwarte sumy. W szczególności teleskopowanie pierwszej połowy oznacza, że wskaźnik cyklu musi być zastosowany tylko do jednego z nich, a nie do wszystkich.
Ck
n
S4
Th
Kod rozkłada się jak
Zauważ, że jest to mój pierwszy w historii program Pip, więc prawdopodobnie nie jest bardzo idiomatyczny.
źródło
156. C # (mono), 2466 bajtów, A000083
Uwaga: wynik wynosi 2439 bajtów dla kodu i 27 dla flagi kompilatora
-reference:System.Numerics
.Demo online . Jest to pełny program, który pobiera dane z wiersza poleceń.
Następna sekwencja
Sekcja
Śledzę komentarz Bowena w OEIS, że funkcja generująca, w
A000083(x) = A000237(x) + A035349(x) - A000237(x) * A035350(x)
której funkcje generujące komponent są powiązane przez przekształcenia asA000237(x) = x EULER(A035350(x))
A035350(x) = BIK(A000237(x))
A035349(x) = DIK(A000237(x))
Używam definicje
BIK
iDIK
z https://oeis.org/transforms2.html ale wzory wydają się mieć wiele literówek. PoprawiłemLPAL
bez większych trudności i samodzielnie wyprowadziłem wzórDIK
oparty na zastosowaniu wyliczenia Pólyi do indeksu cyklu grupy dwuściennej . Między 121 a 156 dużo się uczę o wyliczaniu Pólyi. Przedłożyłem niektóre erraty , które mogą okazać się przydatne dla innych osób, jeśli te transformacje pojawią się ponownie w łańcuchu.źródło
3. JavaScript (ES6), 38 bajtów, A000044
Wypróbuj online!
Następna sekwencja (powinna być łatwa: P)
źródło
13. VB.NET (.NET 4.5), 1246 bajtów, A000131
A001246
Wypróbuj online!
źródło
91. Python 2 (PyPy) , 1733 bajtów, A000066
Wypróbuj online!
Mam nadzieję, że użycie Python 2 PyPy liczy się jako kolejna ważna wersja. Jeśli ktoś mógłby zdobyć dla mnie interpreter języka Python 0, mógłbym również tego użyć, ale mam nadzieję, że jest to poprawne.
Zaczyna się to od 1 wierzchołka i działa, tworząc macierz przyległości dla każdego możliwego niekierowanego wykresu z tyloma wierzchołkami. Jeśli jest trójwartościowy, przejrzy zestaw power krawędzi, który zostanie posortowany według długości. Jeśli pierwszy cykl, który znajdzie, jest zbyt krótki, przejdzie dalej. Jeśli pierwszy znaleziony cykl pasuje do wartości wejściowej (przesunięcie o 3), wyświetli prawidłową liczbę wierzchołków i zakończy działanie.
Next Sequence <- miej łatwą przerwę od wszystkich tych nonsensów matematycznych: D
EDYCJA : Dodałem kilka optymalizacji, aby uczynić go nieco szybszym (wciąż nie mogę obliczyć trzeciego terminu w granicach 60 sekund TIO) bez zmiany liczby bajtów.
źródło
232. Funky ,
326330332 bajtów, A000938Wypróbuj online!
Polyglot z Javascriptem. Wypróbuj online!
Następna sekwencja .
Użyj wzoru na stronie OEIS dla
O(n^2 log n)
złożoności, a nie naiwnościO(n^6)
.Szybkie wyjaśnienie:
a[n_] := 2*Sum[(n - k + 1)*(n - m + 1)*GCD[k - 1, m - 1], {m, 2, n}, {k, 2, n}] - n^2*((n^2 - 1)/6)
opisany w sekcji kodu Mathematica.Dowód formuły:
Wzór jest równoważny z tym .
Niech wielkość ramki ograniczającej trzech punktów będzie
m * k
. Rozważ 2 przypadki:k != 0
orazm != 0
: Istnieją 2 sposoby wyboru orientacji trzech punktów (\
lub/
),gcd(k-1, m-1)-1
sposoby wyboru punktu leżącego pomiędzy pozostałymi 2 punktami oraz(n - k) × (n - m)
sposoby wyboru położenia ramki granicznej.k == 0
lubm == 0
: Istnieją 2 sposoby wyboru orientacji (|
lub-
),n
sposoby wyboru wiersza / kolumny, na których leżą punkty, orazBinomial[n, 3] == (n*(n-1)*(n-2)) / 6
sposoby wyboru punktów w tym rzędzie / kolumnie.Niektóre notatki poliglotyczne:
return
. Jednak, jak wyjaśnił ATaco , [Funky] uważa, żereturn
jest zmienną. Więc analizuje to wyrażenie, które wygodnie nic nie robi, a następnie analizuje następne wyrażenie. I to jest używane jako wynik.^
jako bitowej xor, w przeciwieństwie do Funky, który wykorzystuje^
jako potęgowanie. Dlategon*n
należy go używać zamiast wn^2
celu zapewnienia zgodności z Javascriptem.+
,-
,*
, itd.) Mają równe pierwszeństwo iw prawo zrzeszania się, więc wyrażenia muszą być odpowiednio umieszczone w nawiasach.źródło
11. Pari / GP, 64 bajty, A000065
Wypróbuj online!
Następna sekwencja
źródło
;_; I solved A000064 and you changed it. Downvoted.
281. Java 5, 11628 bajtów, A000947
Wypróbuj online!
Dygresja:
Może to przerwać łańcuch.Nowy rekord na dużej liczbie bajtów!Ponieważ (błędnie?) Używam spacji zamiast tabulatorów, liczba bajtów jest większa niż to konieczne. Na mojej maszynie jest to 9550 bajtów. (w momencie pisania tej wersji)20
wfor (int i = 0; i < 20; ++i)
na1000
)Tak! Może to obliczyć więcej terminów niż te wymienione na stronie OEIS! (po raz pierwszy, dla wyzwania muszę używać Java), chyba że OEIS ma gdzieś więcej warunków ...
Szybkie wyjaśnienie
Objaśnienie opisu sekwencji.
Sekwencja pyta o liczbę wolnych nieplanarnych polenoidów z grupą symetrii C 2v , gdzie:
Weźmy na przykład drzewa
Pierwszy nie może być osadzony w sześciokątnej kratce, podczas gdy drugi może. To szczególne osadzenie jest uważane za różne od trzeciego drzewa.
(2)
a(3)
drzewo powyżej jest płaskie. Ten jest jednak niepłaski:(jest 7 wierzchołków i 6 krawędzi)
Na przykład jedyny polienoid z 2 wierzchołkami
ma 3 płaszczyzny odbicia: poziomy
-
, pionowy|
i równoległy do ekranu komputera■
. To za dużo.Z drugiej strony ten
ma 2 płaszczyzny refleksji:
/
i■
.Objaśnienie metody
A teraz podejście do tego, jak liczyć liczbę.
Po pierwsze, biorę formułę
a(n) = A000063(n + 2) - A000936(n)
(wymienioną na stronie OEIS) za pewnik. Nie przeczytałem wyjaśnienia w gazecie.[TODO napraw tę część]
Oczywiście liczenie planarne jest łatwiejsze niż liczenie niepłaskie. To właśnie robi papier.
Więc ... program zlicza liczbę płaskich polenoidów i odejmuje ją od sumy.
Ponieważ drzewo i tak jest płaskie, ma oczywiście
■
płaszczyznę odbicia. Zatem warunek sprowadza się do „zliczenia liczby drzew z osią odbicia w ich reprezentacji 2D”.Naiwnym sposobem byłoby wygenerowanie wszystkich drzew z
n
węzłami i sprawdzenie poprawności symetrii. Ponieważ jednak chcemy znaleźć tylko liczbę drzew z osią odbicia, możemy po prostu wygenerować wszystkie możliwe pół-drzewa na jednej połowie, odbić je przez oś, a następnie sprawdzić poprawność symetrii. Ponadto, ponieważ generowane polioidy są drzewami (płaskimi), muszą dokładnie dotknąć osi odbicia.Funkcja
public static Graph[] expand(Graph[] graphs, Point.Predicate fn)
pobiera tablicę wykresów, z których każdy man
węzły i wyprowadza tablicę wykresu, każdy man+1
węzły, które nie są sobie równe (w tłumaczeniu) - tak, że dodany węzeł musi spełniać predykatfn
.Rozważ 2 możliwe osie odbicia: jedną przechodzącą przez wierzchołek i pokrywającą się z krawędziami (
x = 0
) oraz drugą, która jest prostopadłą dwusieczną krawędzi (2x = y
). Możemy wziąć tylko jeden z nich, ponieważ generowane wykresy są zresztą izomorficzne.Tak więc, dla pierwszej osi
x = 0
, zaczynamy od wykresu podstawowego składającego się z pojedynczego węzła(1, 0)
(w przypadku, gdyn
jest nieparzysty) lub dwóch węzłów z krawędzią pomiędzy(1, 0) - (2, 0)
(w przypadku, gdyn
jest parzysty), a następnie rozwiń węzły, abyy > 0
. Odbywa się to w sekcji programu „Typ odbicia 1”, a następnie dla każdego wygenerowanego wykresu odbij się (odbicie lustrzane) przez oś Xx = 0
(g.reflectSelfX()
), a następnie sprawdź, czy ma prawidłową symetrię.Zauważ jednak, że jeśli
n
można podzielić przez 2, w ten sposób policzyliśmy każdy wykres dwukrotnie, ponieważ generujemy również jego odbicie lustrzane według osi2x = y + 3
.(zwróć uwagę na 2 pomarańczowe)
Podobnie dla osi
2x = y
, jeśli (i tylko jeśli)n
jest parzysta, zaczynamy od punktu(1, 1)
, generujemy wykresy, które2*x > y
odbijają każdy z nich nad2x = y
osią (g.reflectSelfType2()
), łączymy(1, 0)
się(1, 1)
i sprawdzamy, czy mają prawidłową symetrię. Pamiętaj też o podzieleniu przez 2.źródło
6. R , 71 bajtów, A000072
Wypróbuj online!
Następna sekwencja
źródło
the answer before the last posted (the one who didn't break the chain) will win
14. Python 2 , 60 bajtów, A001246
Wypróbuj online!
Następna sekwencja.
źródło
26. TI-BASIC, 274 bajty , A000183
Ocenia rekurencyjną formułę znalezioną na łączu OEIS.
Następna sekwencja
źródło
34. Prolog (SWI) , 168 bajtów, A000073
Wypróbuj online!
Następna sekwencja
źródło
49. SageMath , 74 bajty, A000003
Wypróbuj online!
Następna sekwencja
źródło
76. Pigmej , 4147 bajtów, A000036
Następna sekwencja
Możesz uruchomić kod na tej stronie . Na przykład możesz uzyskać 10. liczbę w sekwencji, kopiując powyższy kod i dodając:
źródło