Tantangan ini terkait dengan beberapa fitur bahasa MATL, sebagai bagian dari acara Bahasa Bulan Mei 2018 . Tantangan terkait: Papan klip fungsi: salin .
pengantar
Papan klip fungsi MATL menyimpan ("salinan") input ke empat panggilan terakhir ke fungsi pengambilan input yang normal. Fungsi normal adalah jenis fungsi yang paling umum di MATL. Pengambilan input berarti bahwa fungsi tersebut mengambil setidaknya satu input. Konten clipboard yang disimpan dapat didorong ke tumpukan ("ditempelkan").
Tantangan ini akan mengambil konten clipboard sebagai input. Diasumsikan bahwa semua fungsi yang menghasilkan keadaan clipboard mengambil satu atau lebih bilangan bulat positif sebagai input. Jadi status clipboard dapat diwakili oleh daftar daftar angka. (Untuk informasi lebih lanjut tentang bagaimana clipboard sebenarnya diisi lihat tantangan terkait; tetapi itu tidak diperlukan untuk yang sekarang).
Menafsirkan konten clipboard
Contoh 1
Daftar dalam pertama mengacu pada pemanggilan fungsi yang terbaru , dan seterusnya, Demikianlah status clipboard
[[11, 28], [12, 16], [4], [5, 6]]
menunjukkan bahwa yang terakhir fungsi panggilan mengambil dua input, yaitu 11
, 28
; panggilan kedua lalu mengambil input 12
, 16
; dll. (Keadaan papan klip ini diproduksi oleh kode pada contoh pertama dari tantangan terkait).
Contoh 2
Jika tidak ada cukup panggilan fungsi , beberapa daftar bagian dalam di clipboard akan kosong:
[[7, 5], [], [], []]
(Ini diproduksi oleh program yang hanya menambah 7
dan 5
).
Contoh 3
Panggilan fungsi dapat memiliki sejumlah input , tetapi selalu setidaknya 1
(fungsi tanpa input tidak mengubah status clipboard). Jadi berikut ini juga mungkin.
[[3], [2, 40, 34], [7, 8, 15], []]
Mengakses konten clipboard
Isi dari clipboard fungsi didorong ke stack menggunakan fungsi MATL M
(yang, omong-omong, bukan fungsi normal, tetapi fungsi clipboard). Fungsi ini mengambil bilangan bulat positif sebagai input, dan mendorong beberapa konten clipboard ke stack, sebagai berikut. Dengan mengacu pada status clipboard pada contoh 1:
[[11, 28], [12, 16], [4], [5, 6]]
1M
mengembalikan semua input ke pemanggilan fungsi terbaru. Jadi, untuk contoh dipertimbangkan, memberikan11
,28
.- Demikian pula,
2M
,3M
dan4M
mengembalikan semua masukan untuk yang kedua, ketiga dan keempat fungsi panggilan terbaru. Jadi2M
memberi12
,16
;3M
memberi4
; dan4M
memberikan5
,6
. - Angka di luar input individual yang
4
dipilih untuk memfungsikan panggilan yang mengambil lebih dari satu input. Jadi mengembalikan terakhir masukan ke terbaru panggilan tersebut. Dalam kasus kami ini memberi . mengembalikan input individu sebelumnya , yaitu . mengembalikan input terakhir dari panggilan kedua-terakhir, yaitu ,, dan memberi . Sekarang, berikan . Perhatikan bagaimana input dilewati karena itu adalah satu - satunya input dalam panggilan fungsinya. Terakhir, memberi .5M
28
6M
11
7M
16
8M
12
9M
6
4
10M
5
Untuk keadaan clipboard pada contoh 3:
[[3], [2, 40, 34], [7, 8, 15], []]
1M
memberi3
.2M
memberikan2
,40
,34
.3M
memberikan7
,8
,15
.4M
memiliki perilaku yang tidak terdefinisi (untuk tujuan tantangan ini), karena hanya ada tiga panggilan fungsi.5M
memberi34
.6M
memberi40
.7M
memberi2
.8M
memberi15
.9M
memberi8
,10M
memberi7
.11M
,,12M
... juga memiliki perilaku yang tidak terdefinisi .
Tantangan
Masukan :
- status clipboard, sebagai daftar daftar, atau format wajar lainnya;
- bilangan bulat positif n .
Output : hasil dari fungsi panggilan M
dengan n sebagai input. Output akan berupa satu atau beberapa angka dengan pemisah yang tidak ambigu, atau dalam format apa pun yang masuk akal seperti daftar atau larik.
Klarifikasi:
- Keadaan clipboard terdiri dari empat daftar angka. Beberapa daftar trailing mungkin kosong, seperti dalam contoh 2 dan 3. Jika disukai, Anda dapat memasukkan clipboard tanpa daftar trailing kosong tersebut. Jadi contoh 3 akan menjadi
[[3], [2, 40, 34], [7, 8, 15]]
. - Semua angka di clipboard akan menjadi bilangan bulat positif, mungkin dengan lebih dari satu digit.
- Angka n dijamin valid. Jadi misalnya 3 di atas,
n
tidak bisa4
atau11
.
Aturan tambahan:
Input dan output dapat diambil dengan cara apa pun yang wajar .
Program atau fungsi diizinkan, dalam bahasa pemrograman apa pun . Celah standar dilarang .
Kode terpendek dalam byte menang.
Uji kasus
Clipboard state
Number
Output(s)
[[11, 28], [12, 16], [4], []]
2
12, 16
[[11, 28], [12, 16], [4], []]
5
28
[[7, 144], [12], [4, 8], [3, 4, 6]]
1
7, 144
[[7, 144], [12], [4, 8], [3, 4, 6]]
10
4
[[30], [40], [50, 60], [70, 80, 90]]
2
40
[[30], [40], [50, 60], [80, 90]]
7
90
[[15], [30], [2, 3, 5], [4, 5, 10]]
3
2, 3, 5
[[15], [30], [2, 3, 5], [4, 5, 10]]
7
2