Im Zweifelsfall: Nan = Non-numeric datatypeim 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.
JmitvzundKmit ersetzenQ.zwird zur Eingabe,Qzur ausgewerteten Eingabe initialisiert .