Salah satu aspek gravitasi yang menarik adalah, sejauh yang saya ketahui, Anda tidak bisa membiarkan benda-benda melayang di udara.
Namun, tampaknya tidak semua orang di Asosiasi Pembuat Kastil Acak menyadari fakta ini, mengarah ke kastil seperti ini:
#
#
# # # # ###
#### #### # #
#### # # #### ###
############## ###
###### ###### ###
##### ##### ###
###
``````````````````````````````
dan yang satu ini:
# # # # # #
##############
### #### ###
# # # # # # # # ### #### ### # # # # # # # #
#### #### #### #### ############## #### #### #### ####
#### # # #### # # #### # # #### ## ######## ## #### # # #### # # #### # # ####
####################################################################################
###### ######## ######## ######## ######## ######## ######## ######## ######
################################### ###### ###################################
################################### ###### ###################################
##
##
##
##
##
````````````````````````````````````````````````````````````````````````````````````````````
dan bahkan yang ini:
##########
#### # ###
#######################
#
#
#
#
# # # #
# # ###
# # ###
# # # # ##
# # ## ###
# # #####
# #####
# # #####
#####
## ##
#####
#####
## ##
## ##
````````````````````````````````````````````
Tantangan
Untuk kastil yang valid, semua blok akan terhubung ke tanah baik secara langsung maupun tidak langsung. Anda program atau fungsi akan diberikan sebuah benteng seperti yang di atas sebagai input, dan program anda harus mengembalikan truthy atau nilai falsy mencerminkan apakah benteng tersebut valid atau tidak.
Aturan
- Input diberikan sebagai string.
- Semua kastil yang valid terletak di atas permukaan
````````
,. (Jika string input tidak mengandung permukaan, kastil tidak valid.) - Anda dapat menganggap semua input akan memenuhi kriteria ini:
- Permukaan akan selalu rata.
- Permukaan akan selalu setidaknya selebar kastil, sehingga tidak akan ada blok ke kiri atau kanan tanah.
- Masukan tidak akan pernah ada di
#
bawah permukaan. - Input hanya akan berisi karakter yang diberikan dalam tantangan ini. (
#
,,`
spasi atau baris baru.) - Anda dapat berasumsi bahwa input akan selalu mengandung setidaknya satu karakter.
- Blok terhubung jika mereka berdekatan secara horizontal atau vertikal. Diagonal tidak masuk hitungan!
- Terhubung:
# or ##
# - Tidak terhubung:
# or # # or #
#
#
- Terhubung:
- Kastil harus ada agar valid. (Dengan kata lain, input tanpa input
#
harus memberikan nilai palsu.) - Input hanya akan berisi karakter yang diberikan dalam tantangan ini. (
#
,,`
spasi atau baris baru.) - Anda dapat berasumsi bahwa input akan selalu mengandung setidaknya satu karakter.
- Standar I / O dan aturan celah berlaku.
Uji kasus
Palsu
- Semua contoh yang diberikan di atas.
# # # #
(Tidak ada tanah.)
#### ####
#### # # ####
##############
###### ######
## ### ######
(Blok paling atas tidak terhubung secara horizontal atau vertikal.)
### ####
#### # # ####
##############
###### ######
##### # ####
`` `` `` `` `` `` ``
`` `
(Menara pusat tidak terhubung ke seluruh kastil karena tidak ada blok yang berdekatan secara horizontal atau vertikal yang menghubungkannya.)
############################################## # # # # # # # # # # # # # # # # # #
#####
# # # # # # # #
#### #### #### #### ## #### ## #### #### #### ####
## ## # # #### # # #### # # #### # # #### # # #### # # #### # # #### # # #### # # ####
############################################### ##################################
###### ######## ## ###### ######## #################################### ##
##################################################### ############################
##################################################### #########################
`` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `
(Tidak ada kastil, hanya satu karakter baris baru.)# #
(Blok paling kanan tidak terhubung baik secara horizontal maupun vertikal.)
#
`` `` `` `
`` `
Sejujurnya
#
`# # # #
#### ####
#### # # ####
##############
###### ######
## ### #####
`` `` `` `` `` `` `` `#
#
# # # # ###
#### #### # #
#### # # #### ###
################ #
# ##### ###### ###
##### ##### ###
##### ##### ###
`` `` `` `` `` ` `` `` `` `` `` `` `` `` `` `` `# # # # # #
##############
### #### ###
# # # # # # # # ### #### ### # # # # # # # #
#### #### #### #### ###################### #### ## ##
#### # # #### # # #### # # #### ## ######## ## #### # # #### # # #### # # ## ## # # ####
######################################## ###############################################
###### ## ###### ######## #################################### #### ######
########################################### # ##################################
##################################################### #########################
`` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` ``#### ###
# #### ###
# ###
# ##
#
###
#####
#######
#########
### ## #####
##### #####
###### ######
#################
# ### ########## #
#############
#############
#############
###### ######
###### ######
##############
#############
#############
#############
###### ##### #
###### ######
#############
#############
########### ##
#############
###### ######
###### ######
########### ##
#############
#############
#############
######### ####
##### #####
##### #####
##### #####
`` `` `` `` `` `` `` `` `` `` `` `
####
#####
######
####
####
#####
########
##########
#### ######
###########
############
##############
##### ## ##############
########### #################
###########################################
####### #################################
################# ####################
############################## ####
############################
################## #
`` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` ` `
Semoga berhasil!
code-golf
ascii-art
decision-problem
pengguna2428118
sumber
sumber
Jawaban:
Siput ,
2118 byte-3 byte karena kendala input tambahan yang diedit menjadi tantangan.
Sayangnya kompleksitas waktu adalah faktorial, sehingga sebagian besar input tidak dapat dijalankan.
Keluaran 0 untuk kasus palsu, dan jumlah
#
untuk kasus kebenaran.sumber
#
- masing terhubung ke tanah.+
sebenarnya 1 atau lebih kali, bukan 0. itu akan tetap terlihat berbeda setelah mengizinkan kastil yang terputus.Oktaf,
5351 byteCobalah secara Online!
* Karena persyaratan yang dijatuhkan untuk memeriksa jawaban input kosong dikembalikan ke edit pertama saya.
Penjelasan:
sumber
Grime , 29 byte
Cobalah online! Sebagian besar kasus uji waktu habis di TIO. Ganti
<0C>
dengan<0CoF>
untuk membuatnya sedikit lebih cepat.Penjelasan
Saya memeriksa bahwa dari setiap
#
ada jalur ke`
, dan ada setidaknya satu#
. Saya baru-baru ini menambahkan perintah rotasi ke Grime, yang membuat tantangan ini lebih mudah.sumber
JavaScript (ES6),
197196 byteDimana
\n
mewakili karakter baris baru literal. Mencoba untuk menghapus semua#
satu per satu dengan menemukan satu yang berdekatan dengan`
dan mengubahnya menjadi`
. Mengembalikantrue
jika ada setidaknya satu#
awalnya tetapi ada semua dihapus. Versi yang membutuhkan input empuk untuk118117 byte:sumber
Perl 6 , 180 byte
Cek apakah input mengandung setidaknya satu
#
, dan jika setiap#
dapat menemukan jalur ke a`
.Agak tidak efisien, karena pathfinding dipaksakan dengan menggunakan fungsi rekursif yang selalu mengunjungi semua
#
wilayah terhubung yang sama (yaitu tidak mengalami hubung singkat).Menggunakan beberapa interaksi yang tidak suci antara operator Junction dan tergelincir , untuk memastikan bahwa tes jalur dilewati untuk karakter ruang tanpa memerlukan pemeriksaan terpisah untuk itu di luar fungsi pathfinding.
sumber
Python 3 ,
214206 byteCobalah online!
Baris pertama di sini dikhususkan untuk melapisi semua baris ke panjang yang sama: kita membagi string (
s.split('\n')
lebih pendek satu karakter daris.splitlines()
), menemukan panjang maksimum garis, dan menetapkan C daftar daftar semua karakter setelah masing-masing melapisi masing-masing baris. (Baris baru hilang.)Kemudian kami membuat daftar di mana setiap karakter non-spasi yang berdekatan dengan setidaknya satu backtick digantikan oleh backtick, dan terus sampai tidak ada perubahan terjadi (ketika daftar lama
o
sama denganC
. Kita dapat membandingkan denganC>o
alih - alihC!=o
karena mengganti # (ASCII 35 ) dengan `(ASCII 96) hanya dapat meningkatkan urutan leksikografis daftar.)Jika tidak ada yang tersisa, dan setidaknya ada satu yang hadir pada awalnya, kastil tersebut valid.
'#'in s and'#'not in C
sumber