[PYTHON] Réponse à "Comment écrire un problème F01 en temps réel hors ligne"

http://nabetani.sakura.ne.jp/hena/ordf01_twicel/ Répondre 1 heure et 30 minutes ... Il y a encore plus.

main.py


MAX_CEL_COUNT = 8

def get_bit(data, x, y):
    if x<0 or y<0 or x>=MAX_CEL_COUNT or y>=MAX_CEL_COUNT:
        return -1
    return data[x][y]


def twicel_smell(data, cx, cy):
    current_bit = get_bit(data, cx, cy)
    hitcel = (-1, -1)
    hitcount = 0

    arounds = [[0, -1],[0, 1],[-1, 0],[1, 0]]

    for around in arounds:
        if current_bit == get_bit(data, cx + around[0], cy + around[1]):
            hitcount +=1
            hitcel = (cx + around[0], cy + around[1])

    if hitcount != 1:
        return None

    return hitcel

def count_twicel(cels):
    targets = []
    data = [[]]
    hitresult = [0,0]
    for i in range(0, MAX_CEL_COUNT):
        raw = format(cels[i], '08b')
        data.append([])
        for j in range(0, MAX_CEL_COUNT):
            targets.append((i, j))
            data[i].append(int(raw[j]))


    for target in targets:
        result1 = twicel_smell(data, target[0], target[1])
        if result1 == None:
            continue
        result2 = twicel_smell(data, result1[0], result1[1])
        if target == result2:
            hitresult[get_bit(data, target[0], target[1])] += 1
            targets.remove(result1)

    return (hitresult[0], hitresult[1])


def test(result, actual, expect):
    result[0 if actual == expect else 1] +=1

result= [0,0]
test(result, count_twicel([0xdc, 0xbc, 0xa7, 0x59, 0x03, 0xd5, 0xd4, 0xea]), (2,3))
test(result, count_twicel([0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]), (0,0))
test(result, count_twicel([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]), (0,0))
test(result, count_twicel([0xcc, 0x33, 0xcc, 0x33, 0xcc, 0x33, 0xcc, 0x33]), (16,16))
test(result, count_twicel([0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55]), (16,16))
test(result, count_twicel([0xac, 0xa3, 0x5c, 0x53, 0xca, 0x3a, 0xc5, 0x35]), (8,8))
test(result, count_twicel([0xdb, 0x00, 0xdb, 0x00, 0xdb, 0x00, 0xaa, 0xaa]), (0,13))
test(result, count_twicel([0x24, 0x24, 0xdb, 0x24, 0x24, 0xdb, 0x24, 0x24]), (0,12))
test(result, count_twicel([0xd7, 0xd7, 0xe9, 0xf1, 0xf7, 0xde, 0x60, 0x56]), (3,2))
test(result, count_twicel([0x17, 0x7d, 0x64, 0x9b, 0xa5, 0x39, 0x53, 0xa6]), (2,2))
test(result, count_twicel([0xbb, 0x8f, 0x18, 0xfb, 0x89, 0xc2, 0xc7, 0x35]), (1,2))
test(result, count_twicel([0x6d, 0x63, 0x20, 0x08, 0x54, 0xcd, 0x32, 0x4f]), (2,2))
test(result, count_twicel([0xa9, 0xca, 0xcd, 0x46, 0x99, 0xe6, 0xf0, 0x30]), (2,2))
test(result, count_twicel([0x5b, 0x70, 0xfd, 0x45, 0xe2, 0xa1, 0xab, 0x9a]), (1,2))
test(result, count_twicel([0x24, 0xe4, 0xa8, 0x12, 0xe1, 0xa6, 0x3f, 0xf3]), (2,1))
test(result, count_twicel([0x79, 0x32, 0x2e, 0x07, 0xd5, 0x10, 0xe7, 0x9d]), (2,2))
test(result, count_twicel([0x60, 0xbc, 0xab, 0xec, 0x1f, 0xeb, 0x63, 0x2c]), (4,2))
test(result, count_twicel([0xa5, 0xdd, 0x92, 0x4e, 0x67, 0xc6, 0xdc, 0x34]), (6,1))
test(result, count_twicel([0xaa, 0x96, 0x6d, 0x67, 0xd2, 0xa8, 0xac, 0x90]), (3,2))
test(result, count_twicel([0x95, 0x72, 0x7d, 0x5c, 0x47, 0xdc, 0xef, 0x99]), (4,0))
test(result, count_twicel([0x17, 0xd6, 0x6a, 0x27, 0x1f, 0x25, 0x26, 0xb8]), (2,1))
test(result, count_twicel([0xf0, 0xf3, 0x76, 0xc5, 0x31, 0xca, 0x6b, 0xae]), (1,2))
test(result, count_twicel([0x01, 0x59, 0x26, 0xfa, 0x8c, 0x70, 0x12, 0xcd]), (1,4))
test(result, count_twicel([0x1a, 0xc3, 0x1f, 0x0b, 0x83, 0xb6, 0x81, 0x0d]), (0,5))
test(result, count_twicel([0x4c, 0x49, 0x05, 0xcf, 0x54, 0xbb, 0x1f, 0xda]), (1,2))
test(result, count_twicel([0xeb, 0x7c, 0xd5, 0x09, 0x2a, 0xc2, 0x14, 0x6b]), (0,7))
test(result, count_twicel([0xb4, 0xd3, 0x4c, 0xc4, 0xed, 0x19, 0xe8, 0x63]), (1,3))
test(result, count_twicel([0xbd, 0xbc, 0x6d, 0x60, 0x9b, 0x00, 0x9a, 0x32]), (2,4))
test(result, count_twicel([0x94, 0x97, 0x3f, 0xe3, 0xc7, 0x06, 0x15, 0xc0]), (2,2))
test(result, count_twicel([0x5f, 0x1d, 0x67, 0x16, 0xb8, 0xf7, 0x0a, 0x2a]), (2,2))
test(result, count_twicel([0xdf, 0xe6, 0xf9, 0x4f, 0x59, 0xe9, 0x1f, 0xee]), (3,0))
test(result, count_twicel([0x5a, 0x53, 0x9a, 0x9a, 0x73, 0xb4, 0x37, 0x07]), (3,2))
test(result, count_twicel([0xbd, 0x87, 0x7c, 0xe7, 0xc0, 0x37, 0x82, 0xda]), (2,3))
test(result, count_twicel([0x3d, 0xc0, 0x13, 0xac, 0x57, 0x3d, 0x15, 0x78]), (2,2))
test(result, count_twicel([0x63, 0x64, 0x54, 0x3a, 0x40, 0x28, 0x4e, 0x4e]), (0,3))
test(result, count_twicel([0xf6, 0x81, 0xc9, 0x15, 0x00, 0x4c, 0xa0, 0xa8]), (1,4))
test(result, count_twicel([0x19, 0x41, 0xdf, 0xf8, 0xe3, 0x74, 0x6b, 0x9b]), (4,2))
test(result, count_twicel([0xd5, 0x0b, 0xdd, 0x35, 0x3b, 0xd2, 0x0b, 0x6b]), (1,5))
test(result, count_twicel([0x08, 0xb7, 0x91, 0xf3, 0x6e, 0x3c, 0x74, 0xa0]), (0,0))
test(result, count_twicel([0xb8, 0xa8, 0xb4, 0xa6, 0x93, 0x2c, 0x94, 0x3f]), (0,0))
test(result, count_twicel([0x88, 0x22, 0x21, 0xee, 0xdc, 0x19, 0x43, 0x01]), (0,0))
test(result, count_twicel([0xe1, 0xee, 0x35, 0xbc, 0xfc, 0x00, 0x8e, 0xfe]), (0,0))
test(result, count_twicel([0x3c, 0x42, 0x63, 0x5f, 0x27, 0x47, 0x07, 0x90]), (0,0))

print("Success:" + str(result[0]) + ", Fail:" + str(result[1]))

2017/01/26 Changement

J'ai un peu raccourci le code.

Recommended Posts

Réponse à "Comment écrire le problème F02 en temps réel hors ligne"
Réponse à "Comment écrire un problème F01 en temps réel hors ligne"
Réponse au "Problème d'écriture en temps réel hors ligne E13"
Réponse à "Comment écrire le problème F04 en temps réel hors ligne"
Réponse à "Comment écrire le problème F05 en temps réel hors ligne"
Réponse à "Comment écrire un problème E12 en temps réel hors ligne"
Le 15e comment écrire un problème de référence en temps réel hors ligne en Python
Comment écrire un exemple d'implémentation Python du problème E15 en temps réel hors ligne
Le 14ème problème de référence d'écriture en temps réel hors ligne en python
Le 18ème comment écrire un problème de référence en temps réel hors ligne en Python
Le 16ème problème d'écriture en temps réel hors ligne a été résolu avec Python
17ème problème de référence d'écriture en temps réel hors ligne implémenté en Python
Le 19ème comment écrire un problème de référence en temps réel hors ligne à résoudre avec Python
Le 15e problème d'écriture en temps réel hors ligne a été résolu avec python
20e Comment écrire des problèmes en temps réel hors ligne en Python
Comment écrire hors ligne en temps réel Résolution des problèmes E05 avec Python
Le 15e temps réel hors ligne, j'ai essayé de résoudre le problème de l'écriture avec python
Comment écrire un exemple d'implémentation E11 Ruby et Python en temps réel hors ligne
Comment écrire hors ligne en temps réel Résolution des problèmes F01 avec Python
J'ai essayé de résoudre le problème de F02 comment écrire en temps réel hors ligne avec Python
Partie 1 J'ai écrit la réponse au problème de référence de l'écriture hors ligne en temps réel en Python
XPath Basics (2) - Comment écrire XPath
Partie 1 J'ai écrit un exemple de la réponse au problème de référence de l'écriture hors ligne en temps réel en Python
13th Offline en temps réel Comment résoudre les problèmes d'écriture avec Python
Comment écrire sobrement avec des pandas
Réutilisation du flacon Comment écrire du HTML
Comment écrire une image de base Docker
Comment écrire un fichier wsgi.py indépendant de l'environnement Django1.9
Remarques sur la rédaction de requirements.txt
17e comment résoudre les problèmes d'écriture en temps réel hors ligne avec Python
Comment écrire en temps réel hors ligne Résolution des problèmes E04 avec Python
Réponse au problème de la surutilisation de la mémoire Splash (brouillon)
Qiita (1) Comment écrire un nom de code
Comment définir optuna (comment écrire un espace de recherche)
Comment écrire des commentaires de document Python (Docstrings)
Comment écrire hors ligne en temps réel J'ai essayé de résoudre E11 avec python
Comment écrire ce processus en Perl?
Comment lire les données de problème avec Paiza
Comment écrire Ruby to_s en Python
Résumé de l'écriture d'AWS Lambda
Comment écrire des commentaires pydoc et multi-lignes
Comment écrire en temps réel hors ligne J'ai essayé de résoudre E12 avec python
Comment écrire un test unitaire pour l'extraction d'URL dans GAE / P
Le 18ème problème d'écriture en temps réel hors ligne en Python
Comment écrire un document tuple nommé en 2020
[Go] Comment écrire ou appeler une fonction
Le 19ème problème d'écriture en temps réel hors ligne en Python
Comment écrire une instruction de cas bash ShellScript
Comment écrire une interface graphique à l'aide de la commande maya
[Python] Essayez de lire la bonne réponse au problème FizzBuzz
Comment écrire une concaténation de chaînes sur plusieurs lignes en Python
Comment écrire un type liste / dictionnaire de Python3
[Python] Comment écrire une docstring conforme à PEP8
Le 14ème problème de référence d'écriture en temps réel hors ligne avec Python
Comment écrire plus rapidement en utilisant numpy comme deque
Comparez comment écrire le traitement des listes par langue
[Introduction à Python] Comment écrire des instructions répétitives à l'aide d'instructions for