Akankah itu melayang?

10

Tantangan

Diberikan string 2d yang mewakili bagian bawah perahu sebagai input, Anda harus menentukan apakah perahu akan mengambang atau tidak. String 2D ini bisa dalam format apa pun yang paling nyaman. (String dengan baris baru, daftar string, daftar daftar karakter, dll.) Cetak nilai yang benar jika itu akan mengambang, dan nilai yang salah jika akan tenggelam.

Sebuah kapal akan terbalik jika dasarnya memiliki kepadatan yang tidak konsisten, sehingga setiap karakter harus sama. Juga, jika sebuah kapal memiliki lubang besar di dalamnya, diwakili oleh spasi, itu akan tenggelam, sehingga perahu Anda harus tidak memiliki lubang dengan area lebih besar dari 4. Berikut adalah contohnya:

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

Kapal ini valid karena lubang terbesar di dalamnya memiliki luas 4. Kapal ini:

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

tidak valid karena memiliki lubang dengan luas 7. Anda dapat dengan aman mengasumsikan bahwa bagian luar dari setiap input akan menjadi persegi panjang padat tanpa lubang. Berikut ini beberapa tes lagi:

$$$$$$$$
***$$$$$
***$$$$$
***$$$$$
$$$$$$$$
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.

Aturan

  • IO dapat dalam format apa pun yang masuk akal.
  • Celah standar berlaku.
  • Jawaban terpendek dalam byte menang.
  • String yang diberikan seluruhnya akan terdiri dari ASCII yang dapat dicetak.
James
sumber
Apa dasarnya ? Apa bingkainya ?
flawr
@ flawr Bagian bawah adalah string yang Anda ambil sebagai input. The Frame adalah pilihan yang buruk dari kata-kata yang saya akan mengedit.
James
A "string 2d"? Maksud Anda daftar string?
Dana Gugatan Monica
Saya pikir &perahu itu ada
l4m2
"Sebuah kapal akan terbalik jika dasarnya memiliki kepadatan yang tidak konsisten, jadi setiap karakter harus sama." Jika batas luar adalah satu karakter dan interior adalah karakter yang berbeda itu akan menjadi kepadatan tidak konsisten tetapi tidak akan terbalik kan?
Jerry Jeremiah

Jawaban:

3

Matlab, 106 byte

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

Masukan adalah matriks karakter, misalnya untuk kasus uji pertama:

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

Penjelasan:

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
cacat
sumber