Berechnen Sie anhand einer Liste von Zahlen [ a 1 a 2 ... a n ] die Summe aller Matrizen Aᵢ, wobei Aᵢ wie folgt definiert ist ( m ist das Maximum aller aᵢ ):
1 2 ⋯ (i-1) i (i+1) ⋯ n
+----------------------------
1 | 0 0 ⋯ 0 aᵢ aᵢ ⋯ aᵢ
2 | 0 0 ⋯ 0 aᵢ aᵢ ⋯ aᵢ
. . . . . . . .
. . . . . . . .
aᵢ | 0 0 ⋯ 0 aᵢ aᵢ ⋯ aᵢ
aᵢ₊₁ | 0 0 ⋯ 0 0 0 ⋯ 0
. . . . . . . .
. . . . . . . .
m | 0 0 ⋯ 0 0 0 ⋯ 0
Beispiel
Ausgehend von der Eingabe erstellen [2,1,3,1]
wir die folgende Matrix:
[2 2 2 2] [0 1 1 1] [0 0 3 3] [0 0 0 1] [2 3 6 7]
[2 2 2 2] + [0 0 0 0] + [0 0 3 3] + [0 0 0 0] = [2 2 5 5]
[0 0 0 0] [0 0 0 0] [0 0 3 3] [0 0 0 0] [0 0 3 3]
Regeln und E / A.
- Sie können davon ausgehen, dass die Eingabe nicht leer ist
- Sie können davon ausgehen, dass alle Eingänge nicht negativ sind (0 ≤).
- Die Eingabe kann eine 1 × n (oder n × 1) Matrix, Liste, Array usw. sein.
- Ebenso kann die Ausgabe eine Matrix, eine Liste von Listen, ein Array usw. sein.
- Sie können Eingaben über ein beliebiges Standard-E / A-Format vornehmen und zurückgeben
- Ihre Einreichung kann ein vollständiges Programm oder eine vollständige Funktion sein
Testfälle
[0] -> [] or [[]]
[1] -> [[1]]
[3] -> [[3],[3],[3]]
[2,2] -> [[2,4],[2,4]]
[3,0,0] -> [[3,3,3],[3,3,3],[3,3,3]]
[1,2,3,4,5] -> [[1,3,6,10,15],[0,2,5,9,14],[0,0,3,7,12],[0,0,0,4,9],[0,0,0,0,5]]
[10,1,0,3,7,8] -> [[10,11,11,14,21,29],[10,10,10,13,20,28],[10,10,10,13,20,28],[10,10,10,10,17,25],[10,10,10,10,17,25],[10,10,10,10,17,25],[10,10,10,10,17,25],[10,10,10,10,10,18],[10,10,10,10,10,10],[10,10,10,10,10,10]]
Antworten:
Gelee ,
105 BytesProbieren Sie es online aus!
Wie es funktioniert
quelle
R , 80 Bytes
Probieren Sie es online aus!
Nimmt Eingaben von stdin entgegen; druckt eine
0x1
Matrix für die Eingabe0
, die wie folgt drucktquelle
F
ist eine integrierte globale Variable, deren Anfangswert istFALSE
. Hier wird es auf 0 gezwungen und als Anfangswert der kumulierten Summe verwendet. Diese Antwort zeigt den Grund für die NichtverwendungF
undT
außer in Code, der speziell dafür entwickelt wurde, niemals tatsächlich verwendet zu werden!Haskell ,
706651 BytesProbieren Sie es online aus!
quelle
JavaScript (ES6),
8879 ByteRückgabe
[]
für[0]
.Probieren Sie es online aus!
quelle
APL (Dyalog Unicode) , 8 Byte SBCS
Volles Programm. Fordert stdin zur Liste auf und druckt die Matrix in stdout.
Verwendet Dennis 'Methode .
Probieren Sie es online aus!
⎕
stdin⍴⍨¨
r eshape-selfie von jedem↑
Liste der Listen in eine Matrix mischen und mit Nullen füllen⍉
transponieren+\
kumulative zeilenweise SummeDas
⍉
macht keinen rechnerischen Unterschied, daher könnte es möglicherweise weggelassen und\
geändert werden,⍀
um spaltenweise statt zeilenweise zu summieren.quelle
Python 2 , 85 Bytes
Probieren Sie es online aus!
quelle
Oktave , 64 Bytes
Probieren Sie es online aus!
Erläuterung:
Nochmals: Ausdrücke in der Argumentliste und in eval werden in einer Funktion verwendet :)
Dies nimmt
x
als Eingabe und erstellt zwei identische Matrizen, die mit Nullen gefüllt sind, mit den Dimensionenk=a=zeros(length(x),max(x))
. Dies wird erreicht, indem der horizontale Vektorx
mit einem vertikalen Vektor mit addiert wird1:max(x)
, die Dimensionen implizit zu einem 2D-Array erweitert werden und dieser dann mit Null multipliziert wird.~(x+...)
funktioniert leider nicht, da dies zwangsläufiga
ein logisches Array für den Rest der Funktion darstellt.for i=x
ist eine Schleife, die für jede Iterationi=x(1)
danni=x(2)
und so weiter gemacht wird.a(1:i,k++:end)
ist der Teil der Matrix, der für jede Iteration aktualisiert werden soll.1:i
ist ein Vektor, der angibt, welche Zeilen aktualisiert werden sollen. Wenni=0
, dann ist dies ein leerer Vektor, daher wird nichts aktualisiert, sonst ist es1, 2 ...
.++k:end
erhöht diek
Matrix um eins und erstellt einen Bereich vom ersten Wert dieser Matrix (1,2,3...
) bis zur letzten Spalte dera
Matrix.+=i
fügt den aktuellen Wert hinzua
.end,a
beendet die Schleife und gibt ausa
.quelle
GolfScript , 39 Bytes
Probieren Sie es online aus!
Verwendet Dennis 'Algorithmus .
quelle
Wolfram Language (Mathematica) , 42 Bytes
Probieren Sie es online aus!
quelle
Java 10, 142 Bytes
Probieren Sie es online aus.
quelle
Ruby , 50 Bytes
Probieren Sie es online aus!
quelle
Pari / GP , 60 Bytes
Probieren Sie es online aus!
quelle