Tulis sebuah program atau fungsi yang mengambil dalam bilangan bulat positif N, dan mencetak atau mengembalikan string seni ASCII N × N yang bagian atasnya adalah setengah lingkaran yang terbuat dari ('s dan yang bagian bawahnya adalah segitiga yang menunjuk ke bawah terbuat dari V' s, dengan ruang yang digunakan sebagai bantalan.
Dengan kata lain, buat kerucut es krim ASCII: (output untuk N = 17)
(((((
(((((((((
(((((((((((((
(((((((((((((
(((((((((((((((
(((((((((((((((
(((((((((((((((((
(((((((((((((((((
VVVVVVVVVVVVVVVVV
VVVVVVVVVVVVVVV
VVVVVVVVVVVVV
VVVVVVVVVVV
VVVVVVVVV
VVVVVVV
VVVVV
VVV
V
Contohnya
Berikut adalah output untuk N = 1 hingga 5. Perhatikan bahwa untuk N aneh, segitiga selalu harus menjadi setengahnya lebih besar.
V
((
VV
(((
VVV
V
((
((((
VVVV
VV
(((
(((((
VVVVV
VVV
V
Dan inilah implementasi referensi Python ungolfed 3:
N = int(input())
ic = [[' '] * N for _ in range(N)]
for y in range(N//2):
for x in range(N):
if (x - (N - 1) / 2)**2 + (y - (N - 1) / 2)**2 < (N / 2)**2:
ic[y][x] = '('
for y in range(N//2, N):
for x in range(y - N//2, N - (y - N//2)):
ic[y][x] = 'V'
for line in ic:
print(''.join(line))
Detail
- Ambil input dari stdin, baris perintah, atau sebagai argumen fungsi. Output ke stdout atau serupa, atau Anda dapat mengembalikan string jika Anda menulis suatu fungsi.
- Bagian kerucut harus sama persis dengan implementasi referensi untuk semua N.
- Bagian es krim tidak perlu sama persis dengan implementasi referensi selama itu jelas dalam bentuk setengah lingkaran untuk semua N. (Ini adalah sehingga Anda tidak perlu khawatir tentang sedikit perbedaan dalam setengah lingkaran karena kesalahan putaran) .)
- Seharusnya tidak ada ruang mengarah yang tidak perlu tetapi mungkin ada ruang trailing berlebihan.
- Output secara opsional dapat berisi baris tambahan.
- Anda opsional dapat menggunakan 3 berbeda lainnya ASCII printable karakter di tempat
(,Vdan ruang.
Mencetak gol
Pengajuan terpendek dalam byte menang. Tiebreaker pergi ke pengiriman tertua.