Giriş
Herkes başarılı bir şekilde bir asteroit alanında gezinme olasılığının yaklaşık 3,720 ila 1 olduğunu biliyor. Ancak uyarınıza rağmen, Han Solo hala şansını denemek istiyor.
Yapay hayatınız için endişe duyduğunuzda, geminin kendine özgü lehçesinde ( okuma: tercih ettiğiniz Code Golf dili ), ASCII labirentinde bir asteroid alanında hangi yolu seçeceğinize karar verecek bir asteroid kaçınma programı kodlamaya karar verdiniz .
Giriş
Millenium Falcon'da buna benzer veriler sağlayan bir asteroid alan haritalama programı var:
| ##### ######### |
| ###### # ### # |
| # # # # #### # |
@ ## ####
|# # # ### ## |
|## ## #### # # |
|#### ##### # ## |
Üst sıralar Falcon'dan ayrılmıştır, alt sıralar Falcon'un sağındadır ve sütunlar geminin önünde olanı temsil eder.
- Her
#
biri bir engeldir. - Her alan, geminin uçabileceği boş alandır.
- Giriş her zaman 7 karakter yüksekliğindedir. Bu asteroit haritalama genişliği sınırıdır.
- Giriş daima 32 karakter uzunluğundadır (alanın kendisi için 30 ve başlangıç ve bitiş sınırları için 2'dir). Bu asteroit haritalama derinliği sınırıdır. Dikey çubuklar
|
, eşlemenin başlangıcını ve sonunu işaretler. @
Şahin. Her zaman orta satırda (4. satır) ve girişteki ilk sütundadır.- Son sütundaki dikey çubuklarda kalan boşluk, geminin ulaşması gereken yerdir. Her zaman orta satırda (4. satır) ve girişteki son sütundadır.
Giriş, çok satırlı bir dize, bir dizi dizisi, STDIN'den veya bir işlev parametresinden alınabilir veya bir dosyadan okunabilir.
Muhtemel manevralar
TIE-Fighters tarafından takip ediliyorsunuz, bu yüzden daima ilerlemelisiniz. Bu nedenle, geminin her adımda uçabileceği üç yol vardır:
-
ileri/
İleri ve sola dön\
İleri ve sağa dön
Örneğin, bunlar geçerli yollardır:
@---
--
/ \ /
@ -
-
/ \
/ \
@ \
Gördüğünüz gibi, sütun başına her zaman tam olarak bir hareket var. Falcon bir hurda parçası, bu yüzden şiddetli dönüş yapamaz. Gibi hangi araçlar hamle /\
veya \/
edilir izin . -
İki zıt dönüş arasında en az bir tane saf ileri olmalı . Öte yandan, yukarıda görüldüğü gibi, art arda birden fazla adım için bir yol açmak mümkündür.
Bir hamle gemiyi engelin olduğu bir noktada olmaya yönlendirirse Falcon çöker. Örneğin, bu hareketler çökmelere yol açar:
@-#
@
\
#
#
/
@
Bunun bir çökme olmadığını unutmayın:
@-#
\
-
Çıktı
Aynı asteroid alanını ASCII olarak, sonuna kadar geçerli bir yolla çıkarmalısınız. Falcon, başlangıç noktası yerine bitiş noktasına yazdırılmalıdır.
Örneğin, daha önce verilen giriş örneği için geçerli bir çıktı şöyle olacaktır:
| ##### ######### |
| ###### #-------- ### # |
| # # #/ # ####\ # |
--------- ## \ #### ----@
|# # # ### \ ## / |
|## ## #### \ #/ # |
|#### ##### #-- ## |
Yolunun sadece şahinle çarpışmaması gerekiyor. Mümkün olan en kısa yol olması gerekmez.
Sonuna kadar en az bir olası yol olacağını varsayabilirsiniz.
STDOUT'a, bir dosyada veya asteroid alanı bu yazıdaki gibi yazdırıldığı sürece herhangi bir eşdeğerinde çıktı alabilirsiniz (örneğin, yol için koordinatların listesini çıkarmak geçerli değildir).
Test durumları
Normal bir asteroid alanı
| ##### ######### | | ###### # ### # | | # # # # #### # | @ ## #### |# # # ### ## | |## ## #### # # | |#### ##### # ## |
Olası çıkış
| ##### ######### | | ###### #-------- ### # | | # # #/ # ####\ # | --------- ## \ #### ----@ |# # # ### \ ## / | |## ## #### \ #/ # | |#### ##### #-- ## |
Hiper-regüler asteroid alanı
|# # # # # # # # # # # # # # # | | # # # # # # # # # # # # # # #| |# # # # # # # # # # # # # # # | @ # # # # # # # # # # # # # # |# # # # # # # # # # # # # # # | | # # # # # # # # # # # # # # #| |# # # # # # # # # # # # # # # |
Olası çıkış
|# # # # # # # # # # # # # # # | | # # # # # # # # # # # # # # #| |# # # # # # # # # # # # # # # | -# #-# #-# #-# #-# #-# #-# #--@ |#\#/#\#/#\#/#\#/#\#/#\#/#\#/# | | #-# #-# #-# #-# #-# #-# #-# #| |# # # # # # # # # # # # # # # |
Ölüm yıldızının çekirdeği
| # # # # | | # # # | | # # # # # | @ # # # # # | # # # # | | # # # # # | | # # # # |
Olası çıkış
| # # # -- # | | --- # # / #\ - | | / #\ # # / # \ /#\ | - # \ # #/ # - # ----@ | # \ # ---- # # | | # \#/ # # # | | # - # # # |
Ölüm yıldızı açması
|##############################| |##############################| |##############################| @ |##############################| |##############################| |##############################|
Çıktı
|##############################| |##############################| |##############################| ------------------------------@ |##############################| |##############################| |##############################|
Asteroit mağarası
|### ##########################| |## # ############### ## ######| |# ### ######## ### ## # #####| @ ###### ###### ### ## ### |######## ### ### ## #########| |########## # ### ## ##########| |########### #####|
Olası çıkış
|###-##########################| |##/#\############### ##-######| |#/###--######## ### ##/#\#####| -######\###### ### ##/###-----@ |########--### ### ##/#########| |##########\# ### ##/##########| |###########-------- #####|
puanlama
R2D2 bataklıkta yüzmekle meşgul, bu yüzden Falcon'un kontrol ünitesini kendiniz programlamak zorunda kalacaksınız, bu çok sıkıcı. Bu nedenle en kısa kod kazanır .
-
her turda “ileri” hareketi olarak tanımlanan yolda bulunuyor. Ancak asıl hareketler her zaman iki çapraz-sol ve onu takip eden iki çapraz-sağdır.