Im Zweifelsfall: Nan = Non-numeric datatype
im Sinne dieser Herausforderung.
Schreiben Sie ein Programm oder eine Funktion, die eine Matrix / ein Array als Eingabe verwendet, sowie eine Liste von Spaltenindizes.
Die Herausforderung besteht darin, die Zeilen zu entfernen, in denen sich alle Elemente in den angegebenen Spalten befinden Nan
. Es spielt keine Rolle, ob andere Elemente in der Zeile numerisch sind oder nicht. Die folgenden Beispiele werden dies hoffentlich klarer machen (es ist einseitig indiziert):
Input array:
16 NaN 3 13
5 11 NaN 8
NaN 7 NaN 12
4 14 -15 1
Input column index: [1 3]
Output array:
16 NaN 3 13
5 11 NaN 8
4 14 -15 1
----
Input array:
16 NaN 3 13
5 11 NaN 8
NaN 7 NaN 12
4 14 -15 1
Input column index: 3
Output array =
16 NaN 3 13
4 14 -15 1
----
Input array:
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
Input column index: 1 2 4
Output array:
[]
Regeln und Erläuterungen:
- Die Matrix ist immer nicht leer
- Die numerischen Werte sind endlich, aber nicht unbedingt ganze oder positive Werte
- Der Spaltenindexvektor kann leer sein (in diesem Fall werden keine Zeilen entfernt).
- Der Spaltenindex enthält niemals Werte, die die Matrixdimensionen überschreiten
- Sie können davon ausgehen, dass die Spaltenindexliste keine Duplikate enthält
- Sie können wählen, ob Sie Werte ohne oder mit einem Index verwenden möchten (bitte angeben).
- Sie können die Eingabe in einem beliebigen Format vornehmen
- Array als Liste von Listen ist OK. Die Spaltenindizes können separate Argumente sein
ans =
und ähnliches wird in der Ausgabe akzeptiert- Sie können frei wählen, welchen nicht numerischen Datentyp Sie verwenden möchten
- Es sollte unmöglich sein, mit diesem Datentyp arithmetische Operationen durchzuführen oder ihn mit Funktionen wie in eine endliche Zahl umzuwandeln
float(x)
.
- Es sollte unmöglich sein, mit diesem Datentyp arithmetische Operationen durchzuführen oder ihn mit Funktionen wie in eine endliche Zahl umzuwandeln
Dies ist Codegolf, also gewinnt der kürzeste Code in Bytes.
J
mitvz
undK
mit ersetzenQ
.z
wird zur Eingabe,Q
zur ausgewerteten Eingabe initialisiert .