Harfleri bağlama


10

Bu küçük oyundan esinlenildi .

Meydan okuma

Bir ızgaranın başlangıç ​​konumu (her zaman 5x5) olarak verilir, şöyle:

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

Tüm boş -alanları kaldırarak harfleri (hepsi aynı harfleri) bağlamanız gerekir . Mektuplar her zaman olacak A,B,C,D and E.

Her harf çifti, dik açılarda bükülebilen tek bir dalsız çizgi ile bağlanmalıdır (çizgiyi tasvir etmek için aynı harfi kullanarak).

Girişin her bir başlangıç ​​harfinin tam olarak 2 kez olması garanti edilir ve her zaman tüm başlangıç ​​harfleri AE'ye sahip olacaktır.

Giriş stdin'den veya bazı fonksiyonlara arg olarak sadece bir dizeden, hatta kodlama dilinize en uygun yol olan bir dizi / matriz / karakter listesinden okunabilir.

Bu bayt kısa kod kazanır!


Misal

Her soruna sadece bir çözüm yoktur, ancak kurallar herkes için geçerlidir (boş alan yok ve ayrı harfler yok). Ve girişin en az bir doğru çıkışa sahip olması garanti edilir.

A harflerini birleştirmeye başlayalım:

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

Şimdi, B harflerini birbirine bağlamak:

AABCD
AAB--
AABC-
AABBD
AAE-E

Şimdi, C harflerini birbirine bağlamak:

AABCD
AABC-
AABC-
AABBD
AAE-E

Şimdi, D harflerini birbirine bağlamak:

AABCD
AABCD
AABCD
AABBD
AAE-E

Ve son olarak E harfleri:

AABCD
AABCD
AABCD
AABBD
AAEEE

Başka Örnekler

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 bir dup değil, çünkü bu meydan okuma doğru giriş garantisi var.
Nathan Merrill

Girişin her bir başlangıç ​​mektubunun tam olarak 2 kez olması garanti ediliyor mu? Her zaman başlangıç ​​harfleri olacak A-Emı?
Ton Hospel

1
@NathanMerrill oldukça küçük bir fark gibi görünüyor. Çözülebilirlik kontrolünün kodun çoğunluğunu alacağını hayal edemiyorum.
Martin Ender

1
Benim meydan MartinBüttner @, solvability onay olan hiçbir ihtiyaç bağlayan meydan. İki zorluğun benzerlikleri olsa da, aklımda çok farklı hissediyorlar.
Nathan Merrill

4
Bunun gibi bazı sorular için en sevdiğim bir teknik, bir çözüme çarparsam geri takipten kaçınmak ve durmak için pozisyonları doldurmak için rastgele sayılar kullanmaktır. Bu sadece bir çözüm garanti edilirse çalışır, aksi takdirde program sonsuza kadar çalışabilir (bir çözüm garanti edilirse, genellikle uzun çalışma zamanlarının katlanarak daha uzun süre beklenmeyeceği şekilde kodu yazabilirsiniz). Bu teknik için sorular şunlardır çok farklı
Ton Hospel

Yanıtlar:


4

Perl, 130 128 127 bayt

İçin +4 içerir -n0(program komut satırından çalışmaz, bu nedenle -boşluk da sayılır)

STDIN üzerindeki giriş ile arayın:

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

İle teminate ^Dveya ^Zsisteminizde STDIN kapatır olursa olsun ya da

connectletters.pl:

/-/?map{$_="$`$_$'";s%\pL%$_="$`0$'";1while do{s/[$&-](.{5}|)0|0(.{5}|)[$&-]/0$+0/s};/$&/||$&%eg;!/1/&&do$0}A..E:exit!print
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.