Aturan
Tidak ada referensi rentang sel (
A2:B3
).Maksimum 9 baris dan 9 kolom.
Tidak ada referensi lingkaran atau kesalahan rumus.
Sel-sel kosong dievaluasi
0
.Data hanya angka, tetapi dapat diambil sebagai string.
Rumus adalah string.
Pilihan implementasi
Anda harus menyatakan pilihan Anda dalam masalah ini:
Membutuhkan rumus untuk diawali dengan karakter tunggal apa pun, misalnya
=
- atau tidak.Sel paling kiri dari baris kedua adalah
A2
atauR2C1
, sesuai dua konvensi yang digunakan oleh Excel et al.Mengharuskan pra-atau akhiran karakter tunggal dalam referensi sel, misalnya
$
- atau tidakSalah satu dari nol, string kosong, daftar kosong, dll., (Tetapi tidak
0
) untuk mewakili sel kosong.Bahasa kiriman Anda (manajer spreadsheet tidak diizinkan).
Bahasa untuk rumus (mungkin berbeda dari yang di atas). *
Poin atau cookie Brownie untuk menjelaskan solusi Anda.
Contohnya
Pilihan: 7 =
:; 8 A2
:; 9: tidak ada; 10 ""
:; 12: Bahasa Formula Excel
Di:
[[ 2, 3],
["=A1+B1",""]]
Di luar:
[[2,3],
[5,0]]
Di:
[[ 2,"=A1+B2"],
["=A1+B1", ""]]
Di luar:
[[2,2],
[4,0]]
Di:
[[ 3, 4,"=A1*B1"],
[ 2, 5,"=A2*B2"],
["","","=C1+C2"]]
Di luar:
[[3,4,12],
[2,5,10],
[0,0,22]]
Di:
[["","=2*B2*B3" ,""],
[ 3,"=A1+(A2+C2)/2", 2],
[ 1,"=C1+(A3+C3)/2", 5]]
Di luar:
[[0,15, 0],
[3, 2.5,2],
[1, 3 ,5]]
* Bahasa formula harus dapat diterima PPCG , tetapi Anda hanya perlu mendukung referensi sel plus kriteria 3 dan 4 di sana, wiz. penambahan dan penentuan primeness.
Expand array to cells, evaluate.
R0C0
,?Jawaban:
JavaScript,
125112105 byteUntuk menggunakan, tambahkan
f=
di awal dan panggil sepertif(argument)
.Pilihan:
=
.A2
.""
(String Kosong) untuk menunjukkan sel kosong.Penjelasan:
Solusi ini berulang pada semua sel lembar kerja (setiap elemen dari sub-array array yang diberikan) dan jika String tidak kosong ditemukan, ganti referensi selnya dengan referensi yang sesuai dalam hal array yang diberikan dan evaluasi ekspresi dengan
eval()
(yeah, hal jahat yang menghantui Anda dalam mimpi buruk Anda ). Solusi ini mengasumsikan bahwa konstanta yang disediakan dalam larik input bertipe Integer.Uji Kasus
sumber
/\w\d/g
untuk regex Anda?\w
cocok dengan digit, dan juga\d
cocok dengan 0, kedua hal yang tidak Anda inginkan dalam kasus ini./[A-I][1-9]/g
harus bekerja/\w\d/g
menghasilkan hasil yang sama persis dalam kasus uji. Juga menggunakan templat literal di bagian eval bisa menghemat beberapa byte.PHP,
265 263 259 258 257 240 224 222 213 202196 bytemenampilkan
array_walk_recursive
, fungsi anonim rekursif danpreg_replace_callback
:atau
beroperasi pada input: panggilan dengan referensi. Uji secara online .
R2C1
, tidak ada awalankerusakan (versi pertama)
sumber
max(range(A1,A3))
mungkin membingungkan. : D$d=$c;preg_match($x="#[A-Z](.)#",$c=$c[0]
untukpreg_match($x="#[A-Z](.)#",$c=($d=$c)[0]
harus menyimpan 1 byte.Mathematica,
11911595 bytePilihan:
R2C1
gaya.""
untuk sel kosong.RxCy
dan tidak memiliki efek samping harus berfungsi.Penjelasan
Kita mulai dengan mengganti semua string kosong di input (
#
) dengan nol dan menyimpan hasilnyam
, karena kita akan membutuhkan ini lagi di tempat lain.Ganti string yang tersisa berulang
s
dengan yang berikut ...Ditemukan substring dari bentuk
RxCy
dis
dan menggantinya dengan ...Yang memberi
m[[x,y]]
, yang menggunakanx
dany
sebagai indeks ke dalam matriksm
.Finallz, evaluasi string ini sebagai ekspresi Mathematica.
sumber
Clojure,
263281 byteSialan tanpa itu
apply map vector
hasilnya ada dalam transpose, sepertiA2
abjad sebelumnyaB1
.Contoh:
A2
(+ A1 A2)
tidak apa-apanil
danfalse
bekerja sebagai sel kosong, tetapi string kosong tidakContoh makro utas pertama:
Nilai awal
C
dalam loop adalah hash-map, kunci adalah nama sel dan nilai adalah nilai asli. Kemudian semua referensi sel diganti dengan konten sel yang direferensikan sampai kita telah konvergen (P
revious =C
), kemudian sel dievaluasi dan struktur datar dipartisi kembali menjadi daftar bersarang.Akan keren untuk menemukan solusi di mana
A1
,A2
dll sebenarnya adalah fungsi yang(* 2 B2 B3)
bisa dipanggil, kemudian dapat ditulis ulang(* 2 (B2) (B3))
dan dieksekusi.Cobalah online!
sumber
APL (Dyalog) , 51 byte
Tidak ada
A2
Tidak ada
String kosong
APL
APL
Cobalah online!
⍎¨
Evaluasi setiap sel hasil dari(
...)⍣≡
aplikasi berkelanjutan dari dua fungsi berikut sampai tidak ada lagi perubahan{
fungsi anonim pertama yang diterapkan ...0
pada::
kesalahan apa pun :⍵
kembalikan argumen yang tidak dimodifikasi⋄
sekarang coba;⍵
jika argumen≢
penghitungan:×
positif:
maka:⍕
stringify⍎
dievaluasi⍕
stringified⍵
argumen⋄
lain;0
mengembalikan nol}¨
... untuk setiap sel{
fungsi anonim kedua untuk diterapkan ...'←',¨
tambahkan panah tugas ke setiap sel⍵
argumen(
...),¨
tambahkan yang berikut ke masing-masing sel itu1↓
lepaskan⎕D
string pertama dari semua igit D (yaitu nol)⎕A
Dengan semua huruf dari lfabet A turun,∘.,
buatlah tabel gabungan (dengan angka-angka lainnya berada di kanan)⍉
transpos (untuk mendapatkan peningkatan angka ke bawah, huruf maju dengan benar)(
...)↑
ambil submatrix kiri atas dengan ukuran ...⍴
ukuran⍵
argumen}
... ke hasil fungsi sebelumnya.sumber
Python 2
273.265.263, 259 byteCobalah online!
Pilihan:
=
A2
tidak ada
""
Python 2.7
Ekspresi python
Penjelasan dasar:
Untuk setiap rumus dalam sublist, gantilah dengan daftar yang sesuai (yaitu, untuk indeks B1 [0] [1]) dan evaluasi hasilnya!
sumber
s=[[ 3, 4,"max(A1,B1)"],[ 2, 5,"A2**B2"],[ "", "","C1+C2"]]
[[ 3, 4,"=max(A1,B1)"],[ 2, 5,"=A2**B2"],[ "", "","=C1+C2"]]
Itu ada sebagai bagian dari header! Lihat di tautan coba online!