Klicken Sie hier, um Details zum Problem anzuzeigen. http://qiita.com/Nabetani/items/cba03c96d1ea55f6e861
Nachdem ich einige Probleme in der Vergangenheit im Voraus ausprobiert hatte, dachte ich sofort, dass es gut wäre, ein Wörterbuch zu erstellen und das Schwarz (beleuchtet) des Punktmusters des Blitzzeichens auf 1 und das Weiß (aus) auf 0 zu setzen und die obere und untere Reihe zu setzen. Ich habe ein Wörterbuch mit den Tasten und den Zeichen als Werten erstellt. Konvertiert die eingegebene hexadezimale Zeichenfolge in eine 32-stellige binäre Zeichenfolge, extrahiert mehrere Zeichen vom Anfang der oberen und unteren Zeile und schlägt das Wörterbuch nach. Ich musste jedoch auf die Anzahl der zu extrahierenden Zeichen achten. Wenn es ein 'U'dot-Muster mit 3 Punkten oben und unten gibt, wenn Sie 2 Punkte oben und unten herausnehmen und das Wörterbuch nachschlagen, stimmt es mit dem Punktmuster von' L 'überein. Überprüfen Sie also zuerst, ob es sich um ein 3-Punkt-Muster handelt, und prüfen Sie dann, ob es sich um ein 2-Punkt-Muster handelt. Wenn es schließlich keines trifft, prüfen Sie, ob es sich um ein 1-Punkt-Trennmuster handelt (00).
parts = {'1011':'L', '1110':'R', '0111':'J', '111010':'T', '101111':'U',
'111101':'N', '011110':'S', '110011':'Z', '00':'' }
def solve(text):
upper, lower = (format(int(t,16),'032b') for t in text.split('/'))
answer = ''
while len(upper) > 0:
for n in xrange(3, 0, -1):
part = upper[:n] + lower[:n]
if part in parts:
answer += parts[part]
upper, lower = upper[n:], lower[n:]
break
return answer
def test(text, answer):
result = solve(text)
print '%s\t%s\t%s' % ('OK' if result == answer else 'NG', text, result)
if __name__ == '__main__':
0, test( "2ed8aeed/34b0ea5b", "LTRSUNTSJ" );
1, test( "00000200/00000300", "L" );
2, test( "00018000/00010000", "R" );
3, test( "00002000/00006000", "J" );
4, test( "00000700/00000200", "T" );
5, test( "01400000/01c00000", "U" );
6, test( "00003800/00002800", "N" );
7, test( "000c0000/00180000", "S" );
8, test( "00003000/00001800", "Z" );
9, test( "132eae6c/1a64eac6", "LRJTUNSZ" );
10, test( "637572d0/36572698", "ZSNUTJRL" );
11, test( "baddb607/d66b6c05", "LTJZTSSSN" );
12, test( "db74cd75/6dac6b57", "ZZZTJZRJNU" );
13, test( "3606c2e8/1b0d8358", "ZZSSLTJ" );
14, test( "ad98c306/e6cc6183", "UZZZZZZ" );
15, test( "4a4aaee3/db6eeaa6", "JJLLUUNNS" );
16, test( "ecd9bbb6/598cd124", "TSSZZTTRR" );
17, test( "e0000002/40000003", "TL" );
18, test( "a0000007/e0000005", "UN" );
19, test( "c0000003/80000006", "RS" );
20, test( "40000006/c0000003", "JZ" );
21, test( "01da94db/00b3b6b2", "TSUJLRSR" );
22, test( "76eeaaea/24aaeeae", "TRNNUUNU" );
23, test( "1dacaeee/1566e444", "NRJZUTTT" );
24, test( "26c9ac60/6c6d66c0", "JSZLRJZS" );
25, test( "6c977620/36da5360", "ZZLLTNZJ" );
26, test( "069aeae6/0db34eac", "SJSLTUNS" );
27, test( "06d53724/049da56c", "RRULRNJJ" );
28, test( "069b58b0/04d66da0", "RLRSLZJR" );
29, test( "1b6eced4/11b46a9c", "RZZTZNRU" );
30, test( "522e8b80/db6ad900", "JLLJNLJT" );
31, test( "6546cdd0/376c6898", "ZULSZRTL" );
32, test( "4e6d5b70/6ad9d620", "LNSSURST" );
33, test( "37367772/65635256", "SNSZNTNJ" );
34, test( "25535d58/377669cc", "LUUSLTUZ" );
35, test( "0ae6a55d/0eacedcb", "UNSUJUTJ" );
36, test( "76762edc/23536a88", "TZNZJNRT" );
Recommended Posts