Das 16. Offline-Echtzeit-Schreibproblem wurde mit Python gelöst

Das Problem ist hier. http://nabetani.sakura.ne.jp/hena/ord16boseg/ Ich hatte nicht viel Zeit, um die redundante Verarbeitung in horizontaler und vertikaler Richtung zusammenzustellen. Ich werde es später organisieren.

Nach dem Organisieren: Lösen Sie die Funktion, die die Bitmap-Operation verwendet.

def solve(data):
  h=[int(data[i:i+2],8) for i in range(0,len(data),2)]
  v=[int(''.join(y),2) for y in zip(*[format(x,'06b') for x in h])]
  c=[map(len,format(m[y]^m[y+1],'b').split('0')) for y in range(0,5) for m in(h,v)]
  return ','.join(map(str,[sum(c,[]).count(i) for i in range(1,7)]))

Kommentar:

#Bitmap-Erstellung:Schneiden Sie eine oktale Zeichenfolge mit jeweils zwei Zeichen aus, um ein numerisches Array zu erstellen
h=[int(data[i:i+2],8) for i in range(0,len(data),2)]
  for i in range(0,len(data),2) #Generierung von Indexnummern zum Ausschneiden von zwei Zeichen gleichzeitig
  data[i:i+2]                   #Extrahieren Sie 2 Zeichen gleichzeitig
  int(... ,8)                   #Quantifizieren Sie oktale Zeichenfolgen
  [...]                         #Erstellen Sie ein Array

#Erstellung einer vertikalen / horizontalen Ersatzbitmap:In ein binäres Zeichenfolgenarray konvertieren, vertikal und horizontal ersetzen und dann erneut in ein numerisches Array konvertieren
v=[int(''.join(y),2) for y in zip(*[format(x,'06b') for x in h])]
  [format(x,'06b') for x in h] #Konvertieren Sie das Zahlenarray in ein Array aus binären 6-stelligen Zeichenfolgen
  zip(*[...])                  #Argumenterweiterung von Array-Elementen(*)Dann komprimieren und ersetzen Sie jedes Zeichen vertikal und horizontal
  for y in zip(...)            #Array-Element('0'Oder'1'Ist ein Array von 6)Über
  ''.join(...)                 #Verketten Sie Binärzeichen für jedes Zeichen, um eine Binärzeichenfolge zu erstellen
  int(... ,2)                  #Binärzeichenfolge digitalisieren
  [...]                        #Erstellen Sie ein Array


#Nehmen Sie das XOR der Bitmap zwischen jeder Zeile und erstellen Sie ein Array von Längen, bei denen 1 Bit stetig ist
c=[map(len,format(m[y]^m[y+1],'b').split('0')) for y in range(0,5) for m in(h,v)]
  for m in(h,v)          #Für horizontale und vertikale Bitmaps
  for y in range(0,5)    #y=0~4, 0-1,1-2,2-3,3-4,4-XOR zwischen 5 Zeilen nehmen
  m[y]^m[y+1]            #Nehmen Sie das XOR zwischen die Linien und setzen Sie das Bit des Begrenzungsteils auf 1.
  format(... ,'b')       #Bitfolge Numerischer Wert zur binären Zeichenfolge
  .split('0')            #'0'Geteilt durch'1'Machen Sie ein kontinuierliches Element aus
  map(len, ...)          #'1'Machen Sie eine Reihe von Längen
  [...]                  #Erstellen Sie ein Array(Ein Array von Arrays, ein zweidimensionales Array)


#Zählen Sie aus dem Längenarray die Anzahl der Auftritte für jede Länge.','Gibt eine durch getrennte Zeichenfolge zurück
return ','.join(map(str,[sum(c,[]).count(i) for i in range(1,7)]))
  for i in range(1,7)    #Über die Länge von 1 bis 6
  sum(c,[])              #Reduzieren Sie c in einem zweidimensionalen Array, um es zu einem eindimensionalen Array zu machen
  .count(i)              #Zählen Sie die Anzahl der Längenerscheinungen
  [...]                  #Erstellen Sie ein Array
  map(str, ...)          #Machen Sie die Anzahl der Vorkommen von 1 bis 6 zu einem Array von Zeichenketten
  ','.join(...)          #Anzahl der Vorkommen String-Array','Machen Sie es zu einer Zeichenkette, die mit verbunden ist
  return ...             #Rückkehr

Vor der Physiologie: Quelle in 1 Stunde am Veranstaltungsort geschrieben

#!/usr/bin/env python
#-*- coding:utf-8 -*-

def solve(data):
    data += "00"
    m = [format(int(data[i:i+2],8), "06b")+"0" for i in xrange(0,len(data),2)]
    count = [0]*7
    for x in xrange(0,5):
        n = 0
        last=(0,0)
        for y in xrange(0,7):
            z = (m[y][x], m[y][x+1])
            if z != last:
                count[n] += 1
                n = 0
            if z[0] != z[1]: n += 1
            last = z
    for y in xrange(0,5):
        n = 0
        last=(0,0)
        for x in xrange(0,7):
            z = (m[y][x], m[y+1][x])
            if z != last:
                count[n] += 1
                n = 0
            if z[0] != z[1]: n += 1
            last = z
    return ','.join(map(str,count[1:]))

def test(data, correct):
    answer = solve(data)
    print "OK" if answer==correct else "NG", answer, correct, data

if __name__ == '__main__':
    0, test( "060276724276", "6,2,1,1,0,1" );
    1, test( "770175454177", "2,3,0,3,1,0" );    
    2, test( "743733377170", "9,3,1,0,0,0" );    
    3, test( "724212121273", "5,2,1,1,1,1" );    
    4, test( "100000000000", "3,0,0,0,0,0" );    
    5, test( "000002000000", "4,0,0,0,0,0" );    
    6, test( "003622223600", "0,4,0,4,0,0" );    
    7, test( "520073737070", "8,3,1,1,0,0" );    
    8, test( "770077007700", "0,0,0,0,0,5" );    
    9, test( "555555555514", "2,0,0,0,2,2" );    
    10, test( "764252427600", "4,0,4,0,2,0" );    
    11, test( "774555554177", "3,3,1,3,0,0" );    
    12, test( "674574754557", "11,5,0,1,0,0" );    
    13, test( "000000000000", "0,0,0,0,0,0" );    
    14, test( "777777777777", "0,0,0,0,0,0" );    
    15, test( "774377777577", "6,0,2,0,0,0" );    
    16, test( "070777777777", "0,1,1,0,0,0" );    
    17, test( "373737373737", "0,0,0,0,0,1" );    
    18, test( "603260327725", "30,0,0,0,0,0" );    
    19, test( "466331144663", "30,0,0,0,0,0" );    
    20, test( "000000000242", "3,2,0,0,0,0" );    
    21, test( "567656043772", "18,2,1,0,0,0" );    
    22, test( "200763012420", "15,4,1,0,0,0" );    
    23, test( "400101140052", "14,3,0,0,0,0" );    
    24, test( "764767476476", "13,2,0,1,0,0" );    
    25, test( "001110140110", "12,2,1,0,0,0" );    
    26, test( "765405076527", "16,3,0,1,0,0" );    
    27, test( "377323370373", "8,4,2,0,0,0" );    
    28, test( "250541131216", "11,5,2,0,0,0" );    
    29, test( "744165741476", "12,3,2,0,0,0" );    
    30, test( "042101000300", "10,3,0,0,0,0" );    
    31, test( "002004554101", "11,3,1,0,0,0" );    
    32, test( "371707762706", "15,1,1,0,0,0" );    
    33, test( "130371310175", "7,3,1,2,0,0" );    
    34, test( "212537003613", "13,2,1,1,1,0" );    
    35, test( "157700063411", "15,3,0,0,0,1" );    
    36, test( "011500036007", "6,7,1,0,0,0" );    
    37, test( "743113313517", "17,2,1,0,0,0" );    
    38, test( "174105270405", "13,3,1,1,0,0" );    
    39, test( "427272200311", "13,3,2,0,0,0" );    
    40, test( "725370332237", "12,5,1,1,0,0" );    
    41, test( "005640420046", "12,1,3,0,0,0" );    
    42, test( "700350001101", "14,3,1,0,0,0" );    
    43, test( "577627744076", "16,1,1,1,0,0" );    
    44, test( "620332232007", "10,4,2,1,0,0" );    
    45, test( "260406401000", "15,1,1,0,0,0" );    
    46, test( "737272723276", "5,0,0,0,3,0" );    
    47, test( "000400040444", "7,0,2,0,0,0" );    
    48, test( "370222002177", "13,2,2,0,0,0" );    
    49, test( "372236024656", "9,3,2,0,1,0" );    
    50, test( "276131137003", "11,6,2,0,0,0" );    
    51, test( "742134007240", "13,4,2,0,0,0" );    
    52, test( "777721775571", "13,1,2,0,0,0" );    
    53, test( "700301232233", "11,2,3,0,0,0" );

Recommended Posts

Das 16. Offline-Echtzeit-Schreibproblem wurde mit Python gelöst
Das 15. Offline-Problem beim Schreiben in Echtzeit wurde mit Python gelöst
Das 16. Offline-Echtzeit-Schreiben eines Referenzproblems zur Lösung mit Python
Das 19. Offline-Echtzeit-Schreiben eines Referenzproblems zur Lösung mit Python
Das 15. Offline-Echtzeit-Schreiben eines Referenzproblems in Python
Das 14. Referenzproblem beim Schreiben in Echtzeit in Python
Das 18. Offline-Echtzeit-Schreiben eines Referenzproblems in Python
Beim 15. Offline-Echtzeitversuch habe ich versucht, das Problem des Schreibens mit Python zu lösen
17. In Python implementiertes Referenzproblem für das Offline-Schreiben in Echtzeit
20. Offline-Echtzeit So schreiben Sie Probleme in Python
Das 14. Referenzproblem beim Offline-Schreiben in Echtzeit mit Python
So schreiben Sie offline in Echtzeit Lösen von E05-Problemen mit Python
17. Offline-Echtzeit So lösen Sie Schreibprobleme mit Python
Offline-Echtzeit zum Schreiben eines Python-Implementierungsbeispiels für das E15-Problem
Antwort auf "Offline in Echtzeit, wie man ein F02-Problem schreibt"
Das 18. Offline-Echtzeit-Schreibproblem in Python
Antwort auf "Offline-Echtzeit, wie man ein F01-Problem schreibt"
Antwort auf "Offline-Echtzeit, wie man ein E13-Problem schreibt"
Das 19. Offline-Echtzeit-Schreibproblem in Python
Ich habe versucht, das Problem von F02 zu lösen, wie man mit Python offline in Echtzeit schreibt
Offline-Echtzeit zum Schreiben eines E14 Python-Implementierungsbeispiels
13. Offline-Echtzeit So lösen Sie Schreibprobleme mit Python
Offline in Echtzeit, wie man ein Implementierungsbeispiel für E11 Ruby und Python schreibt
Das 10. Referenzproblem beim Schreiben in Echtzeit. Implementierungsbeispiel von Python.
Das 11. Referenzproblem beim Schreiben in Echtzeit. Implementierungsbeispiel von Python.
So schreiben Sie offline in Echtzeit Lösen von F01-Problemen mit Python
Wie man offline in Echtzeit schreibt Ich habe versucht, E11 mit Python zu lösen
[Einführung in Python] So schreiben Sie eine Zeichenfolge mit der Formatierungsfunktion
Teil 1 Ich habe die Antwort auf das Referenzproblem geschrieben, wie man in Python in Echtzeit offline schreibt
Wie man offline in Echtzeit schreibt Ich habe versucht, E12 mit Python zu lösen
[Einführung in Python] Wie iteriere ich mit der Bereichsfunktion?
Versuchen Sie, das Problem der Zuweisung von Schulungsärzten mit Python zu lösen
[Python] So legen Sie den Download-Speicherort mit youtube-dl fest
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
[Python] So schreiben Sie den Tabellenstil mit python-pptx um [python-pptx]
Schreiben Sie mit Python in csv
Teil 1 Ich habe ein Beispiel für die Antwort auf das Referenzproblem geschrieben, wie man in Python in Echtzeit offline schreibt
Ich habe versucht zu simulieren, wie sich die Infektion mit Python ausbreitet
Eine Geschichte über den Umgang mit dem CORS-Problem
So gelangen Sie mit Vagrant in die Python-Entwicklungsumgebung
[Einführung in Python] So erhalten Sie Daten mit der Funktion listdir
Das zwölfte Offline-Echtzeit-Schreibreferenzproblem. Implementiert von Python
Python: So verwenden Sie Async mit
[Python] Mit Python in eine CSV-Datei schreiben
So erhalten Sie die Python-Version
Erste Schritte mit Python
So berechnen Sie das Datum mit Python
[Einführung in Python] So teilen Sie eine Zeichenfolge mit der Funktion split
So schreiben Sie offline in Echtzeit Lösen von E04-Problemen mit Python
[Python] Erklärt anhand eines Beispiels, wie die Formatierungsfunktion verwendet wird
Ich wollte das ABC164 A ~ D-Problem mit Python lösen
So senden Sie eine Anfrage mit Python an die DMM (FANZA) -API
So gehen Sie mit dem Problem um, dass das aktuelle Verzeichnis verschoben wird, wenn Python von Atom ausgeführt wird
Antwort auf "Offline in Echtzeit, wie man ein F04-Problem schreibt"
So lösen Sie das Problem beim Verpacken des Behälters
So schreiben Sie Python-Dokumentkommentare (Docstrings)