सांप को किसी भी चक्रव्यूह को भरें (जब तक कि वह फंस न जाए)।
सांप
सांप एक प्रारंभिक बिंदु पर शुरू होता है, जो पूर्व की ओर इशारा करता है । यह हमेशा एक दीवार या उसके शरीर के एक हिस्से को तुरंत अपने सिर के बाएं हिस्से (" बाएं हाथ की शासन दीवार अनुयायी ") तक ले जाता है, जब तक कि यह अटक नहीं जाता है क्योंकि इसके सिर के चारों ओर चारों दिशाओं में कब्जा है। (नोट: एक अटका हुआ सांप संभवतः सभी उपलब्ध जगह को नहीं भर सकता है, लेकिन यह लक्ष्य नहीं है!)
चुनौती
एक प्रोग्राम या फ़ंक्शन लिखिए जो एक भूलभुलैया को 2 डी टेक्स्ट के रूप में इनपुट के रूप में स्वीकार करता है:
- इनपुट किसी भी उचित प्रारूप में हो सकता है: उदाहरण के लिए तार की एक सूची, newlines के साथ एक स्ट्रिंग, एक फ़ाइल।
- भूलभुलैया में दीवारें ("
#
"), खाली स्थान ("") और बिल्कुल एक शुरुआती बिंदु ("
o
") है। आप चुन सकते हैं
- या तो मान लें कि पहली और आखिरी पंक्ति और स्तंभ पूरी तरह से दीवारें हैं;
- या मान लेते हैं कि हर इनपुट एक माना जाता है निहित दीवारों की बाहरी परत
आप मान सकते हैं कि शुरुआती बिंदु में सीधे (NORTH) के ऊपर एक दीवार (या एक अंतर्निहित दीवार) है और यह कि सांप EAST या SOUTH दिशा में एक वैध शुरुआती चाल चल सकता है।
- आप यह मान सकते हैं कि पाठ में कोई अन्य वर्ण मौजूद नहीं हैं (यदि आपके इनपुट को उनकी आवश्यकता है तो newlines को छोड़कर)।
- आप मान सकते हैं कि सभी लाइनें समान लंबाई हैं।
और प्रिंट / आउटपुट के रूप में "भरा भूलभुलैया" लौटाता है, जिस समय सांप फंस गया है, उस समय सांप की तस्वीर के साथ :
- सांप के शरीर का प्रतिनिधित्व पात्रों द्वारा किया जाता है,
>v<^
जहां यह इंगित किया जाता है कि इसका अगला खंड कहां है - साँप का शुरुआती बिंदु या तो शुरुआत में इसकी दिशा है ("
>
" जब तक कि इसे तुरंत चालू नहीं करना पड़ता) या एo
चरित्र (सुसंगत होने की कोई आवश्यकता नहीं)) - सांप का अंतिम बिंदु एक
o
चरित्र है
स्कोरिंग
सामान्य कोड गोल्फ: सबसे छोटा कोड जीतता है
उदाहरण
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#
#^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<#
#################################
एनिमेटेड (चित्रण प्रयोजनों के लिए):
संपादित करें: ध्यान दें कि, जब संदेह है, तो सांप को दीवार पर पहले से ही "बाएं हाथ" रखना चाहिए, कोनों का पालन करना, 1-ब्लॉक दूर दीवार पर कूदना नहीं।
धन्यवाद जोनाथन एलन इसे ऊपर लाने के लिए, और ऊपर दिए गए व्याख्यात्मक स्नैपशॉट के लिए ड्रेको 18s।
अन्य उदाहरण
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#
#^<<<<<<<<<<<<<#
################