Twoim zadaniem jest pobranie elementu wejściowego n
i wyjściowego n
Sekcji remika, sekwencji, którą zrobiłem (przeglądanie OEIS ci nie pomoże).
Definicja
Każdy element Sekwencji remika jest zbiorem prawdziwych lub falseyowych wartości. Np [true, false]
.:
Kroki do stworzenia członka Sekwencji remika są dość proste:
- Zacznij od pierwszego indeksu
[]
(jest to element 0). - Ustaw lewy falsey na prawdę. Jeśli nie ma żadnych fałszów do zmiany, zwiększ długość listy o 1 i ustaw wszystkich członków nowej listy na falsey.
- Powtarzaj krok 2, aż osiągniesz element
n
.
Przykład
Zdefiniujmy naszą funkcję jako rummy(int n)
(wpis {}
jest krokiem do uzyskania odpowiedzi):
>>> rummy(5)
{[]}
{[false]}
{[true]}
{[false, false]}
{[true, false]}
[true, true]
Zasady
- Obowiązują standardowe luki.
- Musi działać dla danych wejściowych 0 przez górną granicę liczbową języka.
- Możesz wyprowadzać dane w dowolny sposób, jaki uznasz za stosowny, pod warunkiem, że jest jasne, że dane wyjściowe są zbiorem prawdy / fałszu.
Drobnostki
Nazywam to „Sekwencją remika”, ponieważ począwszy od indeksu 2, określa zestawy, które należy ustawić w każdej rundzie Progresywnego Remika , gdzie falsey jest książką, a prawdą jest bieg.
Przypadki testowe
>>> rummy(0)
[]
>>> rummy(1)
[false]
>>> rummy(6)
[false, false, false]
>>> rummy(20)
[true, true, true, true, true]
>>> rummy(1000)
[true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]
code-golf
math
array-manipulation
Addison Crump
źródło
źródło
1
do11
, dostajesz000
zamiast100
. ; P1*0*
.Odpowiedzi:
JavaScript ES6,
949272706664 bajtówZaoszczędź 6 bajtów dzięki Neilowi!
Nie sądzę, że można bardziej grać w golfa. Przynajmniej z równaniami.
Wyjaśnienie
Są to dwa główne równania (
n
jest wprowadzane):To da całkowity rozmiar tablicy wyjściowej. W moim programie użyłem
>>1
zamiast(...)/2
nich są takie same, ponieważ pierwszy bit w pliku binarnym ma wartość 2. Przesunięcie spowodujefloor(.../2)
To będzie ilość
true
s.a
jest wynikiem poprzedniego wyrażenia.Oto, co robi składnia:
Ten kod generuje tablicę z zakresem
[0, n)
w tej odpowiedzin
jest pierwszym równaniem..map((_,l)=>l<n)
zapętli to powyżej powyższego zakresu,l
jest to zmienna zawierająca bieżący element w tym zakresie. Jeśli przedmiot jest mniejszy niż liczba faktów, które są (określone na podstawie drugiego równania), to wrócitrue
, w przeciwnym raziefalse
.źródło
>>1
zamiast/2|0
. Użyj(_,l)=>
zamiast.keys()
.Array.from()
?, Wypełnić, czy czegoś innego?[...Array(a)].map((_,l)=>)
co moim zdaniem jest nieco krótsze, ale dobrze złapałem usunięcie niektórych()
s przy zmianie na>>1
, nie zauważyłem tego!a*-~a/2
; Nie wiem, dlaczego wcześniej o tym nie myślałem.Python, 51 bajtów
Zwraca listę 1 i 0.
źródło
Pyth, 8 bajtów
Wypróbuj online: pakiet demonstracyjny lub testowy
Jest to wykładniczo powolne.
Wyjaśnienie:
źródło
Galaretka ,
1311 bajtówKod nie działa w najnowszej wersji Jelly przed opublikowaniem wyzwania, ale działał w tej wersji , która poprzedza wyzwanie.
Wskaźniki są oparte na 1. Wypróbuj online! (zajmuje kilka sekund) lub zweryfikuj wiele danych jednocześnie .
Jak to działa
źródło
05AB1E, 27 bajtów
Zobaczę, czy mogę jeszcze trochę zagrać w golfa i dodam rano wyjaśnienie.
Wypróbuj online
źródło
Java,
117110 bajtówutworzyłem własny typ logiczny, który pozwolił mi zaoszczędzić 7 bajtów
źródło
Python 2,
6963 bajtówPrzetestuj na Ideone .
źródło
Python 2, 61 bajtów
Rozwiązuje dla n = j · (j + 1) / 2 . Dane wejściowe są pobierane ze standardowego wejścia.
Przykładowe użycie
Demo .
źródło
APL (Dyalog Extended) , 21 bajtów SBCS
Wypróbuj online!
źródło