Regeln
Keine Zellbereichsreferenzen (
A2:B3
).Maximal 9 Zeilen und 9 Spalten.
Keine Zirkelverweise oder Formelfehler.
Leere Zellen werden zu ausgewertet
0
.Daten sind nur Zahlen, können aber als Zeichenketten verwendet werden.
Formeln sind Zeichenfolgen.
Auswahl der Implementierung
Sie müssen Ihre Auswahl in diesen Angelegenheiten angeben:
Erfordert Formeln, denen ein einzelnes Zeichen vorangestellt wird, z
=
. B. - oder nicht.Die Zelle ganz links in der zweiten Zeile ist
A2
oderR2C1
gemäß den beiden von Excel et al.Benötigen Sie ein einzelnes Prä- oder Suffix in Zellreferenzen, z
$
. B. - oder nicht.Eine der folgenden Optionen: Null, leere Zeichenfolge, leere Liste usw. (jedoch nicht
0
), um leere Zellen darzustellen.Sprache Ihrer Einreichung (Tabellenkalkulationsmanager sind nicht erlaubt).
Sprache für die Formeln (kann von oben abweichen). *
Brownie-Punkte oder Cookies zur Erläuterung Ihrer Lösung.
Beispiele
Wahlmöglichkeiten: 7: =
; 8 A2
:; 9: keine; 10 ""
:; 12: Excel-Formelsprache
Im:
[[ 2, 3],
["=A1+B1",""]]
Aus:
[[2,3],
[5,0]]
Im:
[[ 2,"=A1+B2"],
["=A1+B1", ""]]
Aus:
[[2,2],
[4,0]]
Im:
[[ 3, 4,"=A1*B1"],
[ 2, 5,"=A2*B2"],
["","","=C1+C2"]]
Aus:
[[3,4,12],
[2,5,10],
[0,0,22]]
Im:
[["","=2*B2*B3" ,""],
[ 3,"=A1+(A2+C2)/2", 2],
[ 1,"=C1+(A3+C3)/2", 5]]
Aus:
[[0,15, 0],
[3, 2.5,2],
[1, 3 ,5]]
* Die Formelsprache muss PPCG-zulässig sein , aber Sie müssen nur die Zellreferenzen sowie die Kriterien 3 und 4 unterstützen, Assistent. Zugabe- und Primheitsbestimmung.
Expand array to cells, evaluate.
R0C0
?Antworten:
JavaScript,
125112105 BytesZu verwenden,
f=
am Anfang hinzufügen und wie aufrufenf(argument)
.Auswahlmöglichkeiten:
=
.A2
.""
(Leere Zeichenfolge), um eine leere Zelle zu kennzeichnen.Erläuterung:
Diese Lösung durchläuft alle Zellen des Arbeitsblatts (jedes Element der Unterarrays des angegebenen Arrays). Wenn eine nicht leere Zeichenfolge gefunden wird, werden ihre Zellreferenzen durch die entsprechenden Referenzen im Hinblick auf das angegebene Array ersetzt und der Ausdruck ausgewertet mit
eval()
(ja, das böse Ding, das dich in deinen Albträumen verfolgt ). Diese Lösung setzt voraus, dass die im Eingabearray angegebenen Konstanten vom Typ Integer sind.Testfälle
quelle
/\w\d/g
für Ihre Regex verwenden können?\w
entspricht auch Ziffern und\d
0, beides, was Sie in diesem Fall nicht wollen./[A-I][1-9]/g
sollte aber funktionieren/\w\d/g
liefert in den Testfällen genau die gleichen Ergebnisse. Auch die Verwendung eines Vorlagenliteral im eval-Teil könnte eine Handvoll Bytes einsparen.PHP,
265 263 259 258 257 240 224 222 213 202196 Bytesmit
array_walk_recursive
einer rekursiven anonymen Funktion undpreg_replace_callback
:oder
Funktioniert bei Eingabe: Aufruf durch Referenz. Testen Sie es online .
R2C1
, kein PräfixAufschlüsselung (erste Version)
quelle
max(range(A1,A3))
es verwirrend sein könnte. : D$d=$c;preg_match($x="#[A-Z](.)#",$c=$c[0]
zupreg_match($x="#[A-Z](.)#",$c=($d=$c)[0]
sparen.Mathematica,
11911595 BytesAuswahlmöglichkeiten:
R2C1
Stil.""
für leere Zellen.RxCy
und keine Nebenwirkungen haben, sollten funktionieren.Erläuterung
Wir beginnen damit, alle leeren Zeichenfolgen in der input (
#
) durch Nullen zu ersetzen und das Ergebnis in zu speichernm
, da wir dies an einer anderen Stelle erneut benötigen.Ersetzen Sie die verbleibenden Zeichenfolgen wiederholt durch
s
die folgenden Zeichenfolgen :Ordnen Sie alle Teilzeichenfolgen des Formulars
RxCy
zus
und ersetzen Sie sie durch ...Was gibt
m[[x,y]]
, was verwendetx
undy
als Indizes in die Matrixm
.Finallz, werte diesen String als Mathematica-Ausdruck aus.
quelle
Clojure,
263281 BytesOh verdammt, ohne das ist
apply map vector
das Ergebnis in transponiert, wieA2
es alphabetisch vorher istB1
.Beispiele:
A2
(+ A1 A2)
ist in Ordnungnil
undfalse
arbeiten als leere Zellen, aber leere Zeichenfolge nichtEin Beispiel für ein Thread-First-Makro:
Startwert von
C
in der Schleife ist eine Hash-Map, Schlüssel sind Zellennamen und Werte sind Originalwerte. Dann werden alleP
Zellreferenzen durch den Inhalt der referenzierten Zellen ersetzt, bis wir konvergiert haben ( revious =C
urrent), dann werden die Zellen ausgewertet und die flache Struktur wird zurück in eine verschachtelte Liste partitioniert.Wäre cool, eine Lösung zu finden, wo
A1
,A2
usw. sind eigentlich aufrufbare Funktionen, dann(* 2 B2 B3)
könnte neu geschrieben werden(* 2 (B2) (B3))
und ausgeführt.Probieren Sie es online!
quelle
APL (Dyalog) , 51 Bytes
Keiner
A2
Keiner
Leerer String
APL
APL
Probieren Sie es online!
⍎¨
Bewerten Sie jede Zelle des Ergebnisses von(
…)⍣≡
Die folgenden beiden Funktionen kontinuierlich anwenden, bis sich nichts mehr ändert{
erste anonyme Funktion angewendet werden ...0
Bei::
Fehlern:⍵
Das Argument wird unverändert zurückgegeben⋄
jetzt versuche es;⍵
wenn das Argument≢
tally:×
positiv ist:
dann:⍕
stringify⍎
den ausgewerteten⍕
Zeichenfolge⍵
Argument⋄
sonst;0
Null zurückgeben}¨
... zu jeder Zelle{
zweite anonyme Funktion angewendet werden ...'←',¨
Stellen Sie jeder Zelle des⍵
Arguments einen Zuweisungspfeil voran(
…),¨
Stellen Sie jeder Zelle Folgendes voran1↓
fällt die erste von⎕D
der Zeichenfolge aller D igits (dh null)⎕A
Mit allen Buchstaben des A lphabet nach unten geht,∘.,
machen eine Verkettung Tabelle (mit den restlichen Ziffern gehen rechts)⍉
transponieren (um Zahlen nach unten zu bringen, Buchstaben nach rechts fortlaufend)(
…)↑
Nimm die obere linke Submatrix mit der Größe von…⍴
die Größe des⍵
Arguments}
… Zum Ergebnis der vorherigen Funktion.quelle
Python 2
273,265,263, 259 BytesProbieren Sie es online!
Auswahlmöglichkeiten:
=
A2
keiner
""
Python 2.7
Python-Ausdrücke
Grundlegende Erklärung:
Ersetzen Sie jede Formel in der Unterliste durch den entsprechenden Listenindex (dh für B1 s [0] [1]) und werten Sie das Ergebnis aus!
quelle
s=[[ 3, 4,"max(A1,B1)"],[ 2, 5,"A2**B2"],[ "", "","C1+C2"]]
[[ 3, 4,"=max(A1,B1)"],[ 2, 5,"=A2**B2"],[ "", "","=C1+C2"]]
Das gibt es als Teil der Überschriften! Überprüfen Sie es auf dem Online-Link try it!