[PYTHON] "Wie man Fukashigi zählt"

Die Stelle, an der Sie das Quadrat $ n \ times n $ einmal in ["Wie man flauschig zählt"] passiert haben (http://www.miraikan.jst.go.jp/sp/medialab/11.html) Das Problem, die Kombinationen von Routen zu zählen, die sich von links oben nach rechts unten bewegen, um nicht durchzugehen. Ich habe den grundlegendsten Prozess dieses selbstvermeidenden Spaziergangs erstellt, dh den Prozess des Zählens aller Kombinationen im Ausdruck einer Schwester mit Python.

Ich habe es jedoch gerade erstellt, und wie Sie im Video sehen können, nimmt die Anzahl der Kombinationen mit zunehmender Anzahl der Quadrate zu, sodass dieses Skript für eine angemessene Verwendung überhaupt nicht praktikabel ist (Graphillion). Verwenden Sie //github.com/takemaru/graphillion/wiki) usw.).

Skript

def saw(n, path):
    if -1 in path[-1] \
     or n in path[-1] \
     or path[-1] in path[:-2] : return 0 

    if path[-1]==(n-1,n-1) : return 1

    return saw(n,path+[(path[-1][0]+1, path[-1][1]+0)]) \
         + saw(n,path+[(path[-1][0]-1, path[-1][1]+0)]) \
         + saw(n,path+[(path[-1][0]+0, path[-1][1]+1)]) \
         + saw(n,path+[(path[-1][0]+0, path[-1][1]-1)]) 

n = 5
print(saw(n,[(0,0)]))

Ausgabeergebnis

8512

Die Funktion "Säge" (selbstvermeidendes Gehen) erhält die Anzahl der vertikalen oder horizontalen Knoten (* Anzahl der Quadrate + 1 ) und die Koordinaten des Startpunkts. Die Startpunktkoordinaten werden in Form einer " Liste einschließlich Tapples von Startpunktkoordinaten *" angegeben.

Der Inhalt der Sägefunktion ist

Infolgedessen wird "saw" rekursiv wiedergegeben, während die Koordinaten mit den letzten um eins vertikal und horizontal verschobenen Koordinaten addiert werden, und die zurückgegebenen numerischen Werte werden summiert. Mit anderen Worten wird die Gesamtzahl der Routen berechnet, die das Ziel erreicht und "1" zurückgegeben haben.

Recommended Posts

"Wie man Fukashigi zählt"
Verwendung von xml.etree.ElementTree
Wie benutzt man Python-Shell
Hinweise zur Verwendung von tf.data
Verwendung von virtualenv
Schaben 2 Wie man kratzt
Wie benutzt man Seaboan?
Verwendung von Image-Match
Wie man Shogun benutzt
So installieren Sie Python
Wie man PyPI liest
So installieren Sie pip
Verwendung von Virtualenv
Verwendung von numpy.vectorize
So aktualisieren Sie easy_install
So installieren Sie archlinux
Verwendung von pytest_report_header
Wie man Gunicorn neu startet
Wie zum virtuellen Host
Wie man Selen debuggt
Wie man teilweise verwendet
Wie man Bio.Phylo benutzt
Wie man JSON liest
Verwendung von SymPy
Wie man x-means benutzt
Verwendung von WikiExtractor.py
So aktualisieren Sie Spyder
So installieren Sie BayesOpt
Verwendung von virtualenv
Wie benutzt man Matplotlib?
Verwendung von iptables
Wie benutzt man numpy?
Verwendung von TokyoTechFes2015
Wie benutzt man venv
Wie benutzt man Pyenv?
Verwendung der Liste []
Wie man Python-Kabusapi benutzt
So installieren Sie Nbextensions
Verwendung von OptParse
So zählen Sie Zahlen in einem bestimmten Bereich
Verwendung von return
So installieren Sie Prover9
So bedienen Sie NumPy
Wie man Imutils benutzt
So schätzen Sie die Kerneldichte
Verwendung von Qt Designer
[IPython] Freigeben eines IPython-Notizbuchs
So installieren Sie Python [Windows]
Verwendung der Suche sortiert
python3: Verwendung der Flasche (2)
Verstehen Sie, wie man Django-Filter verwendet
XPath-Grundlagen (2) - So schreiben Sie XPath
Verwendung des Generators
So installieren Sie Tabpy 1.0 (Version 2020-01)
So ändern Sie das Layout von Jupyter
So rufen Sie eine Funktion auf
So aktualisieren Sie Pythons Tkinter auf 8.6