Yüzecek mi?


10

Meydan okuma

Bir teknenin dibini giriş olarak temsil eden 2d'lik bir dize verildiğinde, teknenin yüzüp yüzmeyeceğini belirlemelisiniz. Bu 2D dize, en uygun formatta olabilir. (Yeni satırlı dize, dize listesi, karakter listesi vb.) Yüzerse gerçek bir değer, batıyorsa bir falsey değeri yazdırın.

Dip tutarsız bir yoğunluğa sahipse bir tekne devrilir, bu nedenle her karakterin aynı olması gerekir. Ayrıca, bir teknede boşluklarla temsil edilen büyük delikler varsa, batar, bu nedenle teknenizin 4'ten büyük bir alana sahip delikleri olmamalıdır. İşte bir örnek:

########
#   ####
########
#  ## ##
#  #####
########

Bu tekne geçerlidir çünkü içindeki en büyük delik 4 alana sahiptir.

########
########
#     ##
#  #####
########

alanı 7 olan bir deliği olduğu için geçersizdir. Her girişin dışının deliksiz sağlam bir dikdörtgen olacağından emin olabilirsiniz. İşte bazı testler:

$$$$$$$$
***$$$$$
***$$$$$
***$$$$$
$$$$$$$$
Invalid density. Sink.

%%%%%%%%
%    % %
%%%%%  %
%    % %
%%%%%%%%
None of the holes are larger than 4. Float.

OOOOOOOO
OOOOOOO 
OOOOOOOO
OOOOOOOO
OOOOOOOO
The outside border is not solid. Undefined.

&&&&&&&&&&&&&
& & & & & & &
&& & & & & &&
& & & & & & &
&& & & & & &&
& & & & & & &
&&&&&&&&&&&&&
Although I would not be comfortable riding in this boat myself, 
none of the holes are larger than 4. It floats.

@@@@@
@   @
@   @
@   @
@@@@@
It sinks.

kurallar

  • ES herhangi bir makul biçimde olabilir.
  • Standart boşluklar geçerlidir.
  • Bayt cinsinden en kısa cevap kazanır.
  • Verilen dize tamamen yazdırılabilir ASCII'den oluşacaktır.

Alt kısım nedir ? Nedir çerçeve ?
flawr

@flawr En alttaki girdi olarak aldığınız dizedir. Çerçeve ben dışarı düzenlemek edeceği ifadeler kötü bir seçimdir.
James

Bir "2d dize"? Dize listesi mi demek istiyorsun?
Monica'nın Davası

Sanırım &tekne var
l4m2

"Eğer taban tutarsız bir yoğunluğa sahipse bir tekne devrilir, bu yüzden her karakterin aynı olması gerekir." Dış sınır bir karakter olsaydı ve iç kısım farklı bir karakter olsaydı, tutarsız yoğunluk olurdu ama devrilemezdi mi?
Jerry Jeremiah

Yanıtlar:


3

Matlab, 106 bayt

s=input('');im=~(s-32);c=bwconncomp(im,4);disp(~nnz(cellfun(@nnz,c.PixelIdxList)>3)&nnz(unique(s(~im)))<2)

Giriş, bir karakter matrisidir, örneğin ilk test senaryosu için:

`['$$$$$$$$';'***$$$$$';'***$$$$$';'***$$$$$';'$$$$$$$$']`

Açıklama:

s=input('');           %read input
im=~(s-32);            %convert input to bw image (space = black)
c=bwconncomp(im,4);    %calculate the connected components (4 connectivity)

disp(
     ~nnz(cellfun(@nnz,c.PixelIdxList)>3) %find out whether we have components that have more at least 4 pixels
     &nnz(unique(s(~im)))<2)              %find out if we have more than 1 non-space character
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.