Anda diberi daftar 2-tupel bilangan bulat positif, dari formulir:
a1 b1, a2 b2, ..., an bn
Dengan kata lain, 2-tupel dipisahkan oleh koma, dan bilangan bulat di dalam masing-masing tupel dipisahkan oleh ruang. Semua a
angka dalam urutan ketat meningkat, serta b
s. Tujuan Anda adalah "mengisi kekosongan." Yang dimaksud dengan itu adalah sebagai berikut:
- Jika i +1 == a i +1 , jangan lakukan apa pun.
- Jika i a +1 <a i +1 , Anda akan memasukkan tupel ke dalam urutan sebagai berikut: a i b i , a i +1 b i + 1 , a i +2 b i + 1 , ..., a i + 1 -1 b i + 1 , a i + 1 b i + 1 .
Dengan kata lain, jika ada "celah" di a i , maka Anda akan memasukkan lebih banyak ke dalam daftar dengan b
s yang dimasukkan menjadi b i + 1 (ujung celah).
Contoh :
Memasukkan: 6 125, 7 170, 10 185
Keluaran: 6 125, 7 170, 8 185, 9 185, 10 185
Penilaian : skor pengiriman adalah jumlah byte yang diperlukan untuk membangun sebuah program, ketika diberi string seperti yang dijelaskan di atas, menampilkan dalam format yang sama dengan daftar tuple "terisi".
Menang skor terendah!
a1 b1, a2 b2, a3 b3
, satu-satunya pasangan yang memicu sebuah inserta1 b1, a3 b3
memerlukan inserta2 b3
, tetapi di mana harus dimasukkan?Jawaban:
Pyth,
3130 byteTerima kasih 1 byte untuk Jakube.
Pada level tinggi, untuk setiap angka dalam kisaran a, daftar difilter untuk a lebih besar dari angka itu, maka b dari tupel pertama digunakan sebagai b.
Demonstrasi.
sumber
CJam,
42413938 byteCobalah online di penerjemah CJam .
sumber
Python 2,
192180171 BytesSayangnya, dibutuhkan satu ton byte untuk mengurai input dan format output. Juga, terima kasih kepada Sp3000 untuk menendang otak saya :)
sumber
Python 3.5.0b1 +, 123 byte
Mengurai input itu menyebalkan, jadi saya mengabaikannya dan menguraikannya seperti apa adanya. Ini artinya
diurai sebagai
karenanya percikan dalam format string.
sumber
(a,*b)
saya harus melakukan((a,)+b)
atau(a,b[0])
. Versi Python yang lebih lama akan memberikanSyntaxError
.JavaScript ( ES6 ), 97
103Menemukan pertanyaan yang sulit dimengerti, saya mendasarkan pekerjaan saya pada contoh.
Coba pertama, mungkin ada cara yang lebih pendek dengan hanya 1 split.Memindai string input dalam satu pass menggunakan penggantian..
sumber
Haskell, 152 byte
Bagaimana itu bekerja
p
adalah fungsi helper pemformatan string sederhana:(%)
adalah fungsi "pencarian" untuk mengisi kekosongan:[head a..last$init a]
adalah rentang angka yang digunakan: dari bilangan bulat pertama diurai hingga bilangan bulat kedua ke terakhir diurai. (The0+
membantu pemeriksa tipe menyimpulkan bahwa seluruh program berkaitan denganNum
nilai - nilai; jikaread
tidak, tidak tahu apa yang harus diuraikan.) Kemudian kitaconcatMap
(atau=<<
) fungsi kita sebelumnya pada rentang untuk mendapatkan satu string besar. Itu yangg
dilakukannya:Akhirnya ada
main
. Bentuknya seperti ituinteract$s
, jadi yang kita pedulikan adalah fungsis :: String -> String
yang mengubah stdin menjadi stdout .Pertama, untuk membaca input, kami membaginya menjadi kata-kata:
Kemudian kita
concatMap
fungsimap(read.fst).lex
atas daftar ini. Untuk satu kata, ini artinya:Jadi untuk daftar kata, Anda dapatkan
concat [[6], [125], [7], ...] == [6, 125, 7...]
, yang merupakan daftar yang ingin kami sampaikang
. Akhirnya, kitadrop
yang memimpin", "
dari stringg
memberi kita.sumber
CJam, 34 byte
Saya mulai dengan golf jawaban Dennis tetapi akhirnya menjadi tidak seperti aslinya.
Cobalah online.
sumber
Perl, 67 byte
(66 karakter kode + 1 opsi baris perintah karakter)
Contoh eksekusi:
Penjelasan: Pendekatan umum adalah untuk membangun sebuah regex yang mampu melihat ke depan ke token berikutnya untuk menentukan apakah itu bertambah satu (regex adalah sampah di aritmatika, jadi kami menambahkan eksekusi perl untuk melakukan penambahan, kemudian mencari itu). Jika tidak, kami mengganti kecocokan ini dengan teks asli, ditambah token baru dengan peningkatan indeks. Kami kemudian mengulangi ini berkali-kali pada input sampai tidak berubah.
Untuk penjelasan di bawah ini, 'bagian' adalah nilai yang dipisahkan koma, dan 'token' adalah nilai-nilai yang dipisahkan ruang dalam ini.
sumber
C #, 174 byte
Diindentasi untuk kejelasan:
sumber
Bash + coreutils, 87
Hasil tes:
sumber
Python 3, 232 byte
Tidak benar-benar yang singkat, tetapi menggunakan metode yang berbeda untuk solusi Python sudah diposting
sumber
Java, 229 byte
Saya pikir saya telah meremehkan ini sebanyak yang saya bisa. Saya akan tertarik untuk melihat apakah ada pendekatan yang lebih baik yang mengarah pada jawaban Java yang lebih pendek:
Diformat:
sumber