13th Offline en temps réel Comment résoudre les problèmes d'écriture avec Python

Le problème est le suivant 13e problème d'écriture en temps réel hors ligne de Qiita Je l'ai résolu avec Python. J'ai vu un problème le matin et je me suis demandé s'il serait bon pendant le travail. La mise en œuvre prend environ 1 heure.

doukaku_13.py


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

def create_aquarium(input):
    #0 est un espace vide,1 est un carré avec une pile
    aquarium = []
    for num in input:
        brick_line = [0 for i in range(9)]
        for i in range(int(num)):
            brick_line[8 - i] = 1
        aquarium.append(brick_line)
    aquarium.append([0 for i in range(9)])
    aquarium.insert(0, [0 for i in range(9)])
    return aquarium

def fill_air(aquarium):
    #Recherche de priorité de largeur
    def fill(y, x):
        aquarium[y][x] = 2
        try:
            if aquarium[y + 1][x] == 0: fills.append((y + 1, x))
        except: pass
        try:
            if aquarium[y - 1][x] == 0: fills.append((y - 1, x))
        except: pass
        try:
            if aquarium[y][x - 1] == 0: fills.append((y, x - 1))
        except: pass

    fills = []
    #installer
    for i in range(len(aquarium)):
        if aquarium[i][8] == 0:
            fills.append((i, 8))

    for y, x in fills:
        fill(y, x)

    return aquarium

def count_water(aquarium):
    return sum([line.count(0) for line in aquarium])

def test(input, answer):
    aquarium = fill_air(create_aquarium(input))
    my_answer = str(count_water(aquarium))
    if my_answer == answer:
        return True
    else:
        print "answer is %s but my answer is %s" % (answer, my_answer)



if __name__ == "__main__":
    test( "83141310145169154671122", "24" )
    test( "923111128", "45" )
    test( "923101128", "1" )
    test( "903111128", "9" )
    test( "3", "0" )
    test( "31", "0" )
    test( "412", "1" )
    test( "3124", "3" )
    test( "11111", "0" )
    test( "222111", "0" )
    test( "335544", "0" )
    test( "1223455321", "0" )
    test( "000", "0" )
    test( "000100020003121", "1" )
    test( "1213141516171819181716151413121", "56" )
    test( "712131415161718191817161514131216", "117" )
    test( "712131405161718191817161514031216", "64" )
    test( "03205301204342100", "1" )
    test( "0912830485711120342", "18" )
    test( "1113241120998943327631001", "20" )
    test( "7688167781598943035023813337019904732", "41" )
    test( "2032075902729233234129146823006063388", "79" )
    test( "8323636570846582397534533", "44" )
    test( "2142555257761672319599209190604843", "41" )
    test( "06424633785085474133925235", "51" )
    test( "503144400846933212134", "21" )
    test( "1204706243676306476295999864", "21" )
    test( "050527640248767717738306306596466224", "29" )
    test( "5926294098216193922825", "65" )
    test( "655589141599534035", "29" )
    test( "7411279689677738", "34" )
    test( "268131111165754619136819109839402", "102" )

Plutôt que de chercher un carré qui recueille de l'eau, je l'ai résolu comme si je cherchais un carré qui ne recueille pas d'eau. Recherchez du bas vers le haut du champ, et lorsque vous avez terminé la recherche vers le haut, l'eau s'accumule dans les cases non recherchées.

Recommended Posts

13th Offline en temps réel Comment résoudre les problèmes d'écriture avec Python
Comment écrire en temps réel hors ligne Résolution des problèmes E04 avec Python
Le 18ème problème d'écriture en temps réel hors ligne en Python
Le 14ème problème de référence d'écriture en temps réel hors ligne en python
Le 19ème problème 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
17ème problème de référence d'écriture en temps réel hors ligne implémenté en Python
Le 16ème comment écrire un problème de référence en temps réel hors ligne à résoudre avec Python
Le 19ème comment écrire un problème de référence en temps réel hors ligne à résoudre avec 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 hors ligne en temps réel Résolution des problèmes F01 avec Python
Le 16ème problème d'écriture en temps réel hors ligne a été résolu avec Python
Le 15e problème d'écriture en temps réel hors ligne a été résolu avec python
Résoudre les problèmes d'optimisation avec Python
Comment développer en Python
[Python] Comment faire PCA avec Python
Comment écrire un exemple d'implémentation E14 Python en temps réel hors ligne
Comment collecter des images en Python
Comment utiliser Mysql avec python
Comment envelopper C en Python
Comment utiliser ChemSpider en Python
Comment utiliser PubChem avec Python
Comment gérer le japonais avec Python
Comment écrire un exemple d'implémentation E11 Ruby et Python en temps réel hors ligne
Le 10ème problème de référence d'écriture en temps réel hors ligne. Exemple d'implémentation par Python.
Comment écrire un exemple d'implémentation Python du problème E15 en temps réel hors ligne
Le 11ème problème de référence d'écriture en temps réel hors ligne. Exemple d'implémentation par python.
[Introduction à Python] Comment utiliser la classe en Python?
Réponse à "Comment écrire le problème F04 en temps réel hors ligne"
Comment définir dynamiquement des variables en Python
Comment faire R chartr () en Python
Réponse à "Comment écrire le problème F05 en temps réel hors ligne"
[Itertools.permutations] Comment créer une séquence en Python
Comment obtenir stacktrace en python
Comment afficher la table quatre-vingt-dix-neuf en python
Comment extraire une zone de polygone en Python
Réponse à "Comment écrire un problème E12 en temps réel hors ligne"
Comment vérifier la version d'opencv avec python
Je voulais résoudre ABC159 avec Python
Comment changer de version de Python dans cloud9
Comment utiliser __slots__ dans la classe Python
Comment remplir dynamiquement des zéros avec Python
Comment utiliser les expressions régulières en Python
Comment afficher Hello World en python
Comment utiliser is et == en Python
Comment écrire Ruby to_s en Python
Comment écrire hors ligne en temps réel J'ai essayé de résoudre E11 avec python
Comment écrire en temps réel hors ligne J'ai essayé de résoudre E12 avec python
Comment utiliser la bibliothèque C en Python
Comment recevoir des arguments de ligne de commande en Python
[REAPER] Comment jouer à Reascript avec Python
Comment effacer un taple dans une liste (Python)
Comment générer une séquence en Python et C ++
Comment incorporer des variables dans des chaînes python
Comment utiliser la bibliothèque d'images Python dans la série python3
Comment créer un fichier JSON en Python
Réponse à "Comment écrire le problème F02 en temps réel hors ligne"
Résumé de l'utilisation de MNIST avec Python