Basit bölüm: Yalnızca yazdırılabilir ASCII karakterlerini (boşluk - tilde) içeren bir giriş dizesi verildiğinde, her karakterin oluşum sayısını sayın ve sonucu uygun bir formatta döndürün. Bir dize için sonuç a%hda7a
gibi bir şey olmalıdır: a:3, %:1, h:1, 7:1, d:1
. Sıralama gerekli değildir, sınırlayıcılar ve formatlar isteğe bağlıdır, ancak hangi sayının hangi karaktere karşılık geldiğini kolayca anlamak gerekir. Giriş dizesinde olmayan karakterleri dahil etmeyeceksiniz ( a:3, b:0, c:0, d:1, ...
TAMAM değil).
Gerçek zorluk:
Kodunuzdaki her karakteri 8 bitlik bir ikilik sayıya (veya UTF-16 veya benzeri kullanıyorsanız 16 bit) dönüştürün ve konumundan başlayan her karakteri numaralandırın 0
.
Her karakter için ( i
listeleyicisi olan), i%7
-bit 1 olmalıdır olacak 1
. Bitler sağdan numaralandırılmıştır. Diğer tüm bitler ne istersen olabilir.
Örnek olarak aşağıdaki kodu kullanalım:
[f]-xif)#f
Bunu ikili dosyaya çevirerek aşağıdaki diziyi elde ederiz. Temsil eden ilk sayı ( [
bir sahip 1
bir sorun yok böylece, 0'th konumunda. Temsilen ikinci sayı ( f
bir sahiptir 1
böylece bir ok çok olduğunu, 1'st konumunda. Böyle devam edin ve göreceksiniz Yukarıdaki kod geçerli.
C 76543210 Bit numarası - -------- ---------- [0101101 1 0 - Tamam f 011001 1 0 1 - Tamam ] 01011 1 01 2 - Tamam - 0010 1 101 3 - Orta x 011 1 1000 4 - Tamam i 01 1 01001 5 - Tamam f 0 1 100110 6 - Tamam ) 0010100 1 0 - Tamam # 001000 1 1 1 - Tamam f 01100 1 10 2 - Tamam
Kodu şu şekilde değiştirirsek: ]f[-xif)#f
dizinin şu başlangıcını alırız:
C 76543210 Bit number
- -------- ----------
] 01011101 0 <- OK
f 01100110 1 <- OK
[ 01011011 2 <- Not OK
- 00101101 3 <- OK
Görüldüğü gibi, üçüncü karakter [
bir yok 1
2 pozisyonunda (sıfır endeksli) içinde ve bu kod nedenle geçerli değil.
Test senaryoları:
Input:
This is a string containing some symbols: ".#!".#&/#
Output:
! " # & / : T a b c e g h i l m n o r s t y .
7 1 2 3 1 1 1 1 2 1 1 1 2 1 5 1 2 4 3 1 6 2 1 2
Herhangi bir makul çıktı biçimi tamam (sizin için en uygun olanı). Örneğin: :7, !:1, ":2, #:3, &:1, /:1, T:1, a:2 ...
veya [ ,7][!,1][",2][#,3][&,1]...
. Çıktı herhangi bir standart şekilde (fonksiyondan dönüş, STDOUT'a basılmış vb.)
1i
modül 7
.
Bu kod golf , bu yüzden bayt içindeki en kısa kod ref kazanacaktır .
00001010
. Çok faydalı olabilir! :)
n%7
noktada kullanmanıza izin verilen karakterler > pastie.org/pastes/10985263/text