La parte semplice: data una stringa di input contenente solo caratteri ASCII stampabili (spazio - tilde), conta il numero di occorrenze di ciascun carattere e restituisce il risultato in qualsiasi formato conveniente. Il risultato di una stringa a%hda7a
dovrebbe essere qualcosa del tipo: a:3, %:1, h:1, 7:1, d:1
. L'ordinamento non è necessario, i delimitatori e i formati sono opzionali ma deve essere facilmente compreso quale numero corrisponde a quale carattere. Non includere caratteri che non si trovano nella stringa di input ( a:3, b:0, c:0, d:1, ...
non è OK).
La vera sfida:
Converti tutti i caratteri nel tuo codice in un numero binario a 8 bit (o 16 bit se stai usando UTF-16 o simile), ed enumera ogni carattere a partire da 0
.
Per ogni personaggio ( i
è l'enumeratore), deve essere i%7
-bit 1 . I bit sono numerati da destra. Tutti gli altri bit possono essere quello che vuoi.1
Usiamo il seguente codice come esempio:
[f]-xif)#f
Convertendo questo in binario otteniamo l'array di seguito. Il primo numero (che rappresenta [
ha a 1
nella posizione 0, quindi uno va bene. Il secondo numero (che rappresenta f
ha una 1
nella posizione 1, quindi anche uno va bene. Continua così, e vedrai che il codice sopra è valido.
C 76543210 Numero di bit - -------- ---------- [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
Se cambiamo il codice in: ]f[-xif)#f
avremo il seguente inizio della sequenza:
C 76543210 Bit number
- -------- ----------
] 01011101 0 <- OK
f 01100110 1 <- OK
[ 01011011 2 <- Not OK
- 00101101 3 <- OK
Come vediamo, il terzo carattere [
non ha un 1
in 2a posizione (indicizzato a zero) e quindi questo codice non è valido.
Casi test:
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
Qualsiasi formato di output ragionevole è OK (qualunque sia il più conveniente per te). Ad esempio potresti avere: :7, !:1, ":2, #:3, &:1, /:1, T:1, a:2 ...
o [ ,7][!,1][",2][#,3][&,1]...
. L'output è in qualsiasi modo standard (ritorno dalla funzione, stampato su STDOUT ecc.)
1i
modulo 7
.
Questo è code-golf , quindi il codice più breve in byte vincerà ref .
00001010
. Può anche essere utile! :)
n%7
posto> pastie.org/pastes/10985263/text