Bir yılanı labirentin doldurmasını sağlayın (sıkışana kadar).
Yılan
Yılan, belirli bir başlangıç noktasında başlar ve EAST'ı gösterir . Her zaman bir duvar ya da hemen vücudunun bir kısmını alarak hareket SOLUNA başının ( "nin sol kural duvar takipçisi sıkıştı alır") kadar başının etrafında dört yön işgal çünkü. (Not: Sıkışmış bir yılan muhtemelen ulaşılabilir tüm alanları dolduramaz, ancak amaç bu değildir!)
Meydan okuma
2D metin biçiminde bir labirenti giriş olarak kabul eden bir program veya işlev yazın:
- Girdi, makul herhangi bir biçimde olabilir: örn. Dizelerin listesi, yeni satırlara sahip tek bir dize, bir dosya.
- Labirentin duvarları ("
#
"), boş alanları ("") ve tam olarak bir başlangıç noktası ("
o
") vardır. Seçebilirsiniz
- ya ilk ve son satır ve sütunun tamamen duvarlar olduğunu varsayalım;
- veya her girişin örtülü bir dış duvar katmanına sahip olduğunu düşünün
Başlama noktasının doğrudan üstünde (NORTH) üstünde bir duvar (veya üstü kapalı bir duvar) olduğunu ve yılanın DOĞU veya GÜNEY yönünde geçerli bir başlangıç hareketi yapabileceğini varsayabilirsiniz.
- Metinde başka hiçbir karakter bulunmadığını varsayabilirsiniz (girişiniz için gerekirse yeni satırlar hariç).
- Tüm çizgilerin aynı uzunlukta olduğunu varsayabilirsiniz.
ve "doldurulmuş bir labirenti" çıktı olarak yazdırır / döndürür ve sıkışan anda yılanın bir görüntüsü ile :
- Yılanın gövdesi
>v<^
, bir sonraki bölümünün nerede olduğunu gösteren karakterlerle temsil edilir. - Yılanın başlangıç noktası ya başlangıçtaki yönüdür (
>
hemen dönmesio
gerekmiyorsa " ") veya bir karakter (tutarlı olması gerekmez) - Yılanın bitiş noktası bir
o
karakterdir.
puanlama
Her zamanki kod golf: en kısa kod kazanır
Örnek
in:
#################################
# o #
# #
# ## ### ## #
# ## ## ## ## #
# ## ## ## ## #
# ## ## ## ## #
# ## ## ## ## #
# ## ### ## #
# ## ##### ## #
# ## ##### ## #
# ## ### ## #
# ## ## #
# #
# #
#################################
out:
#################################
#>>>>>>>>>>>>>>>>>>>v>>>>>>>>>>v#
#^>>>>>>>>>>>>>>>>>v>>>>>>>>>>vv#
#^^ ##>>>>>>v###o>>>>>v## vv#
#^^ ##>^ ##>>>>^## >v## vv#
#^^ ##^ ## ## v## vv#
#^^ ##^ ## ## v## vv#
#^^ ##>^ ## ## >v## vv#
#^^ ##^< ### v<## vv#
#^^ ##^ ##### v## vv#
#^^ ##^ ##### v## vv#
#^^ ##^< ### v<## vv#
#^^ ##^<<<<<<<<<<<<<<<<## vv#
#^^<<<<<<<<<<<<<<<<<<<<<<<<<<<<v#
#^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<#
#################################
Animasyonlu (gösterim amacıyla):
Düzenleme: Şüphe duyulduğunda, yılanın köşesinde takip eden, 1 blok ötedeki bir duvara atlamaması için, duvarda "sol elini" tutması gerektiğini unutmayın.
Getirdiğin için teşekkürler Jonathan Allan ve yukarıdaki açıklayıcı resim için Draco18s.
Diğer örnekler
in:
####################
# o# #
# ###
# #
# ## #
# ###
####################
out:
####################
#>>>>>>>>>>>>>>vv# #
#^>>>>>>>>>>>>vvv###
#^^ v<<<o<<<<v>>v#
#^^<<<<##^<<<<<<v<<#
#^<<<<<<<<<<<<<<<###
####################
in:
####################
# o #####
# #####
# #
# ##
####################
out:
####################
# >>>>v#####
# v#####
# >>>>o#
# ##
####################
in:
################
#o #
# ########## #
# # # #
# # # #
# # # #
# # # # #
# # # #
# # # #
# # # #
# ############ #
# #
################
out:
################
#>>>>>>>>>>>>>v#
#>>v##########v#
#^#>>>>>>>>>v#v#
#^#>>>>>>>>vv#v#
#^#^>>>>>>vvv#v#
#^#^^# vvv#v#
#^#^^o<<<<<vv#v#
#^#^^<<<<<<<v#v#
#^#^<<<<<<<<<#v#
#^############v#
#^<<<<<<<<<<<<<#
################