Cyclic Polyglot Challenge
Ini adalah utas polisi. Anda dapat menemukan utas perampok di sini .
Polyglot Siklik
Polglot siklik N-elemen adalah program lengkap yang dapat dijalankan dalam N bahasa yang berbeda. Di setiap bahasa, ketika program dijalankan tanpa input (mungkin tunduk pada pengecualian ini ), ia harus mencetak nama bahasa ke STDOUT. Khususnya, jika program dijalankan dalam bahasa Kth, ia harus mencetak nama bahasa th (K +1). Jika program dijalankan dalam bahasa ke-N (yaitu, bahasa terakhir dalam siklus elemen-N), itu harus mencetak nama bahasa pertama.
Contoh mungkin berguna.
a = [[ v = 7, puts('Befunge') ]]
__END__
= print("Ruby")
-->*+:292*++,,@
--3 9
--7 *
--^,:-5<
Menjalankan program ini dengan Lua mencetak string "Ruby". Menjalankan program ini di Ruby mencetak string "Befunge". Menjalankan program ini di Befunge mencetak string "Lua", menyelesaikan siklus. Program ini merupakan 3 siklus yang terdiri dari Lua, Ruby, dan Befunge.
Bahasa yang sama tidak dapat muncul dua kali dalam satu siklus, dan versi berbeda dari bahasa yang sama (seperti Python 2 dan Python 3) tidak dapat muncul dalam siklus yang sama satu sama lain.
Polisi
Tantangan Anda adalah untuk menulis polyglot N-siklik, di mana N setidaknya 2. Kemudian, Anda harus menambahkan, mengganti, dan menghapus sejumlah karakter ke program untuk menghasilkan polyglot M-siklik, di mana M benar-benar lebih besar dari N Anda harus memposting polyglot N-cyclic yang lebih pendek (dan bahasa yang digunakannya), serta jumlah karakter yang Anda ubah untuk menghasilkan polyglot yang lebih panjang. Skor Anda adalah N, jumlah bahasa dalam siklus pendek Anda.
Perampok akan mencoba mengidentifikasi siklus panjang Anda. Jika, setelah tujuh hari, tidak ada yang berhasil memecahkan solusi Anda, Anda harus mengedit jawaban Anda menyatakan bahwa itu aman. Anda juga harus memposting polyglot M-siklik yang lebih panjang saat ini.
Perampok
Dengan poliglot N-siklik polisi dan jumlah karakter yang ditambahkan untuk menghasilkan siklus poliglot yang lebih besar, tujuan Anda adalah menghasilkan siklus yang lebih besar. Jika Anda dapat menghasilkan siklus yang lebih lama dengan menambahkan, menghapus, atau mengganti karakter sebanyak yang dilakukan polisi atau lebih sedikit karakter , Anda telah memecahkan polyglot polisi. Skor Anda adalah panjang dari siklus baru yang Anda buat. Poliglot baru Anda tidak harus sama atau bahkan mirip dengan poliglot rahasia polisi; hanya perlu lebih besar dari yang sudah ada.
Solusi Anda mungkin juga retak. Jika perampok lain datang dan menghasilkan siklus yang lebih panjang dari milik Anda, mulai dari poliglot polisi yang sama, mereka telah mencuri poin Anda.
Bahasa Pemrograman yang Valid
Karena tantangan ini secara tidak langsung melibatkan menebak bahasa pemrograman yang digunakan oleh peserta lain, definisi bahasa pemrograman untuk keperluan tantangan ini akan sedikit lebih ketat daripada definisi yang biasa. Bahasa pemrograman yang digunakan dalam tantangan ini harus memenuhi semua kondisi berikut.
- Bahasa tersebut harus memenuhi PPCG biasa yang diperlukan untuk bahasa pemrograman .
- Bahasa harus memiliki artikel Wikipedia , artikel Esolang , atau artikel Kode Rosetta pada saat tantangan ini diposting.
- Bahasa harus memiliki juru bahasa atau kompiler yang tersedia secara bebas.
Catatan Akhir
- Kode yang Anda tulis harus merupakan program mandiri dalam setiap bahasa yang dimaksudkan untuk dijalankan. Fungsi atau cuplikan kode tidak diizinkan.
- Program Anda tidak akan diberi input melalui STDIN. Demikian juga, program Anda harus mencetak apa pun ke STDERR.
- Skor polisi adalah jumlah bahasa dalam siklus polyglot yang mereka poskan. Polisi harus memposting bahasa yang menjalankan polyglot yang diposting dengan benar, serta jumlah karakter yang mereka tambahkan untuk menghasilkan polyglot yang lebih panjang. Mereka tidak bertanggung jawab untuk memposting bahasa yang lebih lama, polyglot tersembunyi berjalan hingga jawaban mereka aman.
- Skor perampok adalah jumlah bahasa yang digunakan polyglot yang dimodifikasi. Seperti halnya polisi, perampok harus memposting daftar bahasa yang digunakan polyglot dengan benar.
- Jumlah karakter yang diubah harus dihitung dalam jarak Levenshtein.
sumber
Jawaban:
C (gcc) , 126 byte
M=N+1
Levenshtein(polyglot(M),polyglot(N))
adalah 36 byteCobalah online!
sumber