Zadanie
Biorąc pod uwagę zestaw
i liczba całkowita
znajdź N-ty podzbiór.
Wejście wyjście
N jest podane jako liczba całkowita bez znaku na standardowym wejściu. Musisz wydrukować podzbiór n-tym w formacie odpowiednim dla danego języka (może to obejmować [1,2,3]
, {1,2,3}
, [1, 2, 3]
, 1 2 3
, 1,2,3
itd. Tak długo, jak jest to czytelny dla człowieka text format).
Trochę o podzbiorach
Istnieje związek między podzbiorami i liczbami w podstawie drugiej. Każda cyfra
określa, czy i- ty element zestawu należy do podzbioru. Na przykład 00000000 będzie pustym zestawem, a 10000001 jest podzbiorem zawierającym (ostatni i pierwszy element). Otrzymujesz N-ty podzbiór, przekształcając liczbę w podstawę 2, a następnie ten podzbiór zawiera wszystkie elementy, w których . Trzeci podzbiór (3 = 00000011) zawiera zatem . Najbardziej prawą cyfrą jest cyfra 0. Można drukować . Zestaw nie musi być sortowany.[1,8]
[1,2]
[2,1]
Dodatki:
Tak, zestaw jest ustawiony na 1..8
. Zestaw nie jest częścią danych wejściowych. Wejście jest tylko N .
Tak, możesz użyć alternatywnych formularzy wprowadzania.
Wszystkie oczekiwane wyniki dla wszystkich N : https://tio.run/##SyotykktLixN/f/fyNS02qIoP8soJd1CwSAg2kY32LPWPaoqs7jg/38A
1
do8
, czy też dowolny zestaw?"123"
byłyby jednoznaczne. Czy to jest ważneOdpowiedzi:
Galaretka , 3 bajty
Wypróbuj online!
Jak to działa
źródło
R ,
5226 bajtówWypróbuj online!
Konwertuje dane wejściowe na bity i zwraca oparte na 1 indeksy ich położenia
TRUE
. To sprawia, że jest to odpowiedź na galaretkę Dennisa .Zwraca
integer(0)
pustą listę liczb całkowitych do wprowadzenia0
.źródło
Python 2 , 40 bajtów
Wypróbuj online!
źródło
Perl 6 , 33 bajtów
Wypróbuj online!
źródło
Python 2 , 42 bajty
Wypróbuj online!
źródło
K4 , 7 bajtów
Rozwiązanie:
Przykład:
Pierwsze 10 ...
Wyjaśnienie:
źródło
MATLAB / Octave ,
312927 bajtówzmniejszona o 2 bajty dzięki alephalpha
zmniejszona o 2 bajty dzięki Giuseppe
Wypróbuj online!
źródło
@(n)9-find(dec2bin(n,8)-48)
Japt, 7 bajtów
Spróbuj
Spróbuj
źródło
Łuska , 5 bajtów
Pobiera dane wejściowe jako argument wiersza poleceń nie na stdin ( mam nadzieję, że jest w porządku ), spróbuj online!
Wyjaśnienie
źródło
Haskell ,
5554 bajtówWysyła zestaw w odwrotnej kolejności, spróbuj online!
Wersja ogólna, 56 bajtów
Wypróbuj online!
Wyjaśnienie
Termin
mapM (pure [0,1]) [1..n]
generuje listę (n=4
)[[0,0,0,0],[0,0,0,1],[0,0,1,0],..,[1,1,1,1]]
- tj. reprezentacje binarne[0..2^n-1]
. Indeksowanie w nim za pomocąn
daje binarną reprezentacjęn
.Teraz możemy to
zip
zrobić za pomocą liczb odwróconych[1..n]
i zachować tylko te elementy, w których cyfra binarna jest niezerowa:źródło
Węgiel drzewny , 11 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Jeśli wydrukowanie odpowiedzi w poziomie bez spacji jest dopuszczalne, pierwszy znak można usunąć. Wyjaśnienie:
źródło
JavaScript (ES6), 37 bajtów
+4 bajty, jeśli separator jest obowiązkowy
+3 bajty, jeśli ten separator jest przecinkiem i dozwolony jest przecinek wiodący
Wypróbuj online!
źródło
Perl 6 , 21 bajtów
Wypróbuj online!
Alternatywny:
źródło
Common Lisp, 57 bajtów
Wypróbuj online!
źródło
Haskell , 33 bajty
Wypróbuj online!
37 bajtów
Wypróbuj online!
Przypadki testowe od nich.
źródło
J ,
1310 bajtówWypróbuj online!
źródło
Japt, 7 bajtów
Przetestuj online
Japt, 7 bajtów
Przetestuj online
źródło
C # (interaktywny kompilator Visual C #) , 47 bajtów
Wypróbuj online!
Wygląda teraz podobnie do rozwiązania Java, chociaż samodzielnie wymyśliłem mój.
źródło
Python 3.6, 58 bajtów
źródło
Wolfram Language (Mathematica) , 32 bajty
Wypróbuj online!
źródło
Pari / GP , 31 bajtów
Wypróbuj online!
źródło
APL + WIN, 13 bajtów
Monity o N:
Wypróbuj online! Dzięki uprzejmości Dyalog Classic
Wyjaśnienie:
Zwraca podzbiór w odwrotnej kolejności
źródło
Burleska - 8 bajtów
Wypróbuj online.
źródło
Oracle SQL, 77 bajtów
Testuj w SQL Plus
źródło
MathGolf , 8 bajtów
Wypróbuj online!
Wyjaśnienie
Alternatywny format wyjściowy
Z bardziej elastycznym formatem wyjściowym (który moim zdaniem wygląda całkiem dobrze) mogę wymyślić 6-bajtowy:
Zamiast mapowania używam niejawnego for-each i pomijam spłaszczanie. Dane wyjściowe wyglądają tak:
źródło
Rubinowy , 31 bajtów
Wypróbuj online!
źródło
F # (mono) , 45 bajtów
Wypróbuj online!
Zaimplementowałem również funkcję generyczną / rekurencyjną, ale jest ona dość brzydka, a liczba bajtów jest znacznie większa ...
F # (mono) , 107 bajtów
Wypróbuj online!
źródło
05AB1E , 6 bajtów
Wypróbuj online lub sprawdź wszystkie możliwe przypadki testowe .
Wyjaśnienie:
źródło
Java 8, 58 bajtów
Wypróbuj online.
Wyjaśnienie:
źródło