अक्षरों को जोड़ते हैं


10

इस छोटे से खेल से प्रेरित है ।

चुनौती

इनपुट के रूप में एक ग्रिड की प्रारंभिक स्थिति (हमेशा 5x5) को देखते हुए, इस तरह:

-ABCD
-A---
---C-
---BD
--E-E

आपको सभी रिक्त -स्थानों को हटाते हुए अक्षरों (समान अक्षर सभी को एक साथ) से जोड़ने की आवश्यकता है । पत्र हमेशा रहेंगे A,B,C,D and E

अक्षरों की प्रत्येक जोड़ी को एक एकल असंबद्ध पंक्ति से जोड़ा जाना चाहिए जो कि समकोण पर झुक सकती है (रेखा को चित्रित करने के लिए बहुत ही अक्षर का उपयोग करके)।

इनपुट की गारंटी है कि प्रत्येक शुरुआती अक्षर को 2 बार ठीक किया जाए और इसमें हमेशा सभी शुरुआती अक्षर AE हों।

इनपुट को स्टड से पढ़ा जा सकता है, या किसी फ़ंक्शन में arg के रूप में केवल एक स्ट्रिंग, या यहां तक ​​कि एक सरणी / matriz / वर्णों की सूची, आपकी कोडिंग-भाषा के लिए सबसे निश्चित तरीका है।

चूंकि यह बाइट्स जीत में सबसे छोटा कोड है!


उदाहरण

प्रत्येक समस्या का केवल एक समाधान नहीं है, लेकिन नियम सभी पर लागू होते हैं (कोई खाली स्थान नहीं है और कोई पृथक पत्र नहीं है)। और इनपुट में कम से कम एक सही आउटपुट होने की गारंटी है।

आइए A अक्षर को जोड़ना शुरू करें:

AABCD
AA---
AA-C-
AA-BD
AAE-E

अब, अक्षर B को जोड़ने:

AABCD
AAB--
AABC-
AABBD
AAE-E

अब, सी अक्षर को जोड़ने:

AABCD
AABC-
AABC-
AABBD
AAE-E

अब, D को अक्षर से जोड़ना:

AABCD
AABCD
AABCD
AABBD
AAE-E

और, अंत में अक्षर E:

AABCD
AABCD
AABCD
AABBD
AAEEE

एक और नमूना

input:
E--E-
BB-C-
AD---
---C-
AD---

output:
EEEEE
BBECE
ADECE
ADECE
ADEEE

input:
A----
---B-
-C-C-
-D-D-
BE-EA

output:
AAAAA
BBBBA
BCCCA
BDDDA
BEEEA

@ Sp3000 एक डुबकी नहीं है, क्योंकि इस चुनौती में सही इनपुट की गारंटी है।
नाथन मेरिल

क्या इनपुट की शुरुआत प्रत्येक अक्षर को 2 बार करने की गारंटी है? क्या इसमें हमेशा सभी शुरुआती अक्षर होंगे A-E?
टन हास्पेल

1
@NathanMerrill जो काफी मामूली अंतर की तरह लगता है। मैं कल्पना नहीं कर सकता कि सॉल्वेबिलिटी के लिए चेक कोड के बहुमत को ले जाएगा।
मार्टिन एंडर

1
@ मेरी चुनौती में MartinBüttner, समाधेयता के लिए चेक है चुनौती, कोई जोड़ने की जरूरत है। जबकि दो चुनौतियों में समानता होगी, वे मेरे दिमाग में काफी अलग महसूस करते हैं।
नाथन मेरिल

4
कुछ सवालों के लिए मेरी एक पसंदीदा तकनीक इस तरह से है कि मैं किसी समाधान को हिट करने से बचने के लिए पदों को भरने के लिए यादृच्छिक संख्याओं का उपयोग कर सकता हूं और रोक सकता हूं। यह केवल तभी काम करता है जब किसी समाधान की गारंटी दी जाती है, अन्यथा कार्यक्रम हमेशा के लिए चल सकता है (यदि कोई समाधान की गारंटी दी जाती है तो आप अक्सर कोड लिख सकते हैं ताकि लंबे समय तक चलने वाले समय अधिक तेजी से अधिक समय तक संभव न हो)। इस तकनीक के लिए सवाल कर रहे हैं बहुत अलग
टन Hospel

जवाबों:


4

पर्ल, 130 128 127 बाइट्स

के लिए +4 शामिल है -n0(प्रोग्राम कमांडलाइन से काम नहीं करता है -और स्थान भी गिना जाता है)

STDIN पर इनपुट के साथ कॉल करें:

perl -n0 connectletters.pl
E--E-
BB-C-
AD---
---C-
AD---

आपके सिस्टम पर STDIN के साथ ^Dया ^Zजो कुछ भी बंद होता है, उसके साथ अस्थायी करें

connectletters.pl:

/-/?map{$_="$`$_$'";s%\pL%$_="$`0$'";1while do{s/[$&-](.{5}|)0|0(.{5}|)[$&-]/0$+0/s};/$&/||$&%eg;!/1/&&do$0}A..E:exit!print
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.