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, codverinin e-gove sağ bağlamın olduğu yerdir lf. Bu örnek, alt dize temsil e-goarasında code-golf.
Şimdi, iki dizeyi bağlamla birleştirmek için aa|bcc|deeve 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|cdve 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|ccve c|c|cIS
a a|b b|c c
c|c|c
burada bve cdö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.