Tantangan
Menulis potongan terpendek kode mungkin seperti itu, ketika N salinan itu adalah concatenated bersama-sama, jumlah output karakter adalah N 2 . N akan menjadi bilangan bulat positif.
Misalnya jika snipet itu soln();
, maka menjalankan soln();
akan mencetak tepat 1 karakter, dan menjalankan soln();soln();
akan mencetak tepat 4 karakter, dan menjalankan soln();soln();soln();
akan mencetak tepat 9 karakter, dll.
Setiap karakter mungkin ada dalam output selama jumlah karakter sudah benar. Untuk menghindari kebingungan lintas-OS, \r\n
baris baru dihitung sebagai satu karakter.
Program mungkin tidak membaca sumbernya sendiri atau membaca ukuran file mereka atau menggunakan celah lain semacam itu. Perlakukan ini seperti tantangan quine yang ketat .
Outputnya mungkin pergi ke stdout atau file atau alternatif serupa. Tidak ada input.
Komentar dalam kode baik-baik saja, seperti yang keluar pertengahan eksekusi.
Setiap karakter mungkin ada di program. Pengajuan terpendek dalam byte menang.
sumber
Jawaban:
TECO, 4 byte
V
mencetak isi dari baris saat ini di buffer teks.1\
memasukkan representasi string dari angka 1 pada posisi saat ini.Jadi pada N th iterasi dari program, yang pertama
V
akan menampilkan N - 1 salinan karakter1
, kemudian tambahkan lagi1
ke teks, maka output N1
s.sumber
Brainfuck,
1716 byteAnda bisa mengujinya di sini . Gunakan saja fakta itu .
n2+2n+1=(n+1)2
sumber
Brainfuck, 11
Saya melihat jawaban Brainfuck pertama dan berpikir itu terlalu lama :)
Outputnya mungkin lebih mudah dilihat jika Anda mengganti plus dengan lebih banyak plus.
Pada iterasi ke-N, setiap loop menghasilkan N-1 salinan karakter dengan nilai ASCII 1, dan kemudian satu lagi dengan
+.
.sumber
Python 2, 22
Mencetak string kosong, lalu dua
x
, lalux
empat dan seterusnya. Dengan baris baru setelah setiap string, ini keluar ken*n
karakter.Satu salinan:
"\n"
(1 karakter)Dua salinan:
"\nxx\n"
(4 karakter)Tiga salinan:
"\nxx\nxxxx\n"
(9 karakter)Untuk menghentikan variabel awal agar tidak diinisialisasi
a
ulang setiap kali dijalankan, saya mengakhiri kode dengan a;a
, yang jinak sendiri, tetapi dikombinasikan dengan loop berikutnya untuk membuat kambing hitamaa
untuk ditugaskan sebagai gantinya. Trik ini bukan milikku; Saya melihatnya di jawaban sebelumnya. Saya akan menghargai jika seseorang bisa menunjuk saya sehingga saya bisa memberikan pujian.sumber
,
setelahnyaprint a
akan berhasil.print a
mencetak baris baru setelah setiap cetak.CJam, 6 byte
Menggunakan fakta itu .
n2 + n + (n+1) = (n+1)2
sumber
:L..1+
adalah ide yang sama di GolfScript...n+
dalam GolfScript, tapi itu baris baru sial ... :(:L
karena tidak digunakan./// , 21 byte
Saya yakin ada cara yang sangat pendek dan memutar untuk menyelesaikan ini di /// tapi saya tidak bisa menemukan apa pun, di luar cara "langsung":
Ini didasarkan pada pendekatan pencetakan nomor ganjil berturut-turut. Cuplikan terdiri dari a
1
di awal yang dicetak, dan dua penggantian yang menambahkan dua1
s ke bagian pertama dari setiap salinan cuplikan secara berturut-turut. Mari kita bahas iniN = 3
. Berikut ini harus dibaca dalam kelompok 3 atau lebih baris: 1. kode saat ini, 2. token yang diproses, 3. (dan berikut) komentar apa yang dilakukan token di atas.Menariknya, ini bekerja dengan baik jika kita memindahkannya
1
sampai akhir:sumber
> <> , 14 byte
Menggunakan "jumlah bilangan bulat aneh berurutan mulai dari ide 1". Dimulai dengan 1 dan mengalikannya dengan 100 setiap kali, meningkatkan panjang output secara progresif dengan peningkatan 2.
Misalnya, menambahkan 5 salinan memberi
Saya menguji dengan mem-piping output ke file, dan tidak melihat baris baru.
Kerusakan
sumber
CJam,
109 byteIni mencetak N 2 spasi di mana
N
jumlah salinan kode.Ekspansi kode :
Cobalah online di sini
sumber
Python 2, 20 byte
sumber
Java - 91 byte
Solusi ini setara dengan yang lain ini di Python. Itu pasti tidak akan menang, tapi itu menyenangkan :)
sumber
Perl, 14 byte
Ini perlu dijalankan dengan
-l
saklar perintah Perl , yang menyebabkanprint
untuk menambahkan baris baru.Ini mencetak variabel default
$_
, kemudian menambahkan dua garis bawah melalui substitusi.Contoh:
sumber
say
?-E
.Brainfuck, 10 karakter
Kedua solusi Brainfuck sebelumnya adalah waaay terlalu lama (16 dan 11 karakter) jadi di sini adalah lebih pendek:
Di
n
blok -th ia mencetak2*n-1
karakter (dengan codepoint dari2*n-1
ke1
)sumber
Prelude ,
1812 byteIni cetakan N 2 tab. Ini mengasumsikan juru bahasa yang memenuhi standar yang mencetak karakter alih-alih angka, jadi jika Anda menggunakan juru bahasa Python Anda harus mengatur
NUMERIC_OUTPUT
untukFalse
.Idenya adalah hanya menggunakan bagian atas tumpukan (yang awalnya 0) sebagai
2(N-1)
, dan mencetak2N-1
tab, kemudian menambah bagian atas tumpukan dengan 2. Oleh karena itu setiap pengulangan mencetak jumlah ganjil berikutnya dari tab.sumber
Java - 59/44 (tergantung kebutuhan)
Tampaknya kami diizinkan untuk menganggap kode berjalan di kelas.
Jika bisa masuk ke dalam metode utama:
sumber
C, 87 byte
Ini menggunakan dua makro ajaib.
__COUNTER__
adalah makro yang diperluas untuk0
pertama kali digunakan,1
yang kedua, dll. Ini adalah ekstensi kompiler, tetapi tersedia di gcc, dentang, dan Visual Studio setidaknya.__FILE__
adalah nama file sumber. Menyertakan file dalam C / C ++ secara harfiah sama dengan menempelkannya langsung ke kode sumber Anda, jadi agak sulit untuk memanfaatkannya.Masih mungkin untuk menggunakan teknik ini tanpa
__COUNTER__
. Dalam hal itu, penjaga standar terhadap penggunaan kode dua kali dapat digunakan untuk#if
pernyataan, dan__LINE__
dapat digunakan untuk menghitung jumlah karakter yang dibutuhkan.sumber
Dyalog APL,
2019 byteSolusi berbasis matriks.
Coba di sini . Mengembalikan serangkaian pengulangan . Penjelasan oleh ledakan untuk :
N2
a
N = 2
sumber
STATA 20
Ada garis baru di belakang untuk memastikan bahwa pernyataan tampilan (di) berfungsi. Pertama-tama tampilkan nomor saat ini dalam $ a baris baru (dan satu tambahan dari tampilan default). Kemudian tambahkan 2 menjadi $ a.
Menggunakan pendekatan bilangan genap (yaitu pendekatan bilangan ganjil minus 1) dengan baris baru ekstra setiap waktu.
sumber
T-SQL 117
Perhatikan ruang trailing untuk memastikan bahwa jika kondisi diperiksa dengan benar setiap waktu.
Menggunakan pendekatan angka ganjil. Tidak yakin apakah ada baris baru pada pernyataan pilih.
Tidak yakin apakah ada cara yang lebih pendek untuk membuat tabel jika tidak ada.
sumber
PostScript, 35 karakter
Setiap pass "bocor" satu hal di stack, jadi
count
naik 1 setiap kali. Kemudian hanya menggunakan jumlah trik angka ganjil.Output byte semua
\000
karena itulah nilai awal string.sumber
Haskell, 72
Penjelasan
Operator yang berlaku
$
bertindak seolah-olah Anda menempatkan tanda kurung di sekeliling sisa baris (ada pengecualian untuk ini, tetapi berfungsi dalam hal ini).aputStr
adalah fungsi yang mengambil string dengan format "abc ...", di mana "abc" adalah akar kuadrat dari panjang string, termasuk abc. Ini akan mengurai string sebagai integer, dan mengembalikan string yang dimulai dengan abc + 1 dan memiliki panjang kuadrat itu. Karena$
operator, ini akan dipanggil secara rekursif pada "1" N kali.sumber
Pyth, 8 byte
Ini bergantung pada fakta bahwa N 2 sama dengan jumlah
N
bilangan ganjil. Sekarang Pyth otomatis mencetak baris baru, jadi saya harus mencetakZ * 2
karakter di setiap kode dari manaZ
pergi0
keN - 1
.Ekspansi Kode :
Cobalah online di sini
sumber
Golflua, 23 byte
menghasilkan kombinasi
&
dan\n
karakter.Kode Lua Setara
Setiap kali snipet kode berjalan, ia menghasilkan 2 karakter lebih banyak keluaran daripada yang terakhir, dimulai dengan 1 karakter. The
print
Fungsi menambahkan baris baru, jadi saya menginisialisasi X untuk 0 bukan 1.sumber
ActionScript - 27/26 byte
atau
Bagaimana itu bekerja:
Itu hanya komentar dari baris pertama. Catatan:
trace
menambahkan baris baru. Atau mungkin semua IDE yang saya gunakan melakukannya secara otomatis.sumber
GML, 27
sumber