Utwórz kod, który pobiera listę i liczbę jako dane wejściowe i generuje wszystkie możliwe kombinacje o długości liczby. Na przykład z listą {0,1} i liczbą 2 :
00
01
10
11
Twój program nie musi oczekiwać znaków dwa lub więcej razy na liście, takich jak {0,0,0,0,0,1,1,5,5}
Upewnij się, że kombinacje zostały wydrukowane posortowane, w kolejności na liście:
Z listą {0,1} i liczbą 5 (wygenerowaną przez część mojego kodu, co jest zbyt długą wygraną):
00000
00001
00010
00011
00100
00101
00110
00111
01000
01001
01010
01011
01100
01101
01110
01111
10000
10001
10010
10011
10100
10101
10110
10111
11000
11001
11010
11011
11100
11101
11110
11111
Ale z listą {1,0} i liczbą 2 :
11
10
01
00
Jak widać, odwrócona lista oznacza odwróconą kolejność.
Spójrz na strukturę, to jest jak drzewo.
To jest golf golfowy, więc wygrywa najkrótszy kod w bajtach!
Odpowiedzi:
Galaretka , 1 bajt
TryItOnline
Wbudowany atom kartezjański, jako ogniwo diademowe z lewym argumentem liczby i prawym argumentem liczby lub jako pełny program z pierwszym argumentem liczby i drugim argumentem liczby.
źródło
Haskell, 20 bajtów
Przykład użycia:
replicate
tworzyn
kopie drugiego parametru imapM id
buduje kombinacje. Btw,mapM id
jest taki sam jaksequence
, ale 1 bajt mniej.źródło
MATL , 2 bajty
Moc kartezjańska wbudowana ...
Wypróbuj online!
źródło
Pyth, 2 bajty
Program, który pobiera dane z formularza
list,number
i drukuje listę list.Zestaw testowy
Jak to działa
źródło
Perl 6 , 15 bajtów
Wyjaśnienie:
źródło
JavaScript (Firefox 30+), 55 bajtów
Mam 99% pewności, że rekursja jest najlepszym sposobem na zrobienie tego w JavaScript.
źródło
Perl, 30 bajtów
28 bajtów kodu +
-nl
flaga.Aby uruchomić:
Myślę, że przyjmowanie danych wejściowych jako listy liczb jest logiczne dla Perla. Jeśli jednak pozwolimy na trochę fantazji i weźmy dane w nawiasach i przecinkach (jak pokazano w pytaniu), możemy zmniejszyć do 20 bajtów :
Objaśnienia:
glob
początkowym celem w Perlu jest lista i iteracja po nazwach plików, ale gdy jej argument zawiera nawiasy klamrowe, generuje kombinacje utworzone z jednego elementu z każdej grupy nawiasów.-a
autosplit na spacje wejścia i umieść wynik w@F
tablicy.$"
to separator listy: jest to separator wstawiany między elementami listy w ciągu. Ustawiamy na,
, więc"{@F"}
produkuje{.,.}
(jeśli@F
zawiera 0 i 1).Następnie
x
jest operator powtarzania łańcucha (i<>
pobiera jeden wiersz danych wejściowych).I na koniec,
say for
iteruje listę wygenerowaną przezglob
i drukuje elementy.źródło
Mathematica, 6 bajtów
Nadal gorzej niż galaretka :(
Stosowanie
źródło
Python, 57 bajtów
repl.it
Nienazwana funkcja pobierająca listę obiektów
o
oraz liczbęn
i zwracająca listę kombinacji.źródło
Pure Bash, 36
Wprowadzanie za pomocą parametrów wiersza polecenia - lista jest nawiasami rozdzielonymi przecinkami, np .:
Uwaga: lista wejściowa musi być cytowana, aby powłoka wywołująca nie rozwijała jej zbyt wcześnie.
Ideone .
źródło
bash a.sh "{0,1}" 2
->{0,1}{0,1}
(wersja 4.4.5 (1) -release)R ,
5345 bajtówWypróbuj online!
rev
jest zgodny z żądaną dokładną kolejnością sortowania (co nie wydaje się tak naprawdę istotne dla problemu) i dodaje 5 bajtów.źródło
rev
za 45 bajtów :)Rakieta 123 bajtów
Nie golfowany:
Testowanie:
Wynik:
źródło
PHP, 109 bajtów
Traktuje długość jako pierwszy argument, a listę jako kolejne argumenty.
Użyj jak:
Jeśli zostaniesz zapytany o długość 0, wystąpi błąd krytyczny „brak pamięci”.
źródło
05AB1E ,
21 bajtys-1 bajt dzięki @Enigma .
Wypróbuj online.
Wprowadź jako
number\nlist
, wyślij jako listę list.Wyjaśnienie:
źródło
I
tutaj.I
ponieważ początkowo próbowałem wymyślić, jak mieć wiele danych wejściowych, i odwróciłem liczbę i listę. Całkiem głupie, żebyI
tam pozostać .. Dzięki!