Der einfache Teil: Bei einer Eingabezeichenfolge, die nur druckbare ASCII-Zeichen enthält (Leerzeichen - Tilde), zählen Sie die Anzahl der Vorkommen jedes Zeichens und geben Sie das Ergebnis in einem beliebigen geeigneten Format zurück. Das Ergebnis für eine Zeichenfolge a%hda7a
soll wie etwas sein: a:3, %:1, h:1, 7:1, d:1
. Eine Sortierung ist nicht erforderlich, die Begrenzer und Formate sind optional, es muss jedoch leicht verständlich sein, welche Nummer welchem Zeichen entspricht. Sie dürfen keine Zeichen einschließen, die nicht in der Eingabezeichenfolge enthalten sind ( a:3, b:0, c:0, d:1, ...
ist nicht OK).
Die wahre Herausforderung:
Konvertieren Sie jedes Zeichen in Ihrem Code in eine 8-Bit-Binärzahl (oder 16-Bit, wenn Sie UTF-16 oder ähnliches verwenden) und führen Sie alle Zeichen auf, die bei beginnen 0
.
Für jeden Charakter ( i
der Zähler), die i%7
Bit - 1 muss sein 1
. Die Bits sind von rechts nummeriert. Alle anderen Bits können beliebig sein.
Verwenden wir den folgenden Code als Beispiel:
[f]-xif)#f
Wenn wir dies in eine Binärdatei konvertieren, erhalten wir das folgende Array. Die erste Zahl (repräsentiert [
a 1
an der 0. Position, so dass man in Ordnung ist. Die zweite Zahl (repräsentiert f
a 1
an der 1. Position, so dass man auch in Ordnung ist. Fahren Sie so fort, und Sie werden sehen dass der obige Code gültig ist.
C 76543210 Bitnummer - -------- ---------- [0101101 1 0 - OK f 011001 1 0 1 - OK ] 01011 1 01 2 - OK - 0010 1 101 3 - OK x 011 1 1000 4 - OK i 01 1 01001 5 - OK f 0 1 100110 6 - OK ) 0010100 1 0 - OK # 001000 1 1 1 - OK f 01100 1 10 2 - OK
Wenn wir den Code in ändern, erhalten ]f[-xif)#f
wir den folgenden Start der Sequenz:
C 76543210 Bit number
- -------- ----------
] 01011101 0 <- OK
f 01100110 1 <- OK
[ 01011011 2 <- Not OK
- 00101101 3 <- OK
Wie wir sehen, befindet sich das dritte Zeichen [
nicht 1
an der zweiten Position (mit einem Index von Null), und dieser Code ist daher nicht gültig.
Testfälle:
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
Jedes sinnvolle Ausgabeformat ist in Ordnung (was auch immer für Sie am bequemsten ist). Sie könnten zum Beispiel haben: :7, !:1, ":2, #:3, &:1, /:1, T:1, a:2 ...
oder [ ,7][!,1][",2][#,3][&,1]...
. Die Ausgabe erfolgt auf einem beliebigen Standardweg (Rückkehr von der Funktion, Ausdruck nach STDOUT usw.).
1i
Modul 7
.
Dies ist Code-Golf , so dass der kürzeste Code in Bytes ref gewinnt .
00001010
. Es kann auch nützlich sein! :)
n%7
Stelle verwenden dürfen> pastie.org/pastes/10985263/text