Pozitif bir tamsayı N alan ve üst yarısı (
' lardan yapılmış bir yarım daire olan ve alt yarısı V
' 'dan yapılmış bir aşağı dönük üçgen olan bir N × N ASCII sanat dizesi basan veya döndüren bir program veya işlev yazın . dolgu olarak kullanılan alanlar.
Başka bir deyişle, bir ASCII dondurma konisi yapın: (N = 17 için çıktı)
(((((
(((((((((
(((((((((((((
(((((((((((((
(((((((((((((((
(((((((((((((((
(((((((((((((((((
(((((((((((((((((
VVVVVVVVVVVVVVVVV
VVVVVVVVVVVVVVV
VVVVVVVVVVVVV
VVVVVVVVVVV
VVVVVVVVV
VVVVVVV
VVVVV
VVV
V
Örnekler
İşte N = 1 ila 5 için çıkışlar. Tek N için üçgenin her zaman daha büyük yarım olması gerektiğini unutmayın.
V
((
VV
(((
VVV
V
((
((((
VVVV
VV
(((
(((((
VVVVV
VVV
V
Ve işte püfsüz bir Python 3 referans uygulaması:
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))
ayrıntılar
- Stdin, komut satırı veya işlev bağımsız değişkeni olarak girdi alın. Çıkış stdout veya benzeri bir işleve ya da bir işlev yazarsanız dizeyi döndürebilirsiniz.
- Koni kısmı, tüm N için referans uygulamasına tam olarak uymalıdır.
- Dondurma bölümü yok değil tam o kadar uzun ki N'ye (nedeniyle roundoff hatalara yarım dairenin hafif farklılıklar hakkında endişe zorunda kalmamak için budur için yarım daire şeklinde açıkça olduğunca referans uygulamasını eşleşmesi gerekir .)
- Gereksiz ön boşluklar olmamalıdır, ancak gereksiz sondaki boşluklar olabilir.
- Çıktı isteğe bağlı olarak sondaki bir yeni satır içerebilir.
- İstediğniz 3 diğer farklı kullanabilir yazdırılabilir ASCII yerine karakterler
(
,V
ve uzayda.
puanlama
Bayt cinsinden en kısa gönderim kazanır. Tiebreaker en eski gönderime gider.