Mathematica 120 130
Edit
Versi ini bekerja dengan array ukuran yang bervariasi.
l = List;
g = Grid@Cases[Outer[l, Sequence @@ MapIndexed[l, #, {2}], 1]~Flatten~(Length[#] - 1),
x_ /; LessEqual @@ x[[All, 1]] == True :> x[[All, 2, 2]] - 1] &
Pemakaian
g@{{10, 20, 30}, {1, 22, 3}}
g@{{1, 5, 7, 10}, {2, 6, 6, 8, 12}, {4, 5, 9}}
g@{{10, 20, 30}, {1, 2, 3}}
g@{{1, -2, 3}, {-12, -7, 8, 9, 6}, {3, 99, 9}, {100, 10, -23}, {90, 10}}

Penjelasan
Menggunakan contoh pertama dari atas,
a = {{10, 20, 30}, {1, 22, 3}}
MapIndexedmenetapkan indeks untuk semua elemen. NB: Mathematica mulai menghitung dengan 1. (Kami akan mempertimbangkannya nanti.)
MapIndexed[l, a, {2}]
{{{10, {1, 1}}, {20, {1, 2}}, {30, {1, 3}}}, {{1, {2, 1}}, {22, {2, 2}}, {3, {2, 3}}}}
Outermenghasilkan semua daftar, masing-masing kandidat sebagai array sandwich, dan indeks elemen mereka; %berisi hasil dari output sebelumnya. Angka-angka, 10dan 22yang saya sorot setelah mereka output, merujuk pada array sandwich {10,22}yang belum diidentifikasi.
Outer[l, Sequence @@ %, 1]~Flatten~(Length[a] - 1)
{{{10, {1, 1}}, {1, {2, 1}}}, {{ 10 , {1, 1}}, { 22 , {2, 2}}}, {{10, { 1, 1}}, {3, {2, 3}}}, {{20, {1, 2}}, {1, {2, 1}}}, {{20, {1, 2}},, {22, {2, 2}}}, {{20, {1, 2}}, {3, {2, 3}}}, {{30, {1, 3}}, {1, {2, 1}}}, {{30, {1, 3}}, {22, {2, 2}}}, {{30, {1, 3}}, {3, {2, 3}}}}}
Casesmenguji setiap elemen di atas untuk menentukan apakah suatu hubungan LessEqual(kurang dari atau sama) berlaku. Hasil yang ditunjukkan di bawah ini adalah contoh di mana array sandwich terdeteksi. Sekali lagi, saya menyoroti {10,22}dalam output.
Cases[%, x_ /; LessEqual @@ x[[All, 1]] == True]
{{{ 10 , {1, 1}}, { 22 , {2, 2}}}, {{20, {1, 2}}, {22, {2, 2}}}}}
%%mengacu pada hasil kedua dari belakang. :>, [RuleDelayed] mengembalikan bagian-bagian dari instance yang menarik, yaitu, indeks sandwich array. -1mengoreksi fakta bahwa Mathematica memulai array dengan 1 bukannya 0.
Cases[%%,
x_ /; LessEqual @@ x [[Semua, 1]] == Benar:> x [[Semua, 2, 2]] - 1]
{{0, 1}, {1, 1}}
Gridmenampilkan hasilnya dalam kotak. Baris pertama 0 1berarti elemen 0 dari sublist pertama (yaitu 10 ) dan elemen 1 dari sublist kedua (yaitu 22 ) merupakan array sandwich pertama yang ditemukan.
Grid@%
0 1
1 1