Bu, xkcd # 153'e dayanmaktadır .
Her biri bir dize veya bir bayt veya karakter listesi veya dizisi olan 2 parametre alan bir program veya adlandırılmış işlev yapın. İkinci parametre yalnızca lrfu(veya eşdeğer ASCII baytlarından) çizilen karakterleri içerir . İlk parametre ile temsil edilen bir bit dizisi üzerinde gerçekleştirilecek bir dizi talimat olarak yorumlanmalıdır.
Gerçekleştirilen işlem aşağıdakilere eşit olmalıdır:
- İlk parametreyi, her karakterin bitlerini birleştirerek oluşturulan tek bir bit dizisine dönüştürün (7 bit ASCII, 8 bit genişletilmiş ASCII veya standart Unicode kodlaması olarak yorumlanır). Örneğin, ilk parametre
"AB"bu ise bu10000011000010(7 bit),0100000101000010(8 bit veya UTF-8)00000000010000010000000001000010veya01000001000000000100001000000000(iki endianitede UTF-16), vb. - İkinci parametredeki her karakter için sırasıyla ilgili komutu yürütün:
lbit dizesini sola döndürür. Örneğin10000011000010olur00000110000101.rbit dizesini sağa döndürür. Örneğin10000011000010olur01000001100001.fbit dizesindeki her biti çevirir (veya tersine çevirir). Örneğin10000011000010olur01111100111101.ubit dizisini tersine çevirir. Örneğin10000011000010olur01000011000001.
- Bit dizisini, bit başına bir karakter kullanan bir ASCII dizesine dönüştürün. Örneğin
10000011000010olur"10000011000010". Bunun nedeni, 7/8 bitlik tüm kümelerin kendilerine atanmış bir karakteri olmamasıdır.
Örnek (Python'da):
>>> f("b", "rfu")
01110011
Bu döner "b", 8-bitlik ASCII ikili gösterimi içine 01100010doğru döndüğü o (, 00110001), her bit (çevirir 11001110) ve tersine çevirir onu ( 01110011).
Esneklik
Diğer karakterler Karakterler yerine kullanılabilir l, r, f, ve u, ancak açıkça belgelenmiş olmalıdır.
sayı tahtası
Aşağıdaki kod snippet'ini oluşturduğu için @Optimizer'a teşekkürler . Kullanmak için, "Kod snippet'ini göster" i tıklayın, en alta kaydırın ve "► Kod snippet'ini çalıştır" ı tıklayın.
"rrfrburb"? Ayrıca, bir kişi bitleri değiştirdiğinde veya ters çevirdiğinde, her harf veya bir bütün olarak dize için mi yapılır? Daha fazla test örneği daha net hale getirecektir.