Giriş
Bu meydan okumada çapraz Burrows-Wheeler dönüşümlerini çözeceksiniz. İşte köşegen Burrows-Wheeler dönüşümünün ne olduğuna genel bir bakış. Bir mesajı kodlamak için önce mesajın tek uzunlukta olduğunu garanti etmelisiniz (yani 5, 7, 9 vb.). Sonra, bir ızgara yapmak n
tarafından n
nerede, n
mesajın uzunluğudur. İlk satır orijinal mesajdır. Bundan sonraki her satır, üstündeki satırdır, ancak ilk karakter arkaya hareket ederek 1 karakter sola kaydırılmıştır. Örneğin:
Hello World
ello WorldH
llo WorldHe
lo WorldHel
o WorldHell
WorldHello
WorldHello
orldHello W
rldHello Wo
ldHello Wor
dHello Worl
Sonra NW to SE diyagonalindeki her harfi alıp yeni bir dizeye koyuyorsunuz:
Hello World H
ello WorldH l
llo WorldHe o
lo WorldHel W
o WorldHell r
WorldHello d
WorldHello e
orldHello W l
rldHello Wo (space)
ldHello Wor o
dHello Worl l
Kodlanmış mesajınız HloWrdel ol
. Kod çözmek için önce kodlanmış mesajın uzunluğunu alın, 1 ekleyin ve 2'ye bölün x
. Bu numarayı çağıralım . Artık biliyoruz ki x
, ilk harften başlayarak, her harf x
sondan sonra dönüyor. Örneğin:
H l o W r d e l o l
1
Then...
H l o W r d e l o l
1 2
And again...
H l o W r d e l o l
1 3 2
Until you get...
H l o W r d e l o l
1 3 5 7 9 11 2 4 6 8 10
Şimdi harfleri doğru sırayla yeniden düzenleyin Hello World
!
Meydan okuma
Zorluğunuz iki program, fonksiyon ya da her birinden birini yazmaktır. Ancak, her ikisi de aynı dili kullanmalıdır. İlk program bir dizeyi STDIN, program bağımsız değişkenleri veya işlev parametreleri aracılığıyla girdi olarak kabul eder ve bu yöntemi kullanarak kodlar . İkinci program, bir dizeyi STDIN, program bağımsız değişkenleri veya işlev parametreleri aracılığıyla girdi olarak kabul eder ve bu yöntemi kullanarak kodunu çözer .
Gereksinimler
İlk Program / İşlev
- Yukarıda listelenen herhangi bir yöntemi kullanan tek bir dize girişi.
- Dizeyi çapraz Burrows-Wheeler dönüşüm stili kullanarak kodlamalıdır.
İkinci Program / İşlev
- Yukarıda listelenen herhangi bir yöntemi kullanan tek bir dize girişi.
- Çapraz bir Burrows-Wheeler dönüşüm stili kullanarak dizginin kodunu çözmelidir.
Kısıtlamalar
- Bu görevi gerçekleştiren yerleşik veya harici işlevleri kullanamazsınız.
- Standart boşluklara izin verilmez.
- Her iki program / fonksiyon da aynı dilde olmalıdır.
puanlama
Bu kod golf, bayt en kısa program kazanır.
Daha fazla bilgi eklemem gerekirse, bir yorum bırakın!