Tantangan:
Input: Tiga bilangan bulat: panjang tepi bawah; jumlah awal butiran pasir; indeks
Keluaran: Keluarkan keadaan bagian bawah jam pasir pada indeks yang diberikan, berdasarkan panjang tepi bawah yang diberikan dan jumlah butiran pasir.
Aturan tantangan:
- Kami mensimulasikan butiran pasir dengan angka 1-9
- Kami menempatkan jumlah butiran pasir yang tersisa saat ini di bagian atas di tengah, diikuti oleh satu karakter pilihan Anda sendiri (tidak termasuk digit, spasi putih dan garis baru; yaitu
-
) pada baris di bawahnya - Saat jam pasir diisi, kami mengisinya per baris, satu digit setiap kali
- Ketika pasir bisa ke kiri atau ke kanan, kita SELALU ke kanan (hal yang sama berlaku untuk menyeimbangkan jumlah sisa butiran pasir di atas jam kaca)
- Ketika kita sudah mencapai angka 9, itu sudah terisi, dan kita tidak bisa lagi memuat pasir di tempat khusus itu di jam pasir
- Jumlah butiran pasir yang tersisa juga selalu selaras dengan benar
- Setelah bagian bawah jam pasir benar-benar terisi penuh, atau jumlah butiran pasir yang tersisa mencapai 0, kita tidak bisa melangkah lebih jauh, dan ini akan menjadi output untuk semua indeks di luar titik ini
- 0-diindeks atau 1-diindeks diizinkan, dan harap tentukan apa yang Anda gunakan dalam jawaban Anda.
- Trailing dan leading space dan satu trailing atau leading-line baru adalah opsional
- Anda diperbolehkan menggunakan karakter lain alih-alih nol untuk mengisi ruang kosong di bagian bawah jam pasir (tidak termasuk digit, baris baru, atau karakter yang Anda gunakan sebagai leher), jika Anda memilih untuk menampilkannya.
- Panjang tepi bawah selalu aneh
- Panjang tepi bawah adalah
>= 3
; dan jumlah butiran pasir>= 0
- Jika mau, Anda juga diizinkan mencetak semua negara hingga dan termasuk indeks yang diberikan
- Anda dapat mengasumsikan indeks (0-diindeks) tidak akan pernah lebih besar dari jumlah total butir pasir (jadi ketika ada 100 butir pasir, indeks 100 adalah input indeks maksimum yang valid).
- Indeks pertama (0 untuk 0-diindeks; 1 untuk 1-diindeks) akan menghasilkan jam pasir kosong dengan jumlah butiran pasir di atasnya.
Contoh: Gambar (atau ascii-art) mengatakan lebih dari seribu kata, jadi inilah contohnya:
Input panjang sisi bawah: 5
Jumlah input butiran pasir: 100
Alih-alih indeks saat ini, saya tampilkan semua langkah di sini:
Output untuk semua indeks yang mungkin dengan panjang tepi bawah 5
dan jumlah butiran pasir 100
:
100
-
0
000
00000
99
-
0
000
00100
98
-
0
000
00110
97
-
0
000
01110
96
-
0
000
01111
95
-
0
000
11111
94
-
0
000
11211
93
-
0
000
11221
92
-
0
000
12221
91
-
0
000
12222
90
-
0
000
22222
89
-
0
000
22322
88
-
0
000
22332
87
-
0
000
23332
86
-
0
000
23333
85
-
0
000
33333
84
-
0
000
33433
83
-
0
000
33443
82
-
0
000
34443
81
-
0
000
34444
80
-
0
000
44444
79
-
0
000
44544
78
-
0
000
44554
77
-
0
000
45554
76
-
0
000
45555
75
-
0
000
55555
74
-
0
000
55655
73
-
0
000
55665
72
-
0
000
56665
71
-
0
000
56666
70
-
0
000
66666
69
-
0
000
66766
68
-
0
000
66776
67
-
0
000
67776
66
-
0
000
67777
65
-
0
000
77777
64
-
0
000
77877
63
-
0
000
77887
62
-
0
000
78887
61
-
0
000
78888
60
-
0
000
88888
59
-
0
000
88988
58
-
0
000
88998
57
-
0
000
89998
56
-
0
000
89999
55
-
0
000
99999
54
-
0
010
99999
53
-
0
011
99999
52
-
0
111
99999
51
-
0
121
99999
50
-
0
122
99999
49
0
222
99999
48
-
0
232
99999
47
-
0
233
99999
46
-
0
333
99999
45
-
0
343
99999
44
-
0
344
99999
43
-
0
444
99999
42
-
0
454
99999
41
-
0
455
99999
40
-
0
555
99999
39
-
0
565
99999
38
-
0
566
99999
37
-
0
666
99999
36
-
0
676
99999
35
-
0
677
99999
34
-
0
777
99999
33
-
0
787
99999
32
-
0
788
99999
31
-
0
888
99999
30
-
0
898
99999
29
-
0
899
99999
28
-
0
999
99999
27
-
1
999
99999
26
-
2
999
99999
25
-
3
999
99999
24
-
4
999
99999
23
-
5
999
99999
22
-
6
999
99999
21
-
7
999
99999
20
-
8
999
99999
19
-
9
999
99999
Jadi sebagai contoh:
inputs: 5,100,1
output:
99
-
0
000
00100
Same example with another valid output format:
99
~
.
...
..1..
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa pun'. - Aturan standar berlaku untuk jawaban Anda, jadi Anda diperbolehkan menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat, program lengkap. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda.
- Juga, silakan tambahkan penjelasan jika perlu.
Kasus uji:
INPUTS: bottom-edge length, amount of grains of sand, index (0-indexed)
inputs: 5,100,1
output:
99
-
0
000
00100
inputs: 5,100,24
output:
76
-
0
000
45555
inputs: 5,100,100
output:
19
-
9
999
99999
inputs: 5,10,15
output:
0
-
0
000
22222
inputs: 3,30,20
output:
10
-
0
677
inputs: 3,3,0
3
-
0
000
inputs: 9,250,100
150
-
0
000
00000
2333332
999999999
inputs: 9,225,220
5
-
4
999
99999
9999999
999999999
inputs: 13,1234567890,250
1234567640
-
0
000
00000
0000000
344444443
99999999999
9999999999999
inputs: 25,25,25
0
-
0
000
00000
0000000
000000000
00000000000
0000000000000
000000000000000
00000000000000000
0000000000000000000
000000000000000000000
00000000000000000000000
1111111111111111111111111
5,100,10000
apa20+9+9+9+9+9+9+9+9+9 = 101
?Jawaban:
05AB1E ,
6863595756 byteCobalah online!
Penjelasan
IÅÉÅ9
Kami menginisialisasi tumpukan dengan daftar daftar 9-an.
Setiap daftar mewakili baris sehingga panjang setiap daftar ganjil dan panjang daftar terakhir sama dengan input pertama.
Masukan 5 akan menghasilkan
[[9], [9, 9, 9], [9, 9, 9, 9, 9]]
[DOO²Q#ćD_Piˆëć<¸«¸ì]
Kami kemudian beralih ke daftar ini elemen decrementing dalam daftar sampai daftar hanya terdiri dari nol, kemudian pindah ke yang berikutnya. Kami berhenti ketika jumlah total sama dengan input kedua.
Sekarang kita perlu membatalkan daftar akhir yang mensimulasikan penghapusan elemen dari sisi yang bergantian alih-alih dari kiri ke kanan seperti yang telah kita lakukan.
Sekarang kita memformat output dengan benar
sumber
Bersih ,
305289 byteCobalah online!
sumber
Perl 5 , 301 byte
Cobalah online!
sumber
Arang ,
686362 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Sunting: Disimpan 5 byte dengan menghapus pemeriksaan rentang indeks yang sekarang tidak perlu. Penjelasan:
Masukkan panjang
q
, jumlah butiran pasir keh
dan indeks kez
.Loop di atas
(q+1)/2
baris (dari bawah ke atas), lalu 9 butir di setiap sel di baris, lalu loop di atas digit di baris.Lompat ke digit.
Jika memungkinkan, bagikan sebutir pasir ke angka ini, kurangi jumlah pasir dan indeks kiri. Jika kami telah melewati indeks, ini masih mengkonversi spasi menjadi nol, mengisi jam pasir. Digit dicetak ke atas karena ini berarti kursor akan berada di leher setelah digit terakhir.
Cetak lehernya.
Tengahkan dan cetak jumlah pasir yang tersisa.
sumber