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 7dan 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]]
1Mmengembalikan semua input ke pemanggilan fungsi terbaru. Jadi, untuk contoh dipertimbangkan, memberikan11,28.- Demikian pula,
2M,3Mdan4Mmengembalikan semua masukan untuk yang kedua, ketiga dan keempat fungsi panggilan terbaru. Jadi2Mmemberi12,16;3Mmemberi4; dan4Mmemberikan5,6. - Angka di luar input individual yang
4dipilih 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 .5M286M117M168M129M6410M5
Untuk keadaan clipboard pada contoh 3:
[[3], [2, 40, 34], [7, 8, 15], []]
1Mmemberi3.2Mmemberikan2,40,34.3Mmemberikan7,8,15.4Mmemiliki perilaku yang tidak terdefinisi (untuk tujuan tantangan ini), karena hanya ada tiga panggilan fungsi.5Mmemberi34.6Mmemberi40.7Mmemberi2.8Mmemberi15.9Mmemberi8,10Mmemberi7.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 Mdengan 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,
ntidak bisa4atau11.
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