Wyzwanie:
Weź listę, L zawierającą liczby całkowite dodatnie jako dane wejściowe:
3 5 2 1 6
i utwórz macierz, w której n-ta kolumna zawiera wektor 1: L (n) , w której krótsze wiersze są wypełnione zerami.
Przypadki testowe:
3 5 2 1 6
-----------------
1 1 1 1 1
2 2 2 0 2
3 3 0 0 3
0 4 0 0 4
0 5 0 0 5
0 0 0 0 6
1
-
1
1 2 3 4 3 2 1
-------------------------
1 1 1 1 1 1 1
0 2 2 2 2 2 0
0 0 3 3 3 0 0
0 0 0 4 0 0 0
Zasady:
- Opcjonalne formaty wejściowe i wyjściowe
- Lista list jest akceptowalnym formatem wyjściowym
- Matryca musi być tak mała, jak to możliwe (nie można jej uzupełniać większą liczbą zer niż to konieczne)
- Wygrywa najkrótszy kod w każdym języku
- Wyjaśnienia są bardzo zalecane
Odpowiedzi:
R ,
4038 bajtówWypróbuj online!
Wyjaśnienie:
outer
stosuje swój trzeci argument (funkcję) do wszystkich kombinacji elementów pierwszych dwóch argumentów, generując macierzTRUE
iFALSE
gdzie każda kolumna maTRUE
gdzie1:max(l)
jest mniejsza lub równa odpowiadającemu elementowil
, na przykład gdziel=c(3,5,2,1,6)
:Przypuśćmy więc, że macierz wynikowa jest
A
, a następnieA*m
->A[i,j]=A[i,j]*i
która zmuszaTRUE
do 1 iFALSE
do 0, dając pożądany wynik.źródło
function(l)
jel=scan();
print
aby stracić te bajty.source(...,echo=TRUE)
i czytanie ze stdin jako pełnego programu, jeśli masz alternatywną sugestię, z całą pewnością tam, ale o ile wiem, jest to najbliższy, jaki mamy do konsensusu R w sprawie pełnych programów i na chwilę obecną.Mátl , 8 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Python 3 , 54 bajty
Wypróbuj online!
źródło
Mathematica, 20 bajtów
Zawiera U + F3C7 (wbudowana
Transpose
funkcja Mathematica )Wypróbuj na Wolfram Sandbox
Stosowanie
Wyjaśnienie
źródło
Oktawa , 26 bajtów
Anonimowa funkcja, która wprowadza wektor wiersza i wyprowadza macierz.
Wypróbuj online!
Wyjaśnienie
Rozważ wejście
x = [3 5 2 1 6]
. To wektor wiersza o rozmiarze 1 × 5.1:max(x)
daje wektor wiersza[1 2 3 4 5 6]
, który jest przypisany do zmiennejy
.Transpozycja tego, tj. Wektora kolumny
[1; 2; 3; 4; 5; 6]
, jest<=
porównywana (elementarnie z transmisją) z danymi wejściowymi[3 5 2 1 6]
. Wynikiem jest macierz 6 × 5Wreszcie, pomnożenie (elementarne z rozgłoszeniem) przez wektor kolumny
[1; 2; 3; 4; 5; 6]
, uzyskany jakoy
transponowany, daje pożądany wynik:źródło
05AB1E , 4 bajty
Wypróbuj online! lub jako ładnie sformatowany zestaw testów
źródło
Łuska , 4 bajty
Zwraca listę list
Wypróbuj online!
Wyjaśnienie
źródło
Pyth , 6 bajtów
Wypróbuj tutaj! lub Sprawdź wszystkie przypadki testowe (z ładnym drukiem)!
Wyjaśnienie
Wbudowana wersja transpozycji to :
Działa to w następujący sposób:
źródło
Galaretka , 3 bajty
Wypróbuj online!
Wyjaśnienie
źródło
Właściwie 17 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
Pyke , 3 bajty
Wykorzystuje to nową funkcję Pyke, kodowanie szesnastkowe ... Najlepsze jest to, że wiążemy Jelly! Surowe bajty:
Wypróbuj tutaj!
Odpowiednik ASCII-Pyke miałby 4 bajty :
W jaki sposób?
Oto ładna wersja z ASCII, a tutaj z kodowaniem szesnastkowym.
źródło
Perl 6 , 39 bajtów
Spróbuj
Rozszerzony:
Zauważ, że
zip
kończy się po wyczerpaniu najkrótszej listy danych wejściowych.źródło
C # , 136 bajtów
Dane
Int32[]
i
Tablica liczb całkowitychInt32[,]
Tablica dwukierunkowa.Grał w golfa
Nie golfił
Nieczytelny czytelny
Pełny kod
Prasowe
136 bytes
- Wstępne rozwiązanie.Uwagi
źródło
C (gcc) , 142 bajty
Wypróbuj online!
źródło
Java 10, 115 bajtów
Wyjaśnienie:
Wypróbuj online.
źródło
Perl 5 , 62 + 1 (
-a
) = 63 bajtyWypróbuj online!
źródło
Proton , 38 bajtów
Wypróbuj online!
źródło
Dodaj ++ , 37 bajtów
Wypróbuj online!
źródło
JavaScript (Node.js) , 55 bajtów
Wypróbuj online!
JavaScript (Node.js) , 63 bajty
Wypróbuj online!
źródło