(berdasarkan posting ini dan diskusi selanjutnya tentang obrolan - juga, terima kasih banyak kepada Dennis untuk TIO!)
Tantangan
Pilih bahasa yang saat ini tersedia di situs TryItOnline , misalnya PowerShell . Tulis kode dalam bahasa itu pada halaman itu, yang tidak mengambil input apa pun, sehingga ketika tombol Run diklik, output pada halaman itu sama persis dengan apa yang ada di bidang "URL Biasa" ketika Simpan / Simpan tombol diklik sebagai gantinya.
Sebagai contoh fiktif, anggap itu aaa
adalah kode untuk solusi ini di PowerShell. Kemudian, hasil mengklik Jalankan dengan aaa
sebagai kode aktif https://tio.run/#powershell
akan ditampilkan https://tio.run/##K8gvTy0qzkjNyfn/PzEx8f9/AA
, yang juga merupakan bidang "URL Biasa" ketika tombol Simpan / Simpan diklik.
Mencetak gol
The URL yang dihasilkan adalah kiriman Anda untuk tantangan ini. Pemenangnya adalah URL terpendek yang diukur dalam byte. Untuk contoh di atas, URL https://tio.run/##K8gvTy0qzkjNyfn/PzEx8f9/AA
adalah pengajuan tantangan, sebesar 44 byte . URL terpendek yang memenuhi sisa tantangan ini memenangkan tantangan dan mendapatkan poin brownies (poin tidak dapat ditukarkan). Mengingat bahwa ada panjang minimum yang mungkin yang berbeda, jika dua pengajuan panjang, pengajuan sebelumnya menang.
Pembuatan URL
Ini adalah awal dari algoritma pembuatan URL di repositori. Anda dapat melihat bagaimana area kode utama diambil, setiap elemen tambahan ditambahkan, string dikempiskan dan Base64 dikonversi, dan kemudian ##
ditambahkan, dll. Saya tidak akan membahas detail selengkapnya di sini; bagian dari tantangannya adalah mem-parsing dan memahami bagaimana URL dihasilkan untuk mengeksploitasi setiap quirks potensial dalam algoritma tersebut.
Aturan / Klarifikasi
- Kode aktual tidak boleh mengambil input dan hanya menghasilkan URL-quine sebagai output.
- Ini berarti satu-satunya bidang teks yang harus diisi ketika mengklik ke URL adalahCode
,Header
,Footer
atau sesuai "Compiler Flag" ladang; yangInput
danArguments
bidang dilarang dan harus tetap kosong / tidak terpakai. Mengklik tombol Run seharusnya hanya mengubahOutput
bidang. Untuk tantangan ini,Debug
bidang ini diabaikan dalam semua situasi. - Aturan quine biasa berlaku untuk kode sejauh mungkin (misalnya, kode tidak dapat membaca kode sumbernya sendiri melalui
.code.tio
). - Harap sertakan deskripsi tentang bagaimana kode bekerja dalam kiriman Anda.
- Mengirimkan quine "curang" dengan mengirimkan permintaan tarik Git ke repositori TIO untuk membuat URL "trik" atau pintasan atau sejenisnya tidak diizinkan.
- Demikian pula, mengirimkan permintaan tarik untuk memperbarui bahasa tertentu untuk menghasilkan URL "trik" tidak diizinkan.
- Harap bersikap baik pada server Dennis dan jangan menyalahgunakannya atau mencoba eksploitasi demi tantangan ini.
sumber
https://tio.run/##a+a
tautan ke program yang menghasilkanhttps://tio.run/##a+a
, apakah valid meskipun tautan yang dihasilkansaveState
adalahhttps://tio.run/##a@a
Jawaban:
Python 2 , panjang URL = 170 byte
Cobalah online!
Ini bergantung pada tiga kebetulan:
=
karakter padding.+
karakter apa pun .sumber
Bash ,
174166165157 byteIni mengkodekan program Bash berikut.
Cobalah online!
Terima kasih kepada @ jimmy23013 untuk bermain golf 8 byte dari pendekatan awal saya, untuk pendekatan yang menghemat byte lain, dan untuk bermain golf 8 byte lainnya dari pendekatan itu!
sumber
base64 | tr -d \\n
terminal ... Terima kasih!Pyth , panjang URL = 134 byte
Kode:
Cobalah online!
Menggunakan zlib builtin (
.Z
), dan implementasi inline dari base64.Bagaimana itu bekerja
Tahap luar:
Tahap dalam, diperoleh dengan mengganti spasi putih dalam string
J
dengan tanda kutip ganda:(Sayang sekali bidang "Input" tidak diizinkan, atau saya akan memiliki solusi 118 byte .)
sumber
PowerShell, 274 byte
Ini semua berkat cuplikan berikut:
Cobalah online!
sumber
JavaScript (Node.js) , 214 byte
Cobalah online!
sumber