Zasady
Brak odwołań do zakresu komórek (
A2:B3
).Maksymalnie 9 wierszy i 9 kolumn.
Brak odwołań cyklicznych lub błędów formuł.
Puste komórki oceniają na
0
.Dane są tylko liczbami, ale można je traktować jako ciągi znaków.
Formuły są łańcuchami.
Opcje realizacji
Musisz podać swoje wybory w następujących kwestiach:
Wymagaj, aby formuły były poprzedzone dowolnym pojedynczym znakiem, np.
=
- lub nie.Lewa komórka drugiego rzędu to
A2
lubR2C1
, zgodnie z dwiema konwencjami stosowanymi przez Excela i in.Wymagaj dowolnego jednoznakowego prefiksu lub sufiksu w odwołaniach do komórki, np.
$
- lub nie.Jeden z null, pusty ciąg, pusta lista itp. (Ale nie
0
) reprezentujący puste komórki.Język Twojego zgłoszenia (menedżerowie arkuszy kalkulacyjnych nie są dozwoleni).
Język formuł (może różnić się od powyższego). *
Punkty Brownie lub pliki cookie wyjaśniające rozwiązanie.
Przykłady
Wybory: 7 =
:; 8 A2
:; 9: brak; 10 ""
:; 12: Excel Formula Language
W:
[[ 2, 3],
["=A1+B1",""]]
Na zewnątrz:
[[2,3],
[5,0]]
W:
[[ 2,"=A1+B2"],
["=A1+B1", ""]]
Na zewnątrz:
[[2,2],
[4,0]]
W:
[[ 3, 4,"=A1*B1"],
[ 2, 5,"=A2*B2"],
["","","=C1+C2"]]
Na zewnątrz:
[[3,4,12],
[2,5,10],
[0,0,22]]
W:
[["","=2*B2*B3" ,""],
[ 3,"=A1+(A2+C2)/2", 2],
[ 1,"=C1+(A3+C3)/2", 5]]
Na zewnątrz:
[[0,15, 0],
[3, 2.5,2],
[1, 3 ,5]]
* Język formuły musi być dopuszczalny dla PPCG , ale musisz tylko obsługiwać odwołania do komórek oraz kryteria 3 i 4, wiz. określenie dodatku i prymitywności.
Expand array to cells, evaluate.
R0C0
,?Odpowiedzi:
JavaScript,
125112105 bajtówAby użyć, dodaj
f=
na początku i wywołaj jakf(argument)
.Wybory:
=
.A2
.""
(Pusty ciąg) oznacza pustą komórkę.Wyjaśnienie:
To rozwiązanie dokonuje iteracji po wszystkich komórkach arkusza roboczego (każdym elemencie podtablic danej tablicy) i jeśli zostanie znaleziony niepusty ciąg, zastępuje odniesienia do komórki odpowiednimi odniesieniami pod względem podanej tablicy i ocenia wyrażenie z
eval()
(tak, ta zła rzecz, która prześladuje cię w twoich koszmarach ). To rozwiązanie zakłada, że stałe podane w tablicy wejściowej są typu Integer.Przypadki testowe
źródło
/\w\d/g
wyrażenia regularnego?\w
dopasowuje również cyfry i\d
dopasowuje również 0, obie rzeczy, których nie chcesz w tym przypadku./[A-I][1-9]/g
powinien jednak działać/\w\d/g
daje dokładnie takie same wyniki w przypadkach testowych. Również użycie literału szablonu w części eval może zaoszczędzić garść bajtów.PHP,
265 263 259 258 257 240 224 222 213 202196 bajtówwyposażony
array_walk_recursive
w rekurencyjną anonimową funkcję orazpreg_replace_callback
:lub
działa na wejściu: połączenie przez odniesienie. Przetestuj online .
R2C1
, bez prefiksupodział (pierwsza wersja)
źródło
max(range(A1,A3))
może to być mylące. : D$d=$c;preg_match($x="#[A-Z](.)#",$c=$c[0]
dopreg_match($x="#[A-Z](.)#",$c=($d=$c)[0]
powinien zapisać 1 bajt.Mathematica,
11911595 bajtówWybory:
R2C1
styl.""
dla pustych komórek.RxCy
i nie mają skutków ubocznych, powinny działać.Wyjaśnienie
Zaczynamy od zastąpienia wszystkich pustych ciągów wejściowych (
#
) zerami i zapisania wynikum
, ponieważ będziemy potrzebować go ponownie w innym miejscu.Wielokrotnie zastępuj pozostałe ciągi
s
następującymi ...Dało żadnych podciągi formularza
RxCy
ws
i zastąpić je ...Co daje
m[[x,y]]
, które wykorzystujex
iy
jako wskaźniki do macierzym
.Finallz, oceń ten ciąg jako wyrażenie Mathematica.
źródło
Clojure,
263281 bajtówCholera, bez tego
apply map vector
wynik jest transponowany, jakA2
to wcześniej alfabetycznieB1
.Przykłady:
A2
(+ A1 A2)
porządkunil
ifalse
działają jako puste komórki, ale pusty ciąg niePrzykład pierwszego makra wątku:
Wartość
C
początkowa w pętli jest mapą skrótu, klucze to nazwy komórek, a wartości to wartości oryginalne. Następnie wszystkie odwołania do komórek są zastępowane zawartością komórek, do których się odwołujemy, dopóki nie zbiegniemy się (P
revious =C
urrent), następnie komórki są oceniane i płaska struktura jest dzielona z powrotem na zagnieżdżoną listę.Byłoby super, aby znaleźć rozwiązanie, w którym
A1
,A2
itd. Są faktycznie funkcje wywoływalne, a następnie(* 2 B2 B3)
może zostać przepisany do(* 2 (B2) (B3))
i wykonywany.Wypróbuj online!
źródło
APL (Dyalog) , 51 bajtów
Żaden
A2
Żaden
Pusta struna
APL
APL
Wypróbuj online!
⍎¨
Oceń każdą komórkę wyniku z(
…)⍣≡
Ciągłe stosowanie następujących dwóch funkcji, aż nic się nie zmieni{
pierwsza anonimowa funkcja do zastosowania…0
przy każdym::
błędzie:⍵
zwróć argument niezmodyfikowany⋄
Spróbuj teraz;⍵
Jeśli argument za≢
tally:×
jest pozytywny:
, wówczas:⍕
stringify⍎
ewaluowaną⍕
stringified⍵
argumentu⋄
jeszcze;0
zwróć zero}¨
… Do każdej komórki{
druga anonimowa funkcja do zastosowania…'←',¨
wstaw strzałkę przypisania do każdej komórki⍵
argumentu(
…),¨
Wstawiamy następujące do każdej komórki tego1↓
upuść pierwszy⎕D
ciąg wszystkich D igitów (tj. zero)⎕A
Po opadnięciu wszystkich liter alfabetu A utwórz∘.,
tabelę konkatenacji (pozostałe cyfry będą w prawo)⍉
transponuj (aby zmniejszyć liczbę cyfr, przesuwając litery w prawo)(
…)↑
Weź lewą górną podmacierz o rozmiarze…⍴
wielkość⍵
argumentu}
… Do wyniku poprzedniej funkcji.źródło
Python 2
273,265,263, 259 bajtówWypróbuj online!
Wybory:
=
A2
Żaden
„”
Python 2.7
Wyrażenia w języku Python
Podstawowe wyjaśnienie:
Dla każdej formuły na liście podrzędnej zamień ją na odpowiedni indeks listy (to znaczy dla B1 s [0] [1]) i oceń wynik!
źródło
s=[[ 3, 4,"max(A1,B1)"],[ 2, 5,"A2**B2"],[ "", "","C1+C2"]]
[[ 3, 4,"=max(A1,B1)"],[ 2, 5,"=A2**B2"],[ "", "","=C1+C2"]]
Jest to część nagłówków! Sprawdź to, wypróbuj link online!