meta = {
    'author': 'Jan Maximilian Michal',
    'title': 'Zeilen sind anders, Spalten auch (I1-ID: lhu27691fzg0)',
    'type': 'gap',
}


gap_1 = """[select]
[1] int n_ze = m.length;
[ ] int n_ze = m[0].length;
[ ] int n_ze = m.length();
[ ] int n_ze = m[0].length();
[/select]"""

gap_2 = """[select]
[ ] int n_sp = m.length();
[ ] int n_sp = m[0].length();
[ ] int n_sp = m.length;
[1] int n_sp = m[0].length;
[/select]"""

gap_3 = """[select]
[ ] for (int i = 1; i <= n_ze; i++)
[1] for (int i = 0; i < n_ze; i++)
[ ] for (int i = 1; i <= n_sp; i++)
[ ] for (int i = 0; i < n_sp; i++)
[/select]"""

gap_4 = """[select]
[ ] ms[i] = ms[i] + m[j][i]*s[i];
[ ] ms[i] = ms[i] + m[i][j]*s[i];
[ ] ms[i] = ms[i] + m[j][i]*s[j];
[1] ms[i] = ms[i] + m[i][j]*s[j];
[/select]"""


task = """ Folgendes Codefragment soll die Multiplikation eines Zeilenvektors mit einer Matrix sowie einer Matrix mit einem Spaltenvektor realisieren. Wählen Sie die fehlenden Zeilen unten entsprechend aus:

```java
01: int[][] m = {{ 0, 1, 2, 3},   // Matrix
02:              { 4, 5, 6, 7},
03:              {8, 9, 10, 11}};
04: int[] z = { 12, 13, 14};      // Zeile
05: int[] s = {15, 16, 17, 18};   // Spalte
06:
07: /* CODEZEILE AUSWÄHLEN */     // Zeilenanzahl der Matrix
08: /* CODEZEILE AUSWÄHLEN */     // Spaltenanzahl der Matrix
09:
10: /* 1: Zeile mal Matrix */011: int[] zm = new int[n_sp];
12: for (int j = 0; j < n_sp; j++) {
13:     zm[j] = 0;
14:     /* CODEZEILE AUSWÄHLEN */
15:         zm[j] = zm[j] + z[i]*m[i][j];
16: }
17: /* 2: Matrix mal Spalte */
18: int[] ms = new int[n_ze];
19: for (int i = 0; i < n_ze; i++) {
20:     ms[i] = 0;
21:     for (int j = 0; j < n_sp; j++)
22:         /* CODEZEILE AUSWÄHLEN */
23:
```

**Zeile 7:**
%s

**Zeile 8:**
%s

**Zeile 14:**
%s

**Zeile 22:**
%s
""" % (gap_1, gap_2, gap_3, gap_4)

feedback = """

Der vollständige Code:

```java
int[][] m = {{ 0, 1, 2, 3},   // Matrix
             { 4, 5, 6, 7},
             {8, 9, 10, 11}};
int[] z = { 12, 13, 14};      // Zeile
int[] s = {15, 16, 17, 18};   // Spalte

int n_ze = m.length;        // Zeilenanzahl der Matrix
int n_sp = m[0].length;     // Spaltenanzahl der Matrix

/* 1: Zeile mal Matrix */011: int[] zm = new int[n_sp];
for (int j = 0; j < n_sp; j++) {
    zm[j] = 0;
    for (int i = 0; i < n_ze; i++)
        zm[j] = zm[j] + z[i]*m[i][j];
}
/* 2: Matrix mal Spalte */
int[] ms = new int[n_ze];
for (int i = 0; i < n_ze; i++) {
    ms[i] = 0;
    for (int j = 0; j < n_sp; j++)
        ms[i] = ms[i] + m[i][j]*s[j];

```
"""