Tulis sebuah program yang mengambil string di mana setiap baris terdiri dari karakter yang ditandai 0
oleh beberapa spasi. Baris teratas tidak diindentasi dan setiap baris lainnya akan diindentasi oleh paling banyak satu ruang lebih banyak daripada garis sebelumnya.
Tidak ada garis yang akan memiliki spasi tambahan, tetapi Anda dapat secara opsional berasumsi bahwa ada satu baris tambahan tambahan.
Misalnya, input mungkin terlihat seperti ini:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Tugas Anda adalah menghitungnya seperti garis besar hirarkis , menggunakan peningkatan bilangan bulat positif sebagai header baris. Ini akan menjadi output untuk contoh:
1
1
1
2
2
2
1
2
3
1
3
1
1
2
Perhatikan bagaimana setiap tingkat indentasi hierarkis memiliki set sendiri angka yang meningkat, bahkan jika itu hanya naik satu.
Dalam output, seharusnya tidak ada spasi tambahan, tetapi mungkin ada opsional baris tambahan.
Tulis program lengkap yang mengambil string input melalui stdin atau baris perintah, atau tulis fungsi yang menggunakan string sebagai argumen. Cetak hasilnya atau kembalikan sebagai string.
Kode terpendek dalam byte menang.
Contohnya
Jika string kosong adalah input, string kosong harus berupa output.
Contoh paling sepele berikutnya adalah input
0
yang seharusnya menjadi
1
Contoh besar - Input:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Keluaran:
1
1
1
2
1
3
1
2
1
2
1
1
2
3
4
2
3
1
2
3
2
1
1
2
1
2
3
4
5
6
7
8
9
10
11
1
1
1
12
1
3
4
5
1
1
1
1
1
1
2
2
2
2
2
2
1
2
1
2
6
7
sumber
S=[]\nfor w in input()[:-1].split('0\n'):S=([0]+S)[~len(w):];S[0]+=1;print w+`S[0]`
S=[]\nfor w in input().split('\n'):S=([0]+S)[-len(w):];S[0]+=1;print w[:-1]+`S[0]`
.CJam, 25 byte
Seperti jawaban Python saya , ini menggunakan larik untuk menyimpan yang nomor setiap tingkat indentasi hingga. Satu perbedaan, bagaimanapun, adalah ini menggunakan
t
(set array) untuk mengganti 0 pada setiap baris dengan angka yang kita inginkan.Cobalah online .
sumber
JavaScript ES6,
8381 byteIni menggunakan larik yang menampung angka saat ini untuk setiap level indentasi. Segala sesuatu yang melewati level tersebut diatur ulang ke 0 menggunakan
fill()
. EDIT: 2 byte disimpan berkat tip vihan1086.Cuplikan Stack di bawah ini dapat digunakan untuk pengujian karena sedikit tidak diubah dan menggunakan sintaks ES5 yang didukung lebih baik. Fungsi kedua adalah polyfill karena
fill()
tidak ada cara pendek untuk melakukannya tanpa ES6.sumber
Python - 191
Fungsinya adalah
z
.sumber
Pip
-rn
,3127 byteMasukan dari stdin. Cobalah online!
Penjelasan
sumber