Muhtemelen bir bardağın yarı dolu ya da yarı boş olup olmadığı konusundaki retorik soruyu biliyorsunuzdur . İfadeden biraz yoruldum, bu yüzden cam dolgunluğu veya boşluğu hakkındaki bu karışıklığı programsal olarak ortadan kaldırmanın zamanı geldiğine karar verdim.
Göreviniz, çirkin bir camın ASCII sanat temsilini alan ve karşılık gelen güzel bir camın ASCII sanatını çıkaran bir program yazmaktır . Bu aynı zamanda, cam olup olmadığına karar vermek sahiptir full
, mostly full
, mostly empty
ya da empty
ve çıkış da (bir 4 sabit, ayrı çıkış değerleri do).
TL; DR
Girdi, camın içine ve dışına rastgele dağıtılmış bir cam ( #
karakter) ve sıvı ( a-z
) ASCII sanatıdır . Cam içindeki sıvı düşer ve dibinde birikir, dışındaki sıvı atılır. Sıvı dibe çöktükten sonra camın ASCII sanatını çıkartın. Camın ne kadar dolu olduğunu belirleyin ve çıktısını alın.
Çirkin ve güzel gözlükler
Bir cam genel olarak yapılmış bir kap olup #
, bir taban, iki yan duvar ve bir üst karakter.
- Geçerli gözlüklerin içinde delik yoktur. (Tüm
#
karakterlerin bağlı olması gerekir.) #
Giriş ASCII resminin her satırında en az iki karakter olacaktır veya hiçbiri olmayacaktır . Tam olarak bir tane ile bir çizgi olmayacak#
.- Giriş ASCII sanatının en üst satırında her zaman tam iki tane olacaktır
#
. - Geçerli gözlüklerin sınırlayıcı
#
karakter duvarlarında tam bir yerel minimum değeri vardır . Bu, sıvının bir yere hapsolmayacağı anlamına gelir. - Bir camın sınırlayıcı duvarının yerel maksimumu olmayacaktır.
#
Camın altında herhangi bir şey olmayacak .- Camın içi her zaman bağlantılı bir alan olacaktır .
- Girdide öndeki / sondaki boşluk ve yeni satırlar olabilir.
Geçerli ve geçersiz gözlük örnekleri:
VALID (possible input to your program):
# #
# #
####
# #
# #
# #
# #
# #
# #
##
# #
# #
### #
# #
####
# #
# #
# #
# #
# #
########
# #
# #
# ###
# ###
# ###
#####
INVALID (you won't get one of those as input to your program):
# #
# Has a hole.
####
# #
# # This is also considered a hole.
##
# #
# # Less than two # on a line.
#
## #
# # More than two # on the first line.
###
#
# # Less than two # on the first line.
###
# #
# # # More than one local minimum.
# # # # Liquid might get trapped.
### # #
###
# #
# #
#### Interior is not a connected space.
# #
# #
####
# #
# #######
# ### #
# ## # Has a local maximum.
# # #
# #
# #
######
# #
# #
# #
#####
# # <--- # below the bottom of the glass.
# #
# # # This is also a glass with a hole. The #'s aren't all connected.
# # #
# #
#######
Bir çirkin cam sadece kendi iç etrafında yüzen sıvı olan bir camdır.
- Sıvı küçük harflerle gösterilir
a-z
. - İlk
#
karakter satırının üzerinde sıvı olmayacak . Bu, sıvının cama düşmesine izin verilmesi gerekmediği anlamına gelir. - Camın dışında sıvı olabilir . Bu sıvı çirkin camı güzel bir bardağa dönüştürürken atılır.
Çirkin gözlük örnekleri :
# y b # i
x v#p q l# l
a # a zj # p g
g #ppcg c#
u # r n # r
##########
Discard Keep Discard
<-- There will never be liquid above the glass
# tz g#
#y abc # d
av z#ox s # l
c#y abth# b
#vg y rm# a
########
e a b c d <-- Discard this as well (not within interior)
Bir güzel cam tüm sıvı dibinde biriken bir camdır.
- Aşağıdan yukarıya doğru, güzel bir camın içi tamamen harflerle dolu bir dizi çizgiden oluşur, ardından harflerle tamamen dolu olmayan en fazla bir satır ve ardından boş olan birkaç satırdan oluşur.
- Güzel bir camın dışında herhangi bir sıvı olmayabilir.
Çirkin bir camın güzel bir cama dönüşümü
- Camın içindeki sıvı düşer ve altta birikir.
- Camın dışındaki sıvı atılır.
- Çirkin bir bardağı güzel bir bardağa dönüştürürken, içindeki kesin harfler korunmalıdır. Örneğin, çirkin camın içinde üç tane
a
varsa, güzel camın da üç tane olması gerekira
. (Soda aniden suya dönüşmez.) - Güzel cam içindeki harflerin sipariş edilmesi gerekmez.
- Camın şekli korunmalıdır. Hiçbir
#
karakter eklenemez veya kaldırılamaz. - Herhangi bir miktarda önde gelen / sondaki boşluk ve yeni satırlara izin verilir.
Cam dolgunluğunun belirlenmesi
full
Tüm iç alanı harflerle dolu ise bir camdır .- Bu bir
mostly full
iç boşluk 50% ya da daha fazla dolu olması halinde. - Bu var
mostly empty
iç mekan% 50'den az dolu ise. - Bu var
empty
camda hiçbir harfler varsa. - ASCII cam sanatı ile doluluk çıkışı arasında herhangi bir sayıda ilave satır ve boşluk olabilir.
- Program 4 cam doluluk seviyesi için farklı (ancak sabit!) Değerler verebilir, yukarıdaki kesin dizeleri yazdırmak zorunda değildir. Lütfen hangi değerin hangi doluluk seviyesini temsil ettiğini belirtin.
I / O örnekleri
Example 1 input:
# y b # i
x v#p q l# l
a # a zj # p g
g #ppcg c#
u # r n # r
##########
Example 1 output:
# #
# #
# #
#ppcglqb #
#yprazjnc#
##########
mostly empty
Example 2 input:
# tz g#
#y abc # d
av z#ox s # l
c#y abth# b
#vg y rm# a
########
e a b c d
Example 2 output:
# #
# bc #
#oxysa#
#ygabth#
#vgtyzrm#
########
mostly full
Example 3 input:
# #
# g # f
###ih # d
a c # # e
b ####
Example 3 output:
# #
# #
### g#
#hi#
####
mostly empty
Example 4 input:
#ab#
#cd#
####
Example 4 output:
#cb#
#da#
####
full
Example 5 input:
# # h
# #
a # # g
b# # f
c # #
# # e
d ##
Example 5 output:
# #
# #
# #
# #
# #
# #
##
empty
Example 6 input:
# b az#
#y s ###
###### t
l u
Example 6 output:
# z #
#ybsa###
######
mostly full
Example 7 input:
# # g
# b #f
# c###
#da ### i
# e###
##### h
Example 7 output:
# #
# #
# ###
#de ###
#abc###
#####
mostly empty
Çeşitli
- Bu kod golf yani kısa cevap kazanır.
- Mümkünse, lütfen sağlanan örnek girişlerde programınızı çalıştırmak için kullanılabilecek bir çevrimiçi tercümana bağlantı verin, örneğin tio.run