Banyak pengguna PPCG yang membantu menciptakan tantangan ini, baik dalam obrolan maupun Sandbox, khususnya Martin Ender , AdmBorkBork , Emigna , dan pengguna202729
Komunitas kami merasa perlu untuk membuat serangkaian bahasa yang dirancang khusus untuk bermain golf, "bahasa golf" seperti yang kita sebut sebagai bahasa. Bahasa-bahasa seperti itu telah berevolusi dari GolfScript yang dulu brilian, sekarang kikuk ke bahasa ringkas yang ramping seperti Jelly dan Husk . Seperti yang bisa kita lihat, bahasa-bahasa ini terus menerus semakin pendek untuk satu set tugas. Jadi, sebagai ahli yang jelas di sini tentang bahasa golf, kita harus merancang bahasa bersama untuk mengalahkan setiap bahasa lain yang berani bersaing. Memperkenalkan Bugle!
Bugle: Dari akronim BuGoL: Bu ILT Pergi lfing L anguage.
Bagaimana tantangan ini akan bekerja
Jika Anda tidak mendapatkan apa yang saya singgung dalam pendahuluan, tantangan ini adalah tantangan chaining jawaban di mana kita masing-masing menyumbangkan sesuatu kepada penerjemah bahasa golf baru, meningkatkan kemampuannya untuk bersaing di PPCG dengan setiap jawaban.
Saya akan memposting jawaban pertama yang terdiri atas dasar spek bahasa / juru bahasa, dan semua jawaban lainnya akan dilanjutkan dari itu. Kiriman baru akan memberikan hal-hal berikut:
- Perubahan pada spesifikasi bahasa
- Penerjemah yang mutakhir, bertemu persis dengan apa yang tercantum dalam perubahan
- Skor pembaruan bahasa (lebih detail dalam sedikit)
Anda dapat mengubah spesifikasi dalam salah satu dari tiga cara:
- Anda dapat menambahkan satu perintah
- Anda dapat menambahkan dua perintah baru
- Anda dapat mengedit perilaku satu perintah yang ada
Mengenai juru bahasa baru, Anda harus menggunakan versi terbaru, ditulis dengan Python. Tidak harus main golf. Setiap perintah yang ditambahkan sebelumnya harus dapat diuji dengan interpreter terbaru, serta perintah terbaru (yang Anda tambahkan). Anda juga tidak boleh menggunakan bahasa ofensif kapan saja ketika memperbarui penerjemah, seperti dalam komentar atau string string dll.
Perintah yang ditambahkan dapat melakukan apa saja yang Anda inginkan . Satu-satunya persyaratan adalah:
- Itu tidak menghasilkan output ofensif
- Itu tidak sama dengan perintah lain
- Itu tidak mencegah salah satu tantangan sampel diselesaikan
Selain ini, dapat spesifik atau umum seperti yang Anda inginkan. Bisa juga karakter apa saja yang Anda inginkan. Jika Anda tidak yakin apakah penambahan Anda merupakan 'perintah baru', jangan ragu untuk bertanya di komentar.
Skor bahasa
Anda mungkin telah memperhatikan bahwa Anda harus memasukkan skor bahasa dalam semua kiriman baru. Skornya adalah apa yang mencegah tantangan ini berlangsung selamanya, dan didefinisikan sebagai berikut:
Skor saat ini adalah jumlah jumlah byte yang diperlukan untuk bahasa untuk menyelesaikan 20 tugas di bawah ini
Untuk masing-masing tugas, aturan I / O Standar berlaku , seperti halnya celah standar .
20 tugas:
- "Halo Dunia!" - Keluarkan string
Hello, World!
- 1, 2, Fizz, 4, Buzz - Output setiap integer dari 1 hingga 100 (inklusif) pada baris terpisah, dengan kelipatan 3 digantikan oleh
Fizz
, kelipatan 5 digantikan olehBuzz
dan kelipatan keduanya denganFizzBuzz
- Menghasilkan angka 2014 tanpa angka apa pun dalam kode sumber Anda - Menghasilkan angka 2014 tanpa menggunakan karakter apa pun
0123456789
dalam kode sumber, tanpa mengakses variabel eksternal atau seed acak - Dikaburkan Hello World - Output string
Hello, World!
, tanpa menggunakan karakter dalam setidaknya dua set berikut:hlwd
,eor01
dan27
(case-sensitive) Nyanyikan Selamat Ulang Tahun ke bahasa pemrograman favorit Anda - Dalam bahasa pilihan Anda, tampilkan yang berikut:
Happy Birthday to You Happy Birthday to You Happy Birthday Dear [the name of your favourite programming language] Happy Birthday to You
Kami tidak asing dengan kode golf, Anda tahu aturannya, dan saya juga - Keluarkan lirik lengkap "Never Gonna Give You Up"
- Keluarkan tanda - Diberi angka, cetak -1 jika negatif, 0 jika 0 atau 1 jika positif
- Collatz Conjecture (OEIS A006577) - Mulai dari integer, bagi dengan 2 jika itu genap, atau kalikan dengan 3 dan tambahkan 1 jika itu aneh, dan ulangi prosesnya sampai Anda mencapai 1. Output harus berupa jumlah iterasi membawa Anda mencapai 1.
- Array Tantangan # 1: Array Bergantian - Diberikan array bilangan bulat, periksa apakah semua item yang diindeks sama atau tidak, dan semua item yang diindeks sama adalah sama, dan menghasilkan nilai yang benar atau salah sesuai
- Apakah saya array yang tidak signifikan? - Diberikan array bilangan bulat, periksa apakah perbedaan absolut antara elemen berurutan semuanya lebih kecil dari atau sama dengan 1, dan menghasilkan nilai yang benar atau salah sesuai
- Apakah angka ini prima? - Diberi bilangan bulat positif, tulis program lengkap untuk memeriksa apakah bilangan prima, dan berikan nilai yang benar atau salah
- Saya seorang palindrome. Apakah kamu? - Diberikan string, periksa apakah itu palindrom, sementara program / fungsi Anda juga palindrom, dan hasilkan dua nilai yang berbeda dan konsisten sesuai
- Jumlah angka pada standar di - Ambil serangkaian angka dari STDIN dan hasilkan jumlah mereka.
- Find the Factorial - Diberikan bilangan bulat
n
, output produk dari semua bilangan bulat antara1
dann
inklusif. - Kode terpendek untuk menghasilkan keluaran tanpa batas - Tanpa masukan apa pun, menghasilkan keluaran tanpa batas, yang secara teoritis tidak akan pernah berhenti menghasilkan keluaran.
- Bake sepotong Pi - Keluarkan teks yang tepat ini:
()()()()()()
|\3.1415926|
|:\53589793|
\::\2384626|
\::\433832|
\::\79502|
\::\8841|
\::\971|
\::\69|
\::\3|
\__\|
- Temukan angka terkecil yang tidak membagi N - Diberikan bilangan bulat positif N, menghasilkan bilangan bulat positif terkecil yang tidak membagi N.
- Apakah ini genap atau ganjil? - Dengan bilangan bulat N, hasilkan paritasnya sebagai nilai kebenaran / kepalsuan.
- Output dengan panjang yang sama dengan kode - Tulis kode terpendek yang outputnya memiliki panjang yang sama dengan kode, di mana output tidak sama dengan kode.
- Golf Anda quine untuk kebaikan! - Tuliskan quine terpendek dalam bahasa Anda.
Agar valid, kiriman baru harus memiliki kiriman golf setidaknya untuk 2 masalah, dengan setidaknya 1 byte untuk masing-masing. Anda dapat menambah panjang pengajuan lainnya, tetapi skor total harus berkurang setidaknya 2 per jawaban. Juga, harap pertimbangkan untuk memasukkan tautan ke program yang diperbarui. Solusi yang diperbarui tidak boleh berfungsi saat dijalankan dengan versi juru bahasa sebelumnya.
Cara mendapatkan cookie
Saya memiliki daftar 5 tantangan, yang tidak wajib untuk dicoba, dan tidak mempengaruhi skor Anda, tetapi hanya tantangan tambahan untuk menguji apakah Bugle cukup mampu. Jangan ragu untuk memasukkan solusi untuk sejumlah ini dalam jawaban Anda:
- Buat penerjemah mandiri
- Buat quine yang mampu payload
- Tentukan string
- Hyperprogramming: N + N, N × N, N ^ N semuanya dalam satu
- "KNOT" atau "TIDAK"?
Deskripsi tidak termasuk karena tidak diperlukan bagi semua orang untuk dapat bersaing dalam tantangan.
Bagaimana cara menang
Begitu skor minimum ( kami yakini 16, meskipun segala upaya untuk bermain golf yang disambut dengan hangat) telah tercapai, jelas rantai telah berakhir karena solusi tidak bisa mendapatkan skor yang lebih baik. Setelah 16 tercapai, tantangan tetap hidup selama 1 bulan sesudahnya, untuk memberi siapa pun peluang untuk golf solusi lagi. Setelah bulan ini berlalu, tantangan sudah berakhir.
Setelah tantangan selesai, saya akan memigrasikan penerjemah ke repositori GitHub, dan melalui intrik biasa merilis bahasa yang stabil. Anda juga dapat mulai memposting solusi untuk tantangan pada PPCG saat ini, menggunakan bahasa tersebut, tetapi tolong jangan sampai membanjiri halaman depan dengan jawaban. Sebaliknya, sebarkan selama periode waktu tertentu.
Memformat
Agar informasi lebih mudah ditemukan dalam jawaban Anda, harap format sebagai berikut:
# [N]. [Score]
[New command + description]
[Interpreter/link to interpreter]
[Link to programs]
Di mana [N]
nomor jawaban Anda (1 untuk yang pertama, 2 untuk yang kedua dll.)
Aturan
- Anda harus menunggu 3 jam antara memposting jawaban
- Anda tidak boleh memposting dua kali berturut-turut, kecuali tidak ada jawaban yang diposting selama 10 hari (tepatnya 240 jam)
- Anda mungkin tidak menghapus perintah sebelumnya.
- Penerjemah Anda tidak harus golf, dan jumlah byte-nya sama sekali tidak relevan di sini.
- Jika seseorang menyarankan golf ke program sementara jawaban Anda adalah yang terbaru, Anda harus mengedit di golf, dan memperbarui skor Anda.
- Anda juga dapat melakukan ini ketika jawaban Anda ada di tengah-tengah rantai, asalkan skor Anda tidak menjadi lebih rendah daripada jawaban selanjutnya.
- Harap jangan menjawab tantangan PPCG yang ada menggunakan bahasa ini, setidaknya sampai tantangan selesai
- Penerjemah ditulis dalam Python 3, dan harus terus seperti itu di seluruh rantai. Mengubah bahasa dilarang.
- Sekali lagi, agar valid, kiriman baru harus memiliki kiriman golf untuk setidaknya 2 masalah, dengan setidaknya 1 byte untuk masing-masing.
Ayo mulai!
Hello, World!
, maka itu 19 byte. Tetapi jika perilaku program kosong berubah, bergantung pada input, itu mungkin dapat dikurangi
for
loop) diizinkan, dan didorong untuk ditambahkan