Bağlamlı Dizeler
Bu zorluğun amaçları doğrultusunda, bağlamı olan bir dize, sol bağlam , veri bölümü ve sağ bağlam olarak adlandırılan üç dizeden oluşur . Daha uzun bir dizenin bir alt dizesini temsil eder. Dikey boruyu |
ayırıcı olarak kullanıyoruz, bu nedenle bağlamlı bir dize örneği cod|e-go|lf
, sol bağlamın, cod
verinin e-go
ve sağ bağlamın olduğu yerdir lf
. Bu örnek, alt dize temsil e-go
arasında code-golf
.
Şimdi, iki dizeyi bağlamla birleştirmek için aa|bcc|dee
ve cc|de|eee
örneklerini kullanarak aşağıdaki gibi ilerliyoruz . Dizeleri diyagramdaki gibi hizalarız
a a|b c c|d e e
c c|d e|e e e
böylece veri bölümleri bitişik olur. Birleştirmenin veri kısmı, bu durumda veri parçalarının birleştirilmesidir bccde
. Sol bağlam, tüyleri bu durumda ilk veri bölümünün soluna kadar uzatan bölümdür aa
. Benzer şekilde, doğru bağlam eee
, yani birleştirme bağlamlı dizedir aa|bccde|eee
. İkinci Örneğin, düşünün a|bb|cd
ve aabb|cd|
ikinci kelime bir boş doğru bağlamı sahip olduğu,. Hizalama diyagramı
a|b b|c d
a a b b|c d|
burada ikinci kelimenin sol bağlamı, ilk sözcüğün sol bağlamından daha fazla uzanır. Birleştirme aa|bbcd|
.
Ama bekleyin, bir sorun var: hizalama diyagramının harfleri eşleşmezse, birleştirme mevcut değildir! Bir örnek olarak, bir diyagram olarak aa|bb|cc
ve c|c|c
IS
a a|b b|c c
c|c|c
burada b
ve c
dördüncü sütundaki katılmadıkları için birleştirilemezler.
Görev
İşiniz, bölümleri |
yukarıdaki gibi ayrılmış olan iki dizeyi alan ve varsa birleştirmelerini ve yoksa başka bir şeyi çıkaran bir program yazmaktır . "Başka bir şey", bağlamı olan geçerli bir dize olmadığı ve her durumda aynı olduğu sürece, çıktısız dahil herhangi bir değer olabilir. Ancak, hata atmak kabul edilemez. Bir STDIN-STDOUT programı veya bir işlev verebilirsiniz ve anonim işlevler de kabul edilir. En küçük bayt sayısı kazanır ve standart boşluklara izin verilmez.
Test Durumları
aa|bcc|dee cc|de|eee -> aa|bccde|eee
a|bb|cd aabb|cd| -> aa|bbcd|
a|b|cccd aab|cc|c -> aa|bcc|cd
a|b|c b||cd -> a|b|cd
aa|bb|cc c|c|c -> None
aaa|b|c abb|cd|d -> None
|bb|cd abb|c|ed -> None
a|b|c a||cd -> None
|1<2=""
Tanımına ekleyerek&
bunu çözmelisiniz. Üzgünüm bunu daha açık bir şekilde belirtmedim, onu düzenleyeceğim.