Простая часть: учитывая входную строку, содержащую только печатаемые символы ASCII (пробел - тильда), подсчитайте количество вхождений каждого символа и верните результат в любом удобном формате. Результат для строки a%hda7a
должно быть что - то вроде: a:3, %:1, h:1, 7:1, d:1
. Сортировка не нужна, разделители и форматы являются необязательными, но необходимо легко понять, какое число соответствует какому символу. Вы не должны включать символы, которых нет во входной строке ( a:3, b:0, c:0, d:1, ...
это не ОК).
Настоящий вызов:
Преобразуйте каждый символ в вашем коде в 8-битное двоичное число (или 16-битное, если вы используете UTF-16 или аналогичный) и перечислите каждый символ, начиная с 0
.
Для каждого символа ( i
является перечислителем), i%7
-бит 1 должен быть 1
. Биты пронумерованы справа. Все остальные биты могут быть любыми.
Давайте использовать следующий код в качестве примера:
[f]-xif)#f
Преобразовав это в двоичный файл, мы получим массив ниже. Первый номер (представляющий [
есть 1
в положении 0'th, так что один КИ. Второй номер (представляющий f
есть 1
в положении 1'st, так что один КИ тоже. Продолжить как это, и вы увидите , что приведенный выше код действителен.
C 76543210 Бит номер -------- ---------- [0101101 1 0 - OK f 011001 1 0 1 - ОК ] 01011 1 01 2 - ОК - 0010 1 101 3 - ОК х 011 1 1000 4 - ОК я 01 1 01001 5 - ОК f 0 1 100110 6 - ОК ) 0010100 10 0 - ОК # 001000 1 1 1 - ОК f 01100 1 10 2 - ОК
Если мы изменим код на: ]f[-xif)#f
мы получим следующее начало последовательности:
C 76543210 Bit number
- -------- ----------
] 01011101 0 <- OK
f 01100110 1 <- OK
[ 01011011 2 <- Not OK
- 00101101 3 <- OK
Как мы видим, третий символ [
не имеет 1
второй позиции (с нулевым индексом), и поэтому этот код недействителен.
Тестовые случаи:
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
Любой разумный формат вывода в порядке (все, что вам удобнее). Вы можете, например, иметь: :7, !:1, ":2, #:3, &:1, /:1, T:1, a:2 ...
или [ ,7][!,1][",2][#,3][&,1]...
. Вывод осуществляется любым стандартным способом (возврат из функции, вывод на STDOUT и т. Д.)
1i
модуль 7
.
Это код-гольф , поэтому самый короткий код в байтах выиграет реф .
00001010
. Это тоже может быть полезно! :)
n%7
месте> pastie.org/pastes/10985263/text