Diberikan tingkat penyatuan bilangan bulat positif n
dan string s
karakter ascii yang dapat dicetak ( untuk
~
, menghasilkan program yang, ketika dijalankan dalam bahasa yang sama, mengeluarkan program yang menghasilkan program ... yang menghasilkan string s
.
Sebanyak n
program harus dibuat, yang semuanya harus dijalankan dalam bahasa yang sama dengan jawaban Anda.
Catatan: Anda dapat menampilkan program atau fungsi - apa pun yang diizinkan secara default sebagai kiriman.
Anda dapat memasukkan s
dengan karakter yang lolos, bagaimana suatu program atau fungsi dalam bahasa Anda biasanya akan memasukkan string.
Contoh
Misalnya, diberikan n=1
dan s="recursion"
, program Python 2 mungkin menampilkan:
print "recursion"
Menjalankan ini akan menghasilkan:
recursion
Diberi n=2
dan s = "PPCG", sebuah program Python 2 mungkin menampilkan:
print "print \"PPCG\" "
Menjalankan output ini:
print "PPCG"
Menjalankan output ini:
PPCG
Terkait (+ inspirasi judul): Satu lagi LUL dan saya keluar
Juga Terkait (di kotak pasir - sekarang dihapus, tetapi masih dapat dilihat dengan reputasi yang cukup): Rekursi Kode Sumber
Uji Kasus
Pastikan kode Anda berfungsi untuk kasus uji berikut (satu per baris):
n s
2 PPCG
4 Robert'); DROP TABLE Students;--
17 Deep
2 Spaces In Here
3 "Don't forget quotes!"
5 'Backt`cks might be a h`tch'
6 5%s
8 [Brackets]<Are>(Great){Usually}
3 !"#$%&'()*+,-./ 0123456789:;<=>?@ABCDEFGHIJKLMN
6 OPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
7 THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
3 the quick brown fox jumps over the lazy dog
sumber
0
?Jawaban:
Jelly , 2 byte
Cobalah online!
hehe builtin
sumber
'"hi"'
untuk melihat hasil yang diharapkanJavaScript (ES6),
4744 byteDisimpan 3 byte berkat @HermanLauenstein
Mengambil input dalam sintaks currying
(n)(s)
.Contoh
Akan menampilkan:
Yang akan dicetak:
Yang akan dicetak:
Demo
Contoh yang lebih kompleks di mana
alert()
telah ditimpa sehingga hasil antara dicetak ke konsol dan dieksekusi secara otomatis.Tampilkan cuplikan kode
Versi alternatif, 40 byte
Disarankan oleh @Shaggy
Yang ini mengembalikan fungsi anonim daripada program lengkap.
sumber
alert
? 41 byten=>g=s=>BTalert(atob("${btoa(--n?g(s):s)}"))BT
(ganti BT dengan backticks)sh + coreutils, 31 byte
Dibawa
n
sebagai parameter baris perintah dans
pada STDIN.sumber
yes
berulang kali mencetak baris perintahnya, yaituexec sed 1d $0
($
adalah shell metacharacter sehingga harus dikutip).sed $1q
berhenti mencetak setelah garis$1
(yaitun
).cat
kemudian salin string input. File yang dihasilkan adalahsh
skrip yang memberitahu shell untuk mengganti dirinya dengan salinansed
parameter1d
dan nama file skrip.sed
kemudian lewati baris pertama file dan output sisanya. Setiap skrip memiliki satuexec sed 1d $0
awalan yang lebih sedikit , sampai setelahn
eksekusi hanya input asli yang dicetak.Python 2 , 40 byte
Cobalah online!
-4 byte terima kasih kepada xnor
sumber
Haskell, 17 byte
Pada saat saya menulis ini, ini adalah jawaban terpendek untuk bahasa non-golf-spesifik .
Ini adalah fungsi yang mengambil
s
dann
dalam urutan itu, dan mengembalikan hasil atau kode sumber ekspresi yang, ketika dievaluasi, mengembalikan kode sumber berikutnya.Argumen mengapa ini penting:
Jika
f
diberikanPPCG
dan2
sebagai parameternya, hasilnya adalah teks"\"PPCG\""
(fungsi pertama yang dihasilkan), yang ketika dievaluasi mengembalikan teks"PPCG"
(funtion kedua yang dihasilkan), dan ketika dievaluasi kembaliPPCG
.Terima kasih kepada nimi karena menyarankan pemendekan.
sumber
APL (Dyalog) ,
2423 byte-1 terima kasih kepada ngn.
Ini adalah program lengkap yang meminta
s
dan kemudian untukn
dan mencetak ke STDOUT.Cobalah online!(kasus 17 Jauh dihilangkan karena melebihi batas output TIO - bekerja offline)
⍞
memintas
⊢
hasilkan itu (untuk memisahkan⎕
dan⍞
)''''{
…}⍣⎕
Memintan
dan menerapkan lambda ini dengan satu kutipan sebagai argumen kiri yang berkali-kali.⍺
singkatan argumen kiri (kutipan) dan⍵
singkatan argumen kanan (teks input):⍵=⍺
Boolean di mana teksnya sama dengan kutipan1+
tambahkan satu⍵/⍨
mereplikasi setiap karakter dari argumen dengan frekuensi yang sesuai⍺,
tambahkan kutipan⍺,⍨
tambahkan kutipanIni berfungsi karena string dalam APL
'
dibatasi dan tanda kutip tunggal dalam string digandakan, sementara tidak ada karakter lain yang perlu diloloskan.Dyalog APL juga dikirimkan dengan utilitas (
⎕SE.Dyalog.Utils.repObj
) yang menghasilkan ekspresi APL yang mengevaluasi argumennya (mirip dengan Jelly's uneval ). Karena itu, program berikut ini setara dengan di atas, tetapi bekerja untuk semua array:Cobalah online!
sumber
⍺
.- yang menghemat (setidaknya) satu byte.Firefox JavaScript,
4135 byteFirefox memiliki yang bagus
uneval
, yang berfungsi seperti apa - tidak mengungkap objek yang diberikan, dalam hal ini - string.sumber
Java 8,
9593 byte-2 byte terima kasih kepada @Lynn .
Melarikan karakter khusus sangat menjengkelkan di Jawa ..
Coba di sini dan coba metode yang dihasilkan di sini .
Penjelasan:
Penjelasan tambahan untuk penggantian regex:
Kenapa semua tebasan ini?
sumber
"
dalam kelas karakter regex, jadi\\\\\"
(lima backslash) harus baik-baik saja.Underload , 11 byte
Cobalah online!
Masukan harus dimulai dari tumpukan, dengan nomor di atas dalam bentuk angka gereja . Saya tidak tahu apakah ini adalah metode input yang valid, tetapi spesifikasinya tidak memiliki input, dan menempatkan input ke atas tumpukan tampaknya seperti metode terdampar yang digunakan dalam bahasa tersebut.
sumber
GolfScript , 5 byte
Cobalah online!
sumber
QuadR , 8 byte
Terjemahan sederhana dari jawaban ngn .
Dibawa
n
sebagai argumen dans
sebagai Input.Cobalah online!
PCRE R eplace semua instance dari
^|'|$
Awal baris ATAU Kutipan ATAU Akhir baris'&
dengan Kutipan dan seluruh pertandinganArgumen menentukan berapa kali untuk mengulangi transformasi.
sumber
R , 62 byte
Cobalah online!
Sebut seperti ini:
f(n,s)
diikuti olehn
salinan()
Fungsi bernama; mengembalikan fungsi anonim. Yang dilakukan adalah memodifikasi nilai default
formals
darif
, yang memungkinkan fungsi yang dihasilkan dipanggil (dan kemudian hasil dari yang dipanggil,n
kali). ketikan
mencapai0
, ia kembalis
.R sebenarnya tidak terlalu buruk dalam melarikan diri! Ini menggunakan C-style escaping, jadi Anda hanya perlu mengambil input, ganti
"
dengan\"
dan\
dengan\\
, lalu bungkus semuanya" "
.sumber
Pyth, 21 byte
Coba di sini.
Sayangnya fungsi rekursif (bukan program lengkap seperti di atas) lebih panjang (24 byte):
sumber
APL (Dyalog Classic) , 19 byte
Cobalah online!
sumber
Ruby , 34 byte
%p
adalah flag printf khusus Ruby yang mendapatkaninspect
nilai argumennya, mirip dengan%r
di Python.$><<
berarti cetak.Cobalah online!
sumber
Excel VBA (32-Bit), 67 Bytes
Versi Terbatas untuk VBA Excel 32-Bit karena
2^i
mengevaluasi tanpa kesalahan dalam VBA 32-Bit, tetapi tidak dalam VBA 64-BitFungsi jendela langsung VBE anonim yang mengambil input
n
dans
dari rentang[A1]
dan[B1]
dan menampilkan fungsi anonim yang bila dievaluasi turun menjadi hanya terminal (setelahn
iterasi) yang dihasilkan hanyas
sebagai terminal ituContoh Input / Output
sumber