[PYTHON] J'ai résolu le problème le plus profond d'Hiroshi Yuki.

J'ai résolu le problème le plus profond d'Hiroshi Yuki.

https://codeiq.jp/ace/yuki_hiroshi/q411

Évaluation 5 Badge Kitakore!

https://codeiq.jp/achievement/34

Comment résoudre

・ Ce n'était pas un problème pour trouver l'itinéraire le plus court ・ En raison de la nature du problème de recherche du prochain vol direct à l'aide de WebAPI, nous prévoyons qu'un grand nombre de branches se cachent et effectuons la taille suivante.

Ce que j'ai fait était vraiment simple.

code

star-flight.py


'''
Created on 2013/07/31

@author: nubilum
'''
import urllib2
import time
import os.path

limit   = 5
start   = 5426528869786
deep    = 4363616111476
deeper  = 5092488161056
deepest = 8838746292440
goal_points  = [start, deep, deeper, deepest]
cache_path   = 'cache.txt'
cache = {}
already = {}

def search(start, goal):
    global cache
    global already
    load_cache()
    now = start
    queue = []
    idx = 0
    counter = 0
    queue.append([[start]])
    while True:
        current = []
        routes_list = queue[idx]
        for routes in routes_list:
            print routes
            last = routes[-1]
            if last in cache:
                pathes = cache[last]
                for path in pathes:
                    if path == 0:
                        break
                    if path in already:
                        continue
                    already[path] = 1
                    next = routes[:]
                    next.append(path)
                    current.append(next)
                    if path == goal:
                        return next
            else:
                next_pathes = []
                for i in xrange(0, 100):
                    response = get_response(last, i)
                    counter += 1
                    if response == 0:
                        break
                    if response in already:
                        continue
                    already[response] = 1
                    next_pathes.append(response)
                    next = routes[:]
                    next.append(response)
                    current.append(next)
                    if response == goal:
                        return next
                    if counter % limit == 0:
                        time.sleep(0.1)
                write_cache(last, next_pathes)
        now = next
        queue.append(current)
        idx += 1

def write_cache(start, path):
    global cache_path
    f = open(cache_path, "a")
    f.write(str(start) + ":" + ','.join([ str(p) for p in path ]) + "\n")
    f.close()

def load_cache():
    global cache
    global cache_path
    if os.path.exists(cache_path) ==False:
        return
    f = open(cache_path, "r")
    data = f.read()
    f.close()
    for line in data.split('\n'):
        if line == '': continue
        start, path  = line.split(':')
        cache[int(start)] = [int(p) if len(p) > 0 else 0 for p in path.split(',')]

def get_response(id, nth):
    response = urllib2.urlopen('http://133.242.134.37/deepest.cgi?id=%d&nth=%d' % (id, nth))
    return int(response.read().rstrip('rn'))

def main():
    global goal_points
    result = []
    for i in xrange(0, len(goal_points) - 1):
        answer_routes = search(goal_points[i], goal_points[i + 1])
        print "answer:", answer_routes
        for point in answer_routes:
            result.append(point)
    print ",".join([str(p) for p in result])
    print "ENV: Python"

if __name__ == '__main__':
    main()

Recommended Posts

J'ai résolu le problème le plus profond d'Hiroshi Yuki.
J'ai essayé la reconnaissance faciale du problème du rire en utilisant Keras.
J'ai étudié le mécanisme de connexion flask!
Illustration des résultats du problème du sac à dos
J'ai vérifié le contenu du volume du docker
J'ai essayé le serveur asynchrone de Django 3.0
J'ai vérifié les options de copyMakeBorder d'OpenCV
La structure des dossiers de Flask est résumée
Je ne connaissais pas les bases de Python
Python: j'ai essayé le problème du voyageur de commerce
Le modèle de projet Python auquel je pense.
J'ai essayé la fonction de tableau croisé dynamique des pandas
J'ai lu l'implémentation de range (Objects / rangeobject.c)
Mathématiques Todai 2016 résolues avec Python
J'ai vérifié la liste des touches de raccourci de Jupyter
J'ai essayé de corriger la forme trapézoïdale de l'image
Essayez Progate Free Edition [Python I]
J'ai vérifié la période de rétention de session de django
J'ai vérifié la vitesse de traitement de la numpy unidimensionnelle
[Chez Coder] Résoudre le problème de la dichotomie
J'ai touché certaines des nouvelles fonctionnalités de Python 3.8 ①
J'ai lu et implémenté les variantes de UKR
Je souhaite personnaliser l'apparence de zabbix
J'ai essayé d'utiliser le filtre d'image d'OpenCV
J'ai essayé de mettre en œuvre le problème du voyageur de commerce
J'ai essayé de vectoriser les paroles de Hinatazaka 46!
Résolution du problème selon lequel MacVim installé par Homebrew n'a pas été construit par python de pyenv
[Probabilité] Je vais expliquer parce que le problème du robot de Center 2020 Mathematics 1 · A était intéressant.
J'ai couru le tutoriel TensorFlow avec des commentaires (premier réseau de neurones: le début du problème de classification)
Le 15e temps réel hors ligne, j'ai essayé de résoudre le problème de l'écriture avec python
[Recette du formateur] J'ai touché le flacon du framework Python.
J'ai essayé de résumer la forme de base de GPLVM
J'ai essayé le tutoriel MNIST de tensorflow pour les débutants.
J'ai suivi la mise en place de la commande du (première moitié)
J'ai comparé l'identité des images par moment Hu
Peut-être ai-je surestimé l'impact de Shell Shock sur CGI
J'ai vérifié les spécifications de sortie du LSTM bidirectionnel de PyTorch
J'ai vérifié les versions de Blender et Python
Je veux bien comprendre les bases de Bokeh
Les performances de PHP étaient meilleures que ce à quoi je m'attendais
J'ai examiné l'argument class_weight de la fonction softmax_cross_entropy de Chainer.
J'ai mesuré les performances d'un million de documents avec mongoDB
J'ai vérifié le système d'exploitation et le shell par défaut de docker-machine
J'ai suivi la mise en place de la commande du (seconde moitié)
J'ai essayé d'utiliser l'API de Sakenowa Data Project
J'ai essayé de visualiser les informations spacha de VTuber
J'ai essayé d'effacer la partie négative de Meros
J'ai essayé de résoudre le problème avec Python Vol.1
J'ai essayé de gratter la publicité du site de dessin animé piraté
Le problème Zip 4 Gbyte est une histoire du passé
J'ai étudié l'algorithme d'apprentissage de renforcement du trading d'algorithmes
J'ai essayé la méthode la plus simple de classification de documents multi-étiquettes
Animer les bases de la planification dynamique et des problèmes de sac à dos
J'ai essayé de classer les voix des acteurs de la voix
Je souhaite augmenter la sécurité de la connexion SSH
J'ai recherché le contenu de l'agent CloudWatch Logs
J'ai essayé d'exécuter l'exemple de code du module Ansible