[PYTHON] Ich habe das tiefste Problem von Hiroshi Yuki gelöst.

Ich habe das tiefste Problem von Hiroshi Yuki gelöst.

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

Bewertung 5 Abzeichen Kitakore!

https://codeiq.jp/achievement/34

Wie löst man

・ Es war kein Problem, den kürzesten Weg zu finden ・ Aufgrund der Art des Problems, mit WebAPI nach dem nächsten Direktflug zu suchen, gehen wir davon aus, dass eine große Anzahl von Zweigen lauert, und führen den folgenden Schnitt durch.

Was ich getan habe war wirklich einfach.

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

Ich habe das tiefste Problem von Hiroshi Yuki gelöst.
Ich habe versucht, das Lachproblem mit Keras zu erkennen.
Ich habe den Mechanismus der Flaschenanmeldung untersucht!
Illustration der Ergebnisse des Rucksackproblems
Ich habe den Inhalt des Docker-Volumes überprüft
Ich habe den asynchronen Server von Django 3.0 ausprobiert
Ich habe die Optionen von copyMakeBorder von OpenCV überprüft
Die Ordnerstruktur von Flask ist zusammengefasst
Ich kannte die Grundlagen von Python nicht
Python: Ich habe das Problem des Handlungsreisenden ausprobiert
Die Python-Projektvorlage, an die ich denke.
Ich habe die Pivot-Table-Funktion von Pandas ausprobiert
Ich habe die Implementierung von range gelesen (Objects / rangeobject.c)
2016 Todai Mathematik mit Python gelöst
Ich habe die Liste der Tastenkombinationen von Jupyter überprüft
Ich habe versucht, die Trapezform des Bildes zu korrigieren
Probieren Sie Progate Free Edition [Python I]
Ich habe die Sitzungsaufbewahrungsdauer von Django überprüft
Ich habe die Verarbeitungsgeschwindigkeit der numpy eindimensionalisierung überprüft
[Bei Coder] Lösen Sie das Problem der Dichotomie
Ich habe einige der neuen Funktionen von Python 3.8 touched angesprochen
Ich habe die Varianten von UKR gelesen und implementiert
Ich möchte das Erscheinungsbild von zabbix anpassen
Ich habe versucht, den Bildfilter von OpenCV zu verwenden
Ich habe versucht, das Problem des Handlungsreisenden umzusetzen
Ich habe versucht, die Texte von Hinatazaka 46 zu vektorisieren!
Das Problem, dass MacVim, das von Homebrew installiert wurde, nicht von Python of Pyenv erstellt wurde, wurde behoben
[Wahrscheinlichkeit] Ich werde erklären, weil das Roboterproblem von Center 2020 Mathematics 1 ・ A interessant war.
Ich habe das TensorFlow-Tutorial mit Kommentaren ausgeführt (erstes neuronales Netzwerk: Beginn des Klassifizierungsproblems)
Beim 15. Offline-Echtzeitversuch habe ich versucht, das Problem des Schreibens mit Python zu lösen
[Rezept des Trainers] Ich habe die Flasche des Python-Frameworks berührt.
Ich habe versucht, die Grundform von GPLVM zusammenzufassen
Ich habe das MNIST-Tutorial von tensorflow für Anfänger ausprobiert.
Ich verfolgte die Implementierung des Befehls du (erste Hälfte)
Ich verglich die Identität der Bilder nach Hu Moment
Vielleicht habe ich die Auswirkungen von Shell Shock auf CGI überschätzt
Ich habe die Ausgabespezifikationen von Bidirectional LSTM von PyTorch überprüft
Ich habe mir die Versionen von Blender und Python angesehen
Ich möchte die Grundlagen von Bokeh vollständig verstehen
Die Leistung von PHP war besser als ich erwartet hatte
Ich habe das Argument class_weight von Chainers Funktion softmax_cross_entropy untersucht.
Ich habe die Leistung von 1 Million Dokumenten mit mongoDB gemessen
Ich habe das Standardbetriebssystem und die Shell der Docker-Maschine überprüft
Ich verfolgte die Implementierung des Befehls du (zweite Hälfte)
Ich habe versucht, die API von Sakenowa Data Project zu verwenden
Ich habe versucht, die Spacha-Informationen von VTuber zu visualisieren
Ich habe versucht, den negativen Teil von Meros zu löschen
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Ich habe versucht, die Werbung für die Raubkopien-Website zu kratzen
Zip 4 Gbyte Problem ist eine Geschichte der Vergangenheit
Ich untersuchte den stärkenden Lernalgorithmus des Algorithmushandels
Ich habe die einfachste Methode zur Klassifizierung von Dokumenten mit mehreren Etiketten ausprobiert
Animieren Sie die Grundlagen der dynamischen Planung und Rucksackprobleme
Ich habe versucht, die Stimmen der Sprecher zu klassifizieren
Ich möchte die Sicherheit der SSH-Verbindung erhöhen
Ich habe nach dem Inhalt von CloudWatch Logs Agent gesucht
Ich habe versucht, den Beispielcode des Ansible-Moduls auszuführen