Tugas Anda adalah menulis program (atau fungsi) yang akan mengambil string sebagai input dan menambahkan teks ke awal setiap baris yang memenuhi aturan berikut:
- Teks yang ditambahkan harus berisi nomor baris. Anda dapat menggunakan pengindeksan berbasis 0 atau 1.
- Teks harus berupa komentar dalam bahasa Anda. Sebuah komentar didefinisikan sebagai potongan kode yang valid secara sintaksis yang tidak membuat perubahan pada status program. Menghapus komentar seharusnya tidak membuat perubahan pada program.
- Komentar hanya dapat memuat baris baru di bagian akhir.
- Anda tidak harus memasukkan nomor baris untuk baris yang hanya berisi spasi putih dan komentar.
Spesifikasi
- Anda dapat berasumsi bahwa input akan menjadi program yang valid dalam bahasa Anda.
- Dalam bahasa yang sensitif terhadap indentasi seperti Python, Anda dapat menempatkan komentar nomor baris setelah semua indentasi. Anda dapat memilih tab atau spasi untuk menjadi karakter lekukan Anda, tetapi Anda harus menentukan pada posting Anda.
- Anda dapat mengasumsikan bahwa setiap pernyataan dalam kode akan mengambil paling banyak keseluruhan dari 1 baris; yaitu tidak ada multi-line string atau garis miring terbalik
Uji Kasus
Python:
#0
a = int(input())
#1
while a:
#2
print(a)
C: (Jujur, saya terkejut kompilasi ini)
/*0 */#include <stdio.h>
/*1 */int main()
/*2 */{
/*3 */ char c;
/*4 */ c = getchar();
/*5 */ do
/*6 */ {
/*7 */ putchar(c);
/*8 */ }
/*9 */ while (c);
/*10*/}
Ini adalah kode-golf , jadi jawaban tersingkat (dalam byte) menang.
code-golf
code-generation
comment
Buah Esolanging
sumber
sumber
AssertionError
kecuali jejak stack berisi frasafoo.py
, yang diharapkan berasal dari nama file tetapi juga dapat muncul sebagai komentar baris dalam konteks.Jawaban:
Pyke, 7 byte
Coba di sini!
Saya menyatakan komentar integer sebagai integer yang diikuti oleh karakter
K
dan kemudian baris. Byte tambahan digunakan untuk menghentikan opcode baris baru dari menendang dan mencetak hal tambahan.sumber
Perl, 8 + 1 = 9 byte
Jalankan dengan
-p
(penalti 1 byte). (Catatan untuk orang-orang yang tidak terbiasa dengan aturan PPCG; Anda juga perlu menentukan versi modern dari sintaks Perl yang digunakan-M5.010
, tetapi kami memutuskan bahwa opsi untuk memilih versi bahasa gratis dan tidak dikenakan penalti byte, jadi saya tidak menyebutkannya dalam versi asli dari posting ini.)-p
menempatkan program ke dalam loop implisit; pada dasarnya menyebabkan program menjadi filter yang memproses setiap baris secara terpisah (yaitu seluruh program dijalankan pada baris pertama, lalu yang kedua, kemudian yang ketiga, dan seterusnya). Perl juga melacak nomor baris, yang disebut$.
, yang mencatat berapa banyak baris input telah dibaca. Jadi semua yang dilakukan program adalah membiarkan-p
membaca sederet input; output a#
, nomor baris saat ini ($.
), dan baris baru (say
menambahkan baris baru secara default, yang membantu dalam kasus ini, dan juga lebih pendek daripada yang lebih sering terlihatprint
); dan kemudian membiarkan-p
output baris kode asli yang dibacanya (biasanya program menggunakan-p
akan melakukan semacam pemrosesan pada input, tetapi karena kami tidak, itu hanya output tidak berubah). Komentar dalam Perl dijalankan dari#
baris baru (#
program itu sendiri tidak memulai komentar karena itu di dalam string literal), jadi yang pada dasarnya kita lakukan adalah mengambil kesempatan untuk menulis baris komentar ke dalam file saat kita memprosesnya , tanpa mengganggu siklus "baca dan tulis" alami "-p
.sumber
-p
loop atau nomor baris yang diperbarui secara otomatis.say"$.;"
akan bekerja juga, karena pertanyaan yang ditentukan bahwa "Anda dapat mengasumsikan bahwa setiap pernyataan dalam kode akan mengambil paling banyak keseluruhan dari 1 baris".Javascript,
4339 byteTerima kasih kepada ETH dan Conor untuk menghemat 4 byte.
sumber
/*${++b}*/
)) (gunakan string pemformatan)a=>a.replace(/^/gm,_=>`/*${++b}*/`,b=0)
V , 10 byte
Cobalah online!
sumber
Batch, 91 byte
Batch tidak memiliki cara membaca STDIN hingga EOF, jadi alih-alih nama file harus dilewatkan sebagai parameter baris perintah.
sumber
Lua,
8075 BytesMenyimpan beberapa byte dengan menyalahgunakan langauge.
Jawaban pemula yang cukup sederhana.
Tidak digabung, +
sumber
--[[10]]
1 karakter lebih panjang dari--[[9]]
kecuali Anda benar padu dengan spasi.Gema,
1615 karakterDi Gema hanya ada komentar baris, dimulai dengan
!
.Contoh dijalankan:
Berikut ini adalah untuk menjawab pertanyaan Adám , apakah mungkin untuk menambahkan nomor baris dalam jenis kode yang diabaikan.
Kode Gema pada dasarnya adalah kumpulan dari = untuk aturan transformasi, atau template = tindakan dalam istilah Gema. Saya tidak melihat cara untuk mendefinisikan template yang tidak akan pernah cocok dengan apa pun, ini saja sepertinya bukan jalannya.
Gema, 18 karakter
Berubah
e=3
menjadic:=1;:e=3
.Untungnya di Gema ada domain , semacam ruang nama. Kode di atas mendefinisikan aturan dummy di namespace c, yang tidak pernah kita gunakan. Sayangnya domain yang disebutkan tetap berlaku sampai akhir baris, jadi kami harus secara eksplisit untuk beralih kembali ke domain default.
Gema, 18 karakter
Berubah
e=3
menjadi1=$0;e=3
.Alternatif yang tidak terlalu rumit adalah menggunakan kode tanpa efek daripada mengabaikannya. Maksud saya untuk mengembalikan apa yang cocok.
sumber
e=3
diubahif (false) { 1 }; e=3
alih-alih saat ini!1e=3
? Ya, akan ada solusi panjang 19 karakter.Qbasic,
9189 byteMemasukkan:
Keluaran:
sumber
BASH (+ GNU sed) 27 byte
Bagian pertama (
i#
\n
=
) hampir berfungsi di sed GNU (untuk 4 byte), tetapi menempatkan baris baru setelah#
.sumber
awk (
1913 bytes)19 byte : Ini menyisipkan "#" + nomor baris di atas setiap baris kode
13 byte : Kredit & terima kasih kepada @manatwork untuk dua solusi 13 byte
Sebagai
1
tindakan bawaan untukprint $0
:Atau dengan mengganti
$0
kontensumber
{print"#"NR}1
atau$0="#"NR RS$0
?Fungsi ekstensi Kotlin,
6960 bytefun String.a()=lines().mapIndexed{i,s->"/*$i*/$s"}.joinToString("\n")
fun String.a(){lines().mapIndexed{i,s->println("/*$i*/$s")}}
Contoh penggunaan:
Keluaran:
sumber
CJam, 21 Bytes
Saya tidak berpengalaman dalam CJam sama sekali, tapi saya tahu pasti ada komentar :)
Penjelasan segera hadir.
sumber
oNo
dapat diganti dengann
di TIO.Mathematica, 58 byte
sumber
jq, 31 karakter
(27 karakter kode + 4 opsi opsi baris perintah.)
Di jq hanya ada komentar baris, dimulai dengan
#
.Contoh dijalankan:
sumber
input_line_number
. Menjadi Thanksgiving, ada perasaan khusus untuk diungkapkan$.
?GolfScript, 23 Bytes
Hanya ada komentar baris yang dimulai dengan "#".
Tidak digabungkan & dijelaskan:
Saya cukup yakin bahwa ini dapat lebih disederhanakan, terutama yang
i
mungkin dapat ditinggalkan.Anda dapat mengujinya di sini: https://golfscript.apphb.com/ Karena situs ini tidak mendukung penambahan input, Anda harus meletakkan string yang dikelilingi dengan tanda kutip ganda di depan kode.
'\n'
akan menjadi baris baru. Sadarilah fakta, bahwa ada urutan pelarian lainnya juga. Pengguna'\\'
jika Anda tidak yakin.sumber
C # 6,
6661 byteTerima kasih kepada CSharpie
(666, kode setan ^^)tidak lagi ...Ini berfungsi untuk semua bahasa menggunakan "Komentar gaya C" (C, C ++, C #, Java, ....)
Ini hanya membagi string menjadi garis, menambahkan setiap baris dengan indeksnya dan bergabung dengan garis yang diedit lagi dengan karakter baris baru.
versi lama:
sumber
Python 2, 82 byte
Bekerja untuk lekukan khusus ruang
Versi indentasi-kurang untuk 56 byte
sumber