Tugas Anda adalah menulis program atau fungsi yang menampilkan karakter pertama dari kode sumbernya, lalu yang kedua, lalu yang ketiga ... setiap kali dijalankan.
Misalnya, jika program Anda foo
menggunakan bahasa bar
dalam file baz.bar
, maka Anda akan mendapatkan hasil yang mirip dengan ini:
λ bar baz.bar
f
λ bar baz.bar
o
λ bar baz.bar
o
Program Anda dapat melakukan apa saja setelah selesai mencetak kode sumbernya dengan cara ini. Anda dapat mengubah kode sumber untuk file tersebut, tetapi ingat bahwa kode sumber yang akan dicetak adalah kode sumber asli .
Ini adalah kode-golf, jadi program terpendek dalam byte menang.
Jawaban:
Jelly , 12 byte
Ini adalah tautan niladik. Cobalah online! (Termasuk kode untuk memanggil tautan dua belas kali.)
Bagaimana itu bekerja
Sebagai bonus tambahan, karena register akan menyimpan string kosong setelah panggilan kedua belas, itu sekali lagi palsu dan tautan siap untuk memulai dari awal. Memanggil tautan 24 kali akan menampilkan kode sumber dua kali, menyebutnya 36 kali tiga kali, dll.
sumber
¢
), fungsi identitas (¹
, tidak benar-benar diperlukan setelah panggilan pertama), atur nilai kembali ke umpan baris (⁷
, secara implisit mencetak nilai pengembalian sebelumnya), ulangi.¹
dan⁷
keduanya superskrip, tetapi keduanya tidak terkait. Saya telah menggantinya dengan yang kurang membingungkan¢;¢;¢;¢;¢;¢;¢;¢;¢;¢;¢;¢
(menelepon, menyatukan, ulangi).Javascript - 26 byte
Menentukan
f()
yang mengembalikan karakter kode sumber dengan karakter.Pengembalian tidak terdefinisi setelah kehabisan karakter.
sumber
ditumpuk , tidak bersaing, 34 byte
Variasi pada quine standar. Ini adalah program lengkap. Ini digunakan
execCounter
untuk mendapatkan berapa kali program ini dijalankan secara spesifik. Kesalahan setelah mengeluarkan semuanya.Coba di sini!
sumber
Pip , 31 byte
Fungsi anonim. Uji di TIO!
Penjelasan
Mulai dengan quine Pip standar ini:
Bungkus ini dalam kurung kurawal untuk membuatnya berfungsi. Sekarang, alih-alih mengembalikan seluruh sumber, kita perlu mengindeksnya. Menggunakan variabel global untuk indeks dan menambahkannya setiap kali akan memenuhi persyaratan "karakter berikutnya setiap kali disebut".
v
adalah kandidat terbaik karena telah diinisialisasi ke-1
. Menambahkannya pertama kali memberikan indeks0
, waktu berikutnya1
, dll.Pip memiliki pengindeksan siklus, jadi setelah fungsi mencetak karakter terakhirnya, ia akan memulai dari awal.
sumber
Python, 90 byte
Perpanjangan pada standar Python quine (selamat datang tips golf):
Ini adalah fungsi generator python , artinya Anda mengulanginya, dan setiap iterasi memberikan karakter berikutnya dalam kode sumber. Ketika semua karakter telah dikembalikan, ini macet dengan
IndexError
.Untuk pengujian, cukup tambahkan skrip ini ke akhir program:
Atau coba online!
sumber
*> <> ,
1321 byteMembuat file dengan nama
\n
untuk melacak indeks.Ini mungkin bisa bermain golf lebih banyak, tetapi tidak ada yang langsung melompat ke arah saya ...
Keluaran
Penjelasan
Quine Incremental Quine
Penjelasan
sumber
g
instruksi."your code goes here;
untuk> <>, lalu mengakses anggota ke-n di stackMathematica, 91 byte
Komentar sangat disambut; Saya masih belajar tali tentang apa quines quines yang tepat.
Menentukan fungsi yang dipanggil berulang kali tanpa argumen. Setelah panggilan 91, ia melakukan kesalahan besar dan kembali tidak dievaluasi.
Ada dua masalah yang harus diatasi: pertama, saya hanya ingin menggunakan
StringTake[ToString[#0]<>"[]"]
, tetapiToString[]
tampaknya menghapus tanda kutip; jadi saya harus mengganti"[]"
denganFromCharacterCode[{91, 93}]
. Kedua, variabel Mathematica mulai tidak diinisialisasi, jadi saya tidak bisa menelepon++q
sebelumq
didefinisikan; inilah mengapa awalIf[!NumberQ[q], q = 0]
dibutuhkan.Coda yang tidak relevan: ketika melihat ke atas
NumberQ
, saya mengetahui bahwa Mathematica memiliki fungsi yang disebutTrueQ
... yang, ya, kembaliTrue
jika argumennya adalahTrue
danFalse
jika argumennya adalahFalse
! (Utilitasnya adalah ia mengembalikanFalse
semua argumen lain juga.)sumber
Microscript II,
4033 byteKode blok literal, bahasa yang paling dekat dengan fungsi:
Setelah berlari, ia menempatkan dirinya kembali ke
x
untuk membuatnya lebih mudah untuk memanggil lagi.sumber
Bash (dan zsh, ksh), 39-byte
Ia tidak mencetak apa pun setelah program dicetak.
Pastikan
0
tidak ada di direktori saat ini dan jalankan:sumber