Tantangan
Diberikan dua ID pertanyaan, cobalah untuk mencari tahu seberapa miripnya mereka dengan melihat jawabannya.
Detail
Anda akan diberikan dua ID pertanyaan untuk codegolf.stackexchange.com
; Anda dapat berasumsi bahwa ada pertanyaan untuk kedua ID yang tidak dihapus, tetapi belum tentu terbuka. Anda harus menjalankan semua jawaban dan menentukan jarak Levenshtein minimum antara kode dalam jawaban untuk dua pertanyaan (tidak termasuk jawaban yang dihapus). Artinya, Anda harus membandingkan setiap jawaban dalam pertanyaan 1 dengan setiap jawaban dalam pertanyaan 2, dan menentukan jarak Levenshtein minimum. Untuk menemukan kode dalam jawaban, asumsikan prosedur berikut:
Cara menemukan cuplikan kode
Tubuh teks adalah kode jawaban yang sebenarnya jika berada di backtick dan berada pada barisnya sendiri, atau jika diindentasi dengan 4 spasi, dengan baris kosong di atasnya, kecuali tidak ada teks di atas.
Contoh cuplikan kode yang valid dan tidak valid (dengan .
spasi) (dipisahkan oleh satu ton tanda sama dengan)
This is `not a valid code snippet because it is not on its own line`
========================================
This is:
`A valid code snippet`
========================================
This is
....not a valid code snippet because there's no spacing line above
========================================
This is
....A valid code snippet because there's a spacing line above
========================================
....Valid code snippet because there's no other text
========================================
Jika tidak ada potongan kode yang valid dalam jawaban, abaikan jawaban sepenuhnya. Perhatikan bahwa Anda hanya harus mengambil kunci kode pertama.
Spesifikasi Akhir
Dua ID pertanyaan dapat dimasukkan dalam format apa pun yang masuk akal untuk 2 bilangan bulat. Outputnya harus menjadi jarak Levenshtein terkecil antara dua jawaban yang valid dari setiap tantangan. Jika tidak ada jawaban "valid" untuk satu atau kedua tantangan, keluaran -1
.
Kasus cobaan
Untuk tantangan 115715
(Embedded Hexagons) dan 116616
(Embedded Triangles) baik oleh Kamerad SparklePony, kedua jawaban Charcoal (keduanya oleh KritixiLithos) memiliki jarak Levenshtein 23, yang merupakan yang terkecil. Dengan demikian, output Anda 115715, 116616
akan menjadi 23
.
Edit
Anda dapat berasumsi bahwa pertanyaan memiliki paling banyak 100 jawaban karena pembatasan pageize API. Anda tidak boleh mengabaikan backticks dalam blok kode, hanya jika blok kode itu sendiri dibuat menggunakan backticks dan bukan pada barisnya sendiri.
Edit
Saya mengakhiri periode bounty lebih awal karena saya meminta mod untuk mendapatkan penangguhan satu minggu dan saya tidak ingin bounty itu secara otomatis diberikan ke jawaban skor tertinggi (yang kebetulan paling lama). Jika kiriman baru masuk atau kiriman cukup golf untuk menjadi lebih pendek dari 532 byte sebelum akhir periode hadiah sebenarnya (UTC 00:00 pada 1 Juni), saya akan memberikan hadiah itu untuk tetap setia pada janji saya, setelah penangguhan berakhir. Jika saya ingat dengan benar, saya perlu menggandakan periode hadiah di waktu berikutnya jadi jika Anda mendapatkan jawaban, Anda mungkin mendapatkan +200 :)
sumber
Jawaban:
PowerShell, 532 Bytes
Saya meninggalkan baris baru di sana untuk dibaca. Masih tercermin dalam jumlah byte saya.
Cukup yakin saya punya pegangan dalam hal ini. Bagian yang sulit bagi saya sebenarnya mendapatkan jarak Levenshtein karena PowerShell tidak memiliki builtin untuk itu sejauh yang saya tahu. Karena itu saya bisa menjawab tantangan terkait jarak Levenshtein . Saat kode saya merujuk ke fungsi anonim untuk LD, Anda dapat merujuk ke jawaban itu untuk penjelasan yang lebih terperinci tentang cara kerjanya.
Kode dengan komentar dan indikator kemajuan
Kode dapat menjadi sangat lambat (karena LD) jadi saya membuat beberapa indikator kemajuan untuk diri saya sendiri sehingga saya bisa mengikuti tindakan saat dibuka dan tidak menganggapnya macet di suatu tempat. Kode untuk memantau kemajuan tidak di blok atas atau dihitung dalam jumlah byte saya.
Logika saya untuk menemukan blok kode adalah mengambil jawaban sebagai HTML dan mencari satu set tag kode, secara opsional dikelilingi oleh set tag pra yang dimulai pada barisnya sendiri. Dalam pengujian itu ditemukan semua data yang benar pada 6 set pertanyaan yang berbeda.
Saya mencoba bekerja dari kode penurunan harga tetapi terlalu sulit untuk menemukan blok kode yang tepat.
Sampel dijalankan
sumber
Java + Jsoup, 1027 byte
Dua argumen pertama adalah ID pertanyaan.
Golf:
Dapat dibaca:
}
sumber
Mathematica, 540 byte
memasukkan
keluaran
menggunakan EditDistance bawaan yang "memberikan jarak edit atau Levenshtein antara string atau vektor u dan v."
Sedangkan untuk test case Mathematica
mengembalikan 23
Saya kira saya bisa bermain golf lebih lama.
Butuh beberapa menit untuk berlari
sumber